繁体   English   中英

使用 Axis 重用 SOAP 客户端

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM