2

我使用 JAXWS 生成了一个 Web 服务客户端。我注意到在使用 JAXWS 客户端时,实例化Service*PortType类需要一些时间。因此,每次需要发出请求时都实例化Service和类并不是一个好主意。*PortType

  • Service将和*PortType类设置为对整个 Web 应用程序来说是全局的是否安全?它的优点和缺点是什么?
  • 请求/响应是否有可能切换到不同的请求/响应?
  • 当你在服务中调用一个方法时,它会创建一个新的连接吗?还是只是重用旧连接?
  • 如果它只是重​​用旧连接,那么可能存在一些线程问题,对吗?

同样给出代码,port.calculate(requestParam)其中端口是全局变量,如果多个线程同时调用该calculate()方法会发生什么?每个线程会为每个计算调用创建一个新线程吗?还是会等待每个呼叫完成后再进行下一个呼叫?来电将如何处理?我只是担心我可能会混淆一些请求和响应。

先谢谢了!

4

1 回答 1

1

你担心是对的。端口不是线程安全的,但是创建时间最长的服务是线程安全的。没有这方面的官方文档,但这里有说明在这个论坛帖子中,一个实验已经完成,显示同一端口上的多个请求会导致乱码请求。推荐的方法是创建一个服务和一个端口对象池,您可以从中签出以发出请求。另一种选择是使用 CXF,它确实使他们的客户端对象线程安全,并且在他们的文档中更明确地说明了如何跨线程共享。

于 2013-02-19T12:32:14.800 回答