You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by "Isuru Eranga Suriarachchi (JIRA)" <ji...@apache.org> on 2010/03/25 12:36:27 UTC

[jira] Resolved: (AXIS2-4417) "Block already consumed" error in JAXWS services

     [ https://issues.apache.org/jira/browse/AXIS2-4417?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Isuru Eranga Suriarachchi resolved AXIS2-4417.
----------------------------------------------

    Resolution: Fixed

> "Block already consumed" error in JAXWS services
> ------------------------------------------------
>
>                 Key: AXIS2-4417
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4417
>             Project: Axis2
>          Issue Type: Bug
>          Components: jaxws
>            Reporter: Isuru Eranga Suriarachchi
>            Assignee: 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.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org