Hello all,

After a lot of mailing lists/doc/source reading and many tests I can't figure 
out how to implement Axis2 client, which uses REUSE_HTTP_CLIENT and 
AUTO_RELEASE_CONNECTION.
I'm always getting following Exception "org.apache.axis2.AxisFault: Attempted 
read on closed stream."

Here is my simple test case and Exception below. I'm building with Axis2 1.4 
and Axis2 1.4.1 - no difference.

==========================================================
MultiThreadedHttpConnectionManager connectionManager = new 
MultiThreadedHttpConnectionManager();
HttpConnectionManagerParams connectionManagerParams = new 
HttpConnectionManagerParams();
connectionManagerParams.setDefaultMaxConnectionsPerHost(2);
connectionManagerParams.setTcpNoDelay(true);
connectionManagerParams.setStaleCheckingEnabled(true);
connectionManagerParams.setLinger(0);
connectionManager.setParams(connectionManagerParams);
MyHttpClient httpClient = new MyHttpClient(connectionManager);

ConfigurationContext configcontext = 
ConfigurationContextFactory.createDefaultConfigurationContext(); 
configcontext.setThreadPool(new ThreadPool(1, 3));
configcontext.setProperty(HTTPConstants.REUSE_HTTP_CLIENT,
Boolean.TRUE);
configcontext.setProperty(HTTPConstants.CACHED_HTTP_CLIENT,
httpClient);

RPCServiceClient sender = null;
sender = new RPCServiceClient(configcontext, null);

Options options = sender.getOptions();
options.setTo(targetEPR);
options.setTimeOutInMilliSeconds(TIMEOUT);
options.setProperty(HTTPConstants.CHUNKED, Boolean.TRUE);
options.setProperty(HTTPConstants.SO_TIMEOUT, TIMEOUT);
options.setProperty(HTTPConstants.CONNECTION_TIMEOUT, TIMEOUT);
options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Boolean.TRUE);

options.setProperty(HTTPConstants.AUTO_RELEASE_CONNECTION, Boolean.TRUE);

QName opName = new QName("http://um.axis2.es.iisd.com";, "login");
Object[] args = new Object[] { "*", "*" };
sender.invokeNonBlocking(opName, args, callback);
//OMElement element = sender.invokeBlocking(opName, args);
==========================================================

I'm trying to execute blocking and non blocking requests - the same Exception 
occures.

Exception:

org.apache.axis2.AxisFault: Attempted read on closed stream.
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:61)
at 
org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:164)
at 
org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:112)
at 
org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:88)
at 
org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:353)
at 
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:416)
at 
org.apache.axis2.description.OutInAxisOperationClient$NonBlockingInvocationWorker.run(OutInAxisOperation.java:441)
at 
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061)
at 
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Attempted read on closed stream.
at 
org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
at 
org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
at java.io.FilterInputStream.read(Unknown Source)
at java.io.PushbackInputStream.read(Unknown Source)
at org.apache.axis2.builder.BuilderUtil.getCharSetEncoding(BuilderUtil.java:281)
at org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:48)
.... 9 more

Thank for your help in advance
Paco 


      

Reply via email to