0

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

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

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

4

1 回答 1

0

这是一个有趣的用例。我相信在多个线程之间共享代理的同时更改端点是行不通的。客户端代理和管道定义之间存在一对一的关系。对管道的更改显然不是线程安全的

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

另请参阅自定义 CXF 传输简化客户端工作流程。

于 2014-09-21T03:52:28.420 回答