【问题标题】:Unable to sendViaPost - on Axis2 client stub无法发送ViaPost - 在 Axis2 客户端存根上
【发布时间】:2012-06-28 15:44:53
【问题描述】:

我正在使用 wsdl2java 生成的 Axis 2 (1.6.1) java 客户端。

它似乎工作正常,但有时我会收到以下错误:

14:38:04,855 INFO [HTTPSender] 无法将ViaPost 发送到 url[...]

java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at com.sun.net.ssl.internal.ssl.InputRecord.readFully(InputRecord.java:293)
at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:331)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:798)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:755)
at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)

我想知道这是否可能是一个多线程问题,并希望得到一些关于此事的答案。 我使用缓存 HttpClient 的存根。 HttpClient 使用 MultiThreadedHttpConnectionManager,我将 setDefaultMaxConnectionsPerHost 设置为 20。

我了解 HttpClient 凭借关联的 MultiThreadedHttpConnectionManager 将是线程安全的。 问题是 Axis2 存根会发生什么?存根也是线程安全的吗?

我看过一些帖子,其中指出 Axis 存根在设计上不是线程安全的。 如果是这样,使用多线程 HttpClient 有什么好处? 如何确保 Axis 客户端存根在多线程环境中可用?

谢谢

【问题讨论】:

    标签: multithreading axis2 stub


    【解决方案1】:

    “连接重置”错误意味着服务器意外关闭了连接。当您收到该错误时,问题出在远程服务器上,而不是您的客户端。

    MultiThreadedHttpConnectionManager 是用于 HTTP 连接的多线程安全缓存。多个线程可以从缓存中获取连接或将它们返回到缓存,而缓存不会成为瓶颈。单个 HttpClient 或拥有 HttpClient 的存根一次只能由一个线程使用。 HttpClient 拥有与远程服务器的实际 TCP 连接,并且该连接一次仅支持一个正在进行的请求。

    【讨论】:

    • 感谢您的回复。如果客户男女同校没有问题,我想这会让我松一口气。
    • 假设存根不是线程安全的,我真的有三个选择:1. 每次发出请求时创建/销毁存根 2. 使用 ThreadLocal 存根或 3. 同步对共享的访问存根的实例(或实例池)。 ThreadLocal 选项对 CPU 的影响最小,但可能会显着增加具有大型线程池的服务器上的内存占用。另外两个将内存占用保持在最低限度,但需要显着(?)更多的 CPU。根据您的经验,您会推荐一种方法吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多