对该问题进行了两次讨论,但是我找不到能够解决问题的解决方案。
    我们具有以下HttpInvoker服务,该服务从数据库获取远程URL:



@Service("exampleService")
public class ExampleHttpInvoker extends HttpInvokerProxyFactoryBean {

    @Resource
    private DBService service;

    @PostConstruct
    public void init() throws ConfigurationException {

       String url = service.getURL();
       this.setServiceUrl(url);
       this.setServiceInterface(RemoteInterface.class);
       this.setHttpInvokerRequestExecutor(new CommonsHttpInvokerRequestExecutor());
            afterPropertiesSet();

     }

   }


可以在远程呼叫之间更改URL。
如何在运行时替换serviceUrl?
由于该服务不支持Web,因此我们无法使用Session或Request范围。
任何帮助将不胜感激。

最好的祝福,
麦可

最佳答案

对我来说,这还不是很清楚,如何根据您的http请求获得正确的DBService,所以我想您知道如何做到这一点。因此,您可以执行以下操作:


编写一个过滤器,以获取正确的DBService并将其放在TLS上。
DBService上的ExampleHttpInvoker替换为DBServiceWrapper(您的类),该类可从TLS获取正确的DBService并调用适当的方法。
完成请求后,请不要忘记清除过滤器中的TLS。

关于java - Spring HttpInvoker:如何在运行时替换serviceUrl?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10185051/

10-10 14:22