我正在使用 wsdl2java 生成的 Axis 2 (1.6.1) java 客户端。
它似乎工作正常,但有时我会收到以下错误:
14:38:04,855 信息 [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 客户端存根在多线程环境中可用?
谢谢