I'm trying to use HttpInvokerProxyFactoryBean + HttpClient to access a remote service from within a servlet running on Weblogic 10.3. I need to use SSL, and I am trying to use the "container default" SSL configuration (trust and identity from the webserver) when connecting to the remote service.
- This works fine when using the default ProtocolSocketFactory for HttpClient.
- This works fine when using a custom ProtocolSocketFactory (backed by the Sun JSSE default socket factory).
But
- when I use the "weblogic.security.SSL.SSLSocketFactory" instead of the default JSSE socket factory I get intermittent failures. After about 5 uses of the service (by different servlet handler threads), I start to see failures.
Q: Has anyone seen something like this?
Q: Any idea how to diagnose such a problem?
Q: I dont really know too much about the details of Http 1.1, and honestly I would rather not, but is it possible that the HttpInvokerProxyFactoryBean serializes some java objects that just happen to interfere with "chunking" in Http?
Code:org.springframework.remoting.RemoteAccessException: Cannot access HTTP invoker remote service at [https://server.internal:7002/app/service]; nested exception is java.net.SocketException: Software caused connection abort: recv failed at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.convertHttpInvokerAccessException(HttpInvokerClientInterceptor.java:196) at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:157) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy86.initialize(Unknown Source) at com.MyServlet.useRemoteService(MyServlet.java:1475) ... 33 more java.net.SocketException: Software caused connection abort: recv failed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at weblogic.utils.io.ChunkedInputStream.read(ChunkedInputStream.java:159) at java.io.InputStream.read(InputStream.java:89) at com.certicom.tls.record.ReadHandler.readFragment(Unknown Source) ... at com.certicom.io.InputSSLIOStreamWrapper.read(Unknown Source) at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at java.io.BufferedInputStream.read(BufferedInputStream.java:235) at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77)


Reply With Quote
