Hi everyone,

occasionally, when processing a client request takes too long time, the client 
runs into a timeout condition and closes the connection. When the Axis2 web 
service later tries to send the request response, the following kind of 
exception occurs on the server:

09:03:50,932 ERROR [AxisEngine]
org.apache.axis2.AxisFault
      at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
      at 
org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:83)
      at 
org.apache.axis2.transport.http.CommonsHTTPTransportSender.sendUsingOutputStream(CommonsHTTPTransportSender.java:358)

[snip]

      at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
      at java.lang.Thread.run(Thread.java:619)
Caused by: com.ctc.wstx.exc.WstxIOException: null
      at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:313)
      at 
org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:168)
      at 
org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeImpl.java:487)
      at 
org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:79)
      ... 30 more
Caused by: ClientAbortException:  java.net.SocketException: Software caused 
connection abort: socket write error
      at 
org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:348)
      at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:314)
      at 
org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:98)
      at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:124)
      at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:99)
      at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:214)
      at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:311)
      ... 33 more
Caused by: java.net.SocketException: Software caused connection abort: socket 
write error
      at java.net.SocketOutputStream.socketWrite0(Native Method)
      at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
      at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
      at 
org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:724)
      at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:449)
      at 
org.apache.coyote.http11.InternalOutputBuffer.flush(InternalOutputBuffer.java:299)
      at 
org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:950)
      at org.apache.coyote.Response.action(Response.java:186)
      at 
org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:343)
      ... 39 more


Unfortunately, this kind of exception does not provide any information about 
which request was unable to complete in time.

In our web service we have some further information like a Request Context 
which has info about request type, user, a context-Id, ip-address, etc., and we 
would like to have that info printed somewhere in the logs so that we can 
identify the requests or circumstances under which the service is prone to run 
out of time. Now, that exception occurs about at the end of processing, at 
least, beyond our web service implementation code, and also outside the 
compiled Axis2-generated stub classes.

Is there an option of registering a particular handler that could print some 
more log information at that very late point in processing? I have looked 
through axis2.xml and into the phase definitions but I don't have an idea where 
to add a handler or if this is possible at all.

I would appreciate any feedback and thoughts on this.

We are currently using Axis2 1.5.1 (Java) deployed in a JBoss 5.1.0 under 
Windows 7 (but I don't think this matters).

Thanks,
-Rainer









Reply via email to