使用Axis重用SOAP客户端

时间:2012-11-09 19:46:16

标签: java soap axis

我正在使用Apache Axis向服务发出SOAP请求。我注意到有时候,即使服务现在是一个简单的回声,也需要几秒钟的时间来获得响应。所以我想知道建立连接是否花费时间,即使服务器确实HTTP / 1.1连接保持活跃。

应该以某种方式在请求之间重用客户端,或者是否可以为每个请求获取一个新客户端?

这是我的代码。我应该在请求之间保留locator和/或client还是可以忘记它?

MyExampleServiceLocator locator = new MyExampleServiceLocator();
MyExampleServicePort client = locator.getMyExampleServicePort(url);
MyExampleRequest request = buildMyExampleRequest();
MyExampleResponse response = client.send(request);   // This takes time sometimes

1 个答案:

答案 0 :(得分:3)

  • 对于复杂服务,实例化定位器的成本可能很高。因此,您应该尽可能地尝试重复使用它。定位器应该是线程安全的,因此您可以将它们用作单例。但请注意,在Axis 1.4中,至少存在一个与定位器相关的线程安全问题:AXIS-2498
  • 创建新存根(客户端)的成本较低,但重用存根是没有问题的。它们也应该是线程安全的(至少在Axis 1.4中),除了以有状态方式使用存根的场景(例如HTTP会话)。
  • Axis的默认HTTP传输仅支持HTTP 1.0,并为每个请求创建一个新连接。