[
https://issues.apache.org/jira/browse/AXIS2-4417?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Isuru Eranga Suriarachchi updated AXIS2-4417:
---------------------------------------------
Attachment: axis2-jaxws-sample-src.zip
axis2-jaxws-sample.jar
> "Block already consumed" error in JAXWS services
> ------------------------------------------------
>
> Key: AXIS2-4417
> URL: https://issues.apache.org/jira/browse/AXIS2-4417
> Project: Axis 2.0 (Axis2)
> Issue Type: Bug
> Components: jaxws
> Reporter: Isuru Eranga Suriarachchi
> Attachments: axis2-jaxws-sample-src.zip, axis2-jaxws-sample.jar
>
>
> I'm attaching my sample jaxws service and its source code.
> In JAXWS services, body and header parts are kept as
> org.apache.axis2.jaxws.message.impl.BlockImpl objects. These message blocks
> are read before invoking the service and all are set as "consumed".
> But in this sample service, I want to access Reference Parameters and I've
> done that using the following line.
> List<Element> referenceParam = (List<Element>)
> context.getMessageContext().get(MessageContext.REFERENCE_PARAMETERS);
> And also this service is expecting a header which is called "TestHeader" and
> it is already consumed when the execution comes into the service. But above
> access to reference parameters calls the getXMLStreamReader of the BlockInmpl
> object of the header block. As it is already consumed, it gives the following
> exception.
> Caused by: javax.xml.ws.WebServiceException: An internal error occurred. The
> org.apache.axis2.jaxws.message.databinding.impl.JAXBBlockImpl block object is
> already consumed. Processing cannot continue. Run with the debug option to
> determine where the block was first consumed.
> at
> org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:173)
> at
> org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:70)
> at
> org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:118)
> at
> org.apache.axis2.jaxws.message.impl.BlockImpl.getXMLStreamReader(BlockImpl.java:229)
> at
> org.apache.axis2.jaxws.message.impl.BlockImpl.getReader(BlockImpl.java:256)
> at
> org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getDirectReader(OMSourcedElementImpl.java:226)
> at
> org.apache.axiom.om.impl.llom.OMSourcedElementImpl.forceExpand(OMSourcedElementImpl.java:255)
> at
> org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getAttribute(OMSourcedElementImpl.java:412)
> at
> org.apache.axis2.jaxws.addressing.util.ReferenceParameterList.initialize(ReferenceParameterList.java:96)
> at
> org.apache.axis2.jaxws.addressing.util.ReferenceParameterList.size(ReferenceParameterList.java:74)
> at java.util.AbstractList$Itr.hasNext(AbstractList.java:339)
> at
> org.axis2.jaxws.sample.TestServiceImpl.newOperation(TestServiceImpl.java:27)
> So how can I access the reference parameters in the service?
> Thanks,
> ~Isuru
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.