Spring HttpInvoker:如何在运行时替换serviceUrl?

时间:2012-04-17 04:28:34

标签: java spring remoting

这个问题经过多次讨论,但我无法找到解决问题的解决方案。     我们有以下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感知的 任何帮助将不胜感激。

祝你好运, 迈克尔

1 个答案:

答案 0 :(得分:0)

我不完全清楚如何根据您的http请求获取正确的DBService,所以我想您知道如何做到这一点。所以你可以做到以下几点:

  1. 编写一个过滤器,用于获取正确的DBService并将其置于TLS上。
  2. DBService上的ExampleHttpInvoker替换为DBServiceWrapper(您的班级)从TLS获取正确的DBService并调用正确的方法。
  3. 请求完成后,请不要忘记清除过滤器中的TLS。