On Wed, Aug 26, 2009 at 3:33 AM, Chad DeBauch <cdeba...@gmail.com> wrote:

> I created a logging module that is similar to the one described at
> http://ws.apache.org/axis2/1_3/modules.html.  I engage the logging module
> for my client like this:
>
> ConfigurationContext ctx =
> ConfigurationContextFactory.createConfigurationContextFromFileSystem(pathToRepo,null);
> ctx.getAxisConfiguration().engageModule("logging");
> Phase loggingPhase = new Phase("loggingPhase");
> ctx.getAxisConfiguration().getGlobalOutPhases().add(0,loggingPhase);
> ctx.getAxisConfiguration().getGlobalInFlow().add(loggingPhase);
> ctx.getAxisConfiguration().getInFaultFlow().add(loggingPhase);
> ctx.getAxisConfiguration().getOutFaultFlow().add(0,loggingPhase);
>
> When the module goes to log the OutFlow of my SOAP message it successfully
> logs it but it doesn't send the message because of the following exception:
>
> java.lang.UnsupportedOperationException: The parser is already consumed!
>     at
> org.apache.axiom.om.impl.llom.OMElementImpl.getXMLStreamReader(OMElementImpl.java:646)
>     at
> org.apache.axiom.om.impl.llom.OMElementImpl.getXMLStreamReaderWithoutCaching(OMElementImpl.java:628)
>     at
> org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getXMLStreamReaderWithoutCaching(OMSourcedElementImpl.java:386)


How you have written your client? can you send us the client code? It seems
it try to get the XMLStreamReader without caching in from a built soap
envelope. Normally we get xml stream reader like this at server side. But I
think Axiom does support this.

thanks,
Amila.

>
>     at
> org.apache.axiom.om.impl.util.OMSerializerUtil.serializeByPullStream(OMSerializerUtil.java:488)
>     at
> org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:783)
>     at
> org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:808)
>     at
> org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:234)
>     at
> org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:222)
>     at
> org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:808)
>     at
> org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeImpl.java:418)
>     at
> org.apache.axis2.transport.http.SOAPMessageFormatter.getBytes(SOAPMessageFormatter.java:77)
>     at
> org.apache.axis2.transport.http.AxisRequestEntity.getContentLength(AxisRequestEntity.java:109)
>     at
> org.apache.commons.httpclient.methods.EntityEnclosingMethod.getRequestContentLength(EntityEnclosingMethod.java:332)
>     at
> org.apache.commons.httpclient.methods.EntityEnclosingMethod.addContentLengthRequestHeader(EntityEnclosingMethod.java:402)
>     at
> org.apache.commons.httpclient.methods.EntityEnclosingMethod.addRequestHeaders(EntityEnclosingMethod.java:370)
>     at
> org.apache.commons.httpclient.HttpMethodBase.writeRequestHeaders(HttpMethodBase.java:2036)
>     at
> org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:1919)
>     at
> org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:993)
>     at
> org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)
>     at
> org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
>     at
> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
>     at
> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
>     at
> org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:558)
>     at
> org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:176)
>     at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:73)
>     at
> org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:305)
>     at
> org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:201)
>     at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:452)
>     at
> org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:330)
>     at
> org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:294)
>
> I believe what is happening has something to do with the following line of
> code in my logging module:
>
> msgContext.getEnvelope().toString()
>
> What I am thinking is there maybe a different way in which I need to get
> the SOAP Envelope to log?  Any ideas?
>
> Thanks,
>
> Chad
>



-- 
Amila Suriarachchi
WSO2 Inc.
blog: http://amilachinthaka.blogspot.com/

Reply via email to