You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@ws.apache.org by Mike Spreitzer <ms...@us.ibm.com> on 2001/01/08 06:39:11 UTC

Every SOAP call half fails with "connection reset by peer" using IBM SOAP 1.2, Tomcat 3.2[.1], IBM JDK 1.3, RedHat Linux 6.2

I have a SOAP application that I developed on one platform.  It works 
there.  When I try it on a different platform, every SOAP call partially 
fails with "[SOAPException: faultCode=SOAP-ENV:Protocol; msg=Connection 
reset by peer: Connection reset by peer; 
targetException=java.net.SocketException: Connection reset by peer: 
Connection reset by peer]" --- even attempts to use the 
ServiceManagerClient.  Has anyone seen anything like this?  Is there a 
searchable archive that goes back beyond December 2000?

Should I expect this is fixed in Apache SOAP 2.0?  The "what's changed" 
page for Apache SOAP 2.0 doesn't seem to mention anything like this.

My application uses IBM SOAP 1.2 and Tomcat 3.2.1 in standalone mode; I 
had the same experience using Tomcat 3.2.  The SOAP client is a servlet in 
one Tomcat instance; the SOAP server is running in a different Tomcat 
instance on the same machine.

The working platform is AIX 4.3.3 on an R/S 6000, with this JDK:
$ java -version
java version "1.3.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0)
Classic VM (build 1.3.0, J2RE 1.3.0 IBM build ca130-20001124 (JIT enabled: 
jitc))

The failing platform is Red Hat Linux release 6.2 (Zoot), Kernel 
2.2.16-3.c4eb on an i686, with this JDK:
$ java -version
java version "1.3.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0)
Classic VM (build 1.3.0, J2RE 1.3.0 IBM build cx130-20000815 (JIT enabled: 
jitc))

On the failing platform, every SOAP call succeeds as far as the server is 
concerned, but fails as far as the client is concerned.  The server 
receives the call message, does its job, and sends the reply message --- 
all with no problem reported.  The client complains like this:
[SOAPException: faultCode=SOAP-ENV:Protocol; msg=Connection reset by peer: 
Connection reset by peer; targetException=java.net.SocketException: 
Connection reset by peer: Connection reset by peer]
[SOAPException: faultCode=SOAP-ENV:Protocol; msg=Connection reset by peer: 
Connection reset by peer; targetException=java.net.SocketException: 
Connection reset by peer: Connection reset by peer]
        at java.lang.Throwable.<init>(Throwable.java:96)
        at java.lang.Exception.<init>(Exception.java:44)
        at com.ibm.soap.SOAPException.<init>(SOAPException.java:14)
        at com.ibm.soap.SOAPException.<init>(SOAPException.java:20)
        at com.ibm.soap.rpc.Call.invoke(Call.java:130)

Using `tcpdump`, I can see that the server is indeed doing a TCP reset. It 
happens at the very end of the interaction, in response to the client's 
ACK of the reply message.

BTW, using a TcpTunnel, I can see that the reply message is well-formed. 
Indeed, when I put the TcpTunnel in place, the problem goes away --- the 
server doesn't RST the TcpTunnel (it does FIN instead)!

Here's an example `tcpdump` trace (the SOAP server is at port 8080, 
reported below as "webcache"):

17:58:31.015815   lo > myhost.1101 > myhost.webcache: S 
230857894:230857894(0) win 31072 <mss 3884,sackOK,timestamp 18965998 
0,nop,wscale 0> (DF)

17:58:31.015855   lo > myhost.webcache > myhost.1101: S 
231111200:231111200(0) ack 230857895 win 31072 <mss 3884,sackOK,timestamp 
18965998 18965998,nop,wscale 0> (DF)

17:58:31.015870   lo > myhost.1101 > myhost.webcache: . 1:1(0) ack 1 win 
31072 <nop,nop,timestamp 18965998 18965998> (DF)

17:58:31.017853   lo > myhost.1101 > myhost.webcache: P 1:3873(3872) ack 1 
win 31072 <nop,nop,timestamp 18965998 18965998> (DF)

17:58:31.017900   lo > myhost.webcache > myhost.1101: . 1:1(0) ack 3873 
win 27200 <nop,nop,timestamp 18965998 18965998> (DF)

17:58:31.017910   lo > myhost.1101 > myhost.webcache: P 3873:4194(321) ack 
1 win 31072 <nop,nop,timestamp 18965998 18965998> (DF)

17:58:31.025121   lo > myhost.webcache > myhost.1101: . 1:1(0) ack 4194 
win 27104 <nop,nop,timestamp 18965999 18965998> (DF)

17:58:31.114091   lo > myhost.webcache > myhost.1101: P 1:287(286) ack 
4194 win 27104 <nop,nop,timestamp 18966007 18965998> (DF)

17:58:31.114134   lo > myhost.1101 > myhost.webcache: . 4194:4194(0) ack 
287 win 30786 <nop,nop,timestamp 18966007 18966007> (DF)

17:58:31.114767   lo > myhost.webcache > myhost.1101: P 287:796(509) ack 
4194 win 27104 <nop,nop,timestamp 18966007 18966007> (DF)

17:58:31.115102   lo > myhost.1101 > myhost.webcache: . 4194:4194(0) ack 
796 win 30277 <nop,nop,timestamp 18966008 18966007> (DF)

17:58:31.115514   lo > myhost.webcache > myhost.1101: R 796:796(0) ack 
4194 win 30976 <nop,nop,timestamp 18966008 18966008> (DF)


Thanks for any help,
Mike