I have created an AXIS2 1.5 client using a WSDL as a starting point.
My client wants to access the entire SOAP message, not the body, so I hacked
the Stub.java code
as shown further down...

What I am trying to do is simply convert the SOAP Envelope into a string so
I can look at it 
(and do other stuff with it)

I receive the message but fail to convert to a string.

I receive the following exception...

[ERROR] MyProgram:run:Exception: com.ctc.wstx.exc.WstxIOException: Attempted
read on closed stream.com.ctc.wstx.exc.WstxIOException: Attempted read on
closed stream.
        at
com.ctc.wstx.sr.StreamScanner.throwFromIOE(StreamScanner.java:683)
        at
com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1086)
        at
javax.xml.stream.util.StreamReaderDelegate.next(StreamReaderDelegate.java:60)
        at
org.apache.axiom.om.impl.builder.SafeXMLStreamReader.next(SafeXMLStreamReader.java:183)
        at
org.apache.axiom.om.impl.llom.OMStAXWrapper.next(OMStAXWrapper.java:1005)
        at
org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serializeNode(StreamingOMSerializer.java:125)
        at
org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serialize(StreamingOMSerializer.java:93)
        at
org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serialize(StreamingOMSerializer.java:76)
        at
org.apache.axiom.om.impl.util.OMSerializerUtil.serializeByPullStream(OMSerializerUtil.java:579)
        at
org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:246)
        at
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:995)
        at
org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeImpl.java:403)
        at
org.apache.axiom.om.impl.llom.OMElementImpl.toStringWithConsume(OMElementImpl.java:1093)
        at com.bogus.MyProgram.run(MyProgram.java:190)
        at com.bogus.MyProgram.main(MyProgram.java:55)
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(FilterInputStream.java:116)
        at
org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
        at java.io.FilterInputStream.read(FilterInputStream.java:116)
        at java.io.PushbackInputStream.read(PushbackInputStream.java:169)
        at java.io.FilterInputStream.read(FilterInputStream.java:90)
        at com.ctc.wstx.io.UTF8Reader.loadMore(UTF8Reader.java:365)
        at com.ctc.wstx.io.UTF8Reader.read(UTF8Reader.java:110)
        at com.ctc.wstx.io.MergedReader.read(MergedReader.java:101)
        at com.ctc.wstx.io.ReaderSource.readInto(ReaderSource.java:84)
        at
com.ctc.wstx.io.BranchingReaderSource.readInto(BranchingReaderSource.java:57)
        at
com.ctc.wstx.sr.StreamScanner.loadMoreFromCurrent(StreamScanner.java:1021)
        at
com.ctc.wstx.sr.StreamScanner.loadMoreFromCurrent(StreamScanner.java:1028)
        at
com.ctc.wstx.sr.StreamScanner.getNextCharFromCurrent(StreamScanner.java:786)
        at
com.ctc.wstx.sr.BasicStreamReader.readEndElem(BasicStreamReader.java:3204)
        at
com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2830)
        at
com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1019)
        ... 13 more
[DEBUG] MyProgram:run:Waiting for messages.


*** My Client code...

...snip...

 MyProgramStub webServiceStub;
 webServiceStub = new MyProgramStubStub(targetServiceEndPoint); // url
 org.apache.axiom.soap.SOAPEnvelope response;
 response = webServiceStub.process(request);
 String responseString = response.toStringWithConsume(); // exception
happens here...
// more attempts...
// String responseString = response.toString(); // exception happens here
too...
// StringWriter writer = new StringWriter();
//
response.serialize(XMLOutputFactory.newInstance().createXMLStreamWriter(writer));
// writer.flush();
// String responseString = writer.toString(); // exception happens here
too...

...snip...

*** Stub.java code

...snip...
public  org.apache.axiom.soap.SOAPEnvelope  process(
       org.apache.axiom.soap.SOAPEnvelope  theEnvelope)
        throws java.rmi.RemoteException
    {
        org.apache.axis2.context.MessageContext _messageContext = null;
        try {
            org.apache.axis2.client.OperationClient _operationClient = 
                _serviceClient.createClient(_operations[0].getName());
            _operationClient.getOptions().setAction("process");
           
_operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);

            addPropertyToOperationClient(_operationClient, 
                                        
org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR,
 
                                         "&");
            // create a message context
            _messageContext = new org.apache.axis2.context.MessageContext();

            //adding SOAP soap_headers
            _serviceClient.addHeadersToEnvelope(theEnvelope);
            // set the message context with that soap envelope
            _messageContext.setEnvelope(theEnvelope);

            // add the message contxt to the operation client
            _operationClient.addMessageContext(_messageContext);

            //execute the operation client
            _operationClient.execute(true);
            org.apache.axis2.context.MessageContext _returnMessageContext = 
               
_operationClient.getMessageContext(org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);
            org.apache.axiom.soap.SOAPEnvelope _returnEnv =
_returnMessageContext.getEnvelope();
            return _returnEnv;
        } catch (org.apache.axis2.AxisFault f) {
...snip...
}

-- 
View this message in context: 
http://www.nabble.com/AXIS2-Client-beginner...-Exception-converting-to-string.-tp25530980p25530980.html
Sent from the Axis - User mailing list archive at Nabble.com.

Reply via email to