重用不同地址的jax-ws客户端代理

时间:2013-11-04 15:54:05

标签: spring web-services jax-ws cxf

我有一堆在同一台机器上运行的Web服务服务器(大约200个),它们在不同的端口上公开相同的服务。
我有一个客户端执行任务,包括在不同的服务器上调用服务 类似的东西:

while (true) {
    task = readTask();
    runHelloService(task.serverAddress)
}

我想知道生成HelloService客户端代理的最佳方法是什么 我可以在每次通话前生成一个并替换目标地址吗? 我应该为每台服务器生成一个客户端(这意味着200个客户端代理)并使用相关的客户端吗? 我可能想在几个线程上同时运行上面的循环 目前我只有一个由spring和cxf生成的代理和jaxws:client声明。

1 个答案:

答案 0 :(得分:0)

这是一个有趣的用例。我相信在多个线程之间共享代理时更改端点是行不通的。客户端代理和管道定义之间存在一对一的关系。 Changes to a conduit are explicitly not thread safe

我建议完全避免使用Spring配置来创建客户端代理,而是使用200个客户端代理的编程构造。

另请参阅Custom CXF Transport - 简化的客户端工作流程