我有一堆在同一台机器上运行的Web服务服务器(大约200个),它们在不同的端口上公开相同的服务。
我有一个客户端执行任务,包括在不同的服务器上调用服务
类似的东西:
while (true) {
task = readTask();
runHelloService(task.serverAddress)
}
我想知道生成HelloService客户端代理的最佳方法是什么 我可以在每次通话前生成一个并替换目标地址吗? 我应该为每台服务器生成一个客户端(这意味着200个客户端代理)并使用相关的客户端吗? 我可能想在几个线程上同时运行上面的循环 目前我只有一个由spring和cxf生成的代理和jaxws:client声明。
答案 0 :(得分:0)
这是一个有趣的用例。我相信在多个线程之间共享代理时更改端点是行不通的。客户端代理和管道定义之间存在一对一的关系。 Changes to a conduit are explicitly not thread safe
我建议完全避免使用Spring配置来创建客户端代理,而是使用200个客户端代理的编程构造。
另请参阅Custom CXF Transport - 简化的客户端工作流程。