[ 
https://issues.apache.org/jira/browse/AXIS2-2313?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12480766
 ] 

Rich Scheuerle commented on AXIS2-2313:
---------------------------------------

I am busy with some other concerns right now.  I will try to get this completed 
before or on 3/17.

Thanks,
Rich

> JAXBBlockImpl block object is already consumed on client trying to 
> deserialize 2 holders and 1 return string
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-2313
>                 URL: https://issues.apache.org/jira/browse/AXIS2-2313
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>            Reporter: Davanum Srinivas
>         Assigned To: Rich Scheuerle
>
> When the client gets back a response, it throws a "JAXBBlockImpl block object 
> is already consumed" exception. Reason is in RPCLitMethodMarshaller aorund 
> line 348, we use MethodMarshallerUtils.getReturnElement to get back the 
> return string. but then line 368, we call MethodMarshallerUtils.getPDElements 
> and try to unmarshal the other 2 holders. So we get an exception saying that 
> the block is already consumed.
> thanks,
> dims
> ====================== Service Signature ====================================
> @WebService
> @SOAPBinding(style=SOAPBinding.Style.RPC, use=SOAPBinding.Use.LITERAL)
>   @WebMethod
>   public String hello3(@WebParam (name="id", targetNamespace="hello3/Name", 
> header=true) String name, @WebParam (name="Name", mode=WebParam.Mode.OUT) 
> Holder<Name> name2, @WebParam (name="Employee", mode=WebParam.Mode.INOUT) 
> Holder<Employee> employee) throws NameException {
>     
>   }
> ======================== Client ==================================
>            Name name = new Name();
>            Employee employee = new Employee();
>             Holder<Name> nameHolder = new Holder<Name>();
>             Holder<Employee> employeeHolder = new Holder<Employee>();
>             name.setFirstName("k");
>             name.setLastName("l");
>             employee.setName(name);
>             employeeHolder.value = employee;
>             String result = port.hello3("xyz", nameHolder, employeeHolder);
> ==================================== Request ===========================
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
>       <soapenv:Header>
>               <ns3:id xmlns:ns3="hello3/Name" 
> xmlns:ns2="http://server.webparam3.webparam/";>xyz</ns3:id>
>       </soapenv:Header>
>       <soapenv:Body>
>               <rpcOp:hello3 xmlns:rpcOp="http://server.webparam3.webparam/";>
>                       <Employee xmlns:ns3="hello3/Name">
>                               <name>
>                                       <firstName>k</firstName>
>                                       <lastName>l</lastName>
>                               </name>
>                               <type>0</type>
>                       </Employee>
>               </rpcOp:hello3>
>       </soapenv:Body>
> </soapenv:Envelope>
> ================================== Response ======================
> <rpcOp:hello3Response xmlns:rpcOp="http://server.webparam3.webparam/";>
>       <return>Hello xyz to Web Service</return>
>       <Name>
>               <firstName>abc</firstName>
>               <lastName>def</lastName>
>       </Name>
>       <Employee>
>               <address>
>                       <city>San Francisco</city>
>                       <country>U.S.</country>
>                       <email/>
>                       <phone/>
>                       <state>CA</state>
>                       <street/>
>                       <zipcode>94104</zipcode>
>               </address>
>               <dept>
>                       <location>S.F.</location>
>                       <name>Eng</name>
>               </dept>
>               <name>
>                       <firstName>abc</firstName>
>                       <lastName>def</lastName>
>               </name>
>               <salary>
>                       <bonusPercentage>0</bonusPercentage>
>                       <currency>USD</currency>
>                       <salary>0</salary>
>               </salary>
>               <title/>
>               <type>0</type>
>       </Employee>
> </rpcOp:hello3Response>
> =================================== Stack Trace 
> =================================
> 03-12-2007 14:01:49:  ERROR: Exception occurred: 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.
> 03-12-2007 14:01:49:  ERROR: Exception at: 
> 03-12-2007 14:01:49:  ERROR: 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:177)
>       at 
> org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:79)
>       at 
> org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:124)
>       at 
> org.apache.axis2.jaxws.message.impl.BlockImpl.getXMLStreamReader(BlockImpl.java:196)
>       at 
> org.apache.axis2.jaxws.message.impl.BlockImpl.getReader(BlockImpl.java:222)
>       at 
> org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getDirectReader(OMSourcedElementImpl.java:123)
>       at 
> org.apache.axiom.om.impl.llom.OMSourcedElementImpl.forceExpand(OMSourcedElementImpl.java:146)
>       at 
> org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getBuilder(OMSourcedElementImpl.java:341)
>       at 
> org.apache.axis2.jaxws.message.impl.BlockImpl.getBusinessObject(BlockImpl.java:139)
>       at 
> org.apache.axis2.jaxws.message.impl.XMLSpineImpl._getBlockFromOMElement(XMLSpineImpl.java:485)
>       at 
> org.apache.axis2.jaxws.message.impl.XMLSpineImpl.getBodyBlock(XMLSpineImpl.java:286)
>       at 
> org.apache.axis2.jaxws.message.impl.XMLPartBase.getBodyBlock(XMLPartBase.java:491)
>       at 
> org.apache.axis2.jaxws.message.impl.MessageImpl.getBodyBlock(MessageImpl.java:315)
>       at 
> org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils.getPDElements(MethodMarshallerUtils.java:234)
> =====================================================================================

-- 
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to