对该问题进行了两次讨论,但是我找不到能够解决问题的解决方案。
我们具有以下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/