axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j..@ersl.ie
Subject Re: Unable to build client side message with document style
Date Thu, 25 Jun 2009 15:44:54 GMT
joa@ersl.ie writes: 

> Hi  
> 
> I am developing an AXIS 1.4 client for a remote server (AXIS 1.3). The 
> axis guide: 
> http://ws.apache.org/axis/java/user-guide.html#ServiceStylesRPCDocumentWra 
> pp edAndMessage details a message structure (which is similar to what I 
> want):  
> 
>  <soap:Body>
>    <myNS:PurchaseOrder xmlns:myNS="http://commerce.com/PO">
>      <item>SK001</item>
>      <quantity>1</quantity>
>      <description>Sushi Knife</description>
>    </myNS:PurchaseOrder>
>  </soap:Body>  
> 
> The guide says:  
> 
> "For a document style service, this would map to a method like this:
> public void method(PurchaseOrder po)"  
> 
> However using the stub generated by wsdl2java I am getting a message 
> structure like:  
> 
>  <soap:Body>
> 	<method>
> 		<myNS:PurchaseOrder xmlns:myNS="http://commerce.com/PO">
> 			<item>SK001</item>
> 			<quantity>1</quantity>
> 			<description>Sushi Knife</description>
> 		</myNS:PurchaseOrder>
> 	</method>
>  </soap:Body> 
> 
> where I have populated the part passed to the invoke method with an 
> org.w3c.dom.Element containing an xml fragment:  
> 
> 		<myNS:PurchaseOrder xmlns:myNS="http://commerce.com/PO">
> 			<item>SK001</item>
> 			<quantity>1</quantity>
> 			<description>Sushi Knife</description>
> 		</myNS:PurchaseOrder>
> 		
> wsdl binding is:  
> 
> 	<wsdl:binding name="....." type="impl:....">
> 		<wsdlsoap:binding style="document" 
> transport="http://schemas.xmlsoap.org/soap/http"/>
> 		<wsdl:operation name="process">
> 			<wsdlsoap:operation soapAction=""/>
> 			<wsdl:input name="processRequest">
> 				<wsdlsoap:body use="literal"/>
> 			</wsdl:input>
> 		
> wsdl types:  
> 
> 	<wsdl:types>
> 		<schema targetNamespace="......">
> 			<import namespace="...."/>
> 			<element name="process" type="xsd:anyType"/>
> 		</schema>		
> 		
> So in my case I am getting a message on the wire like:  
> 
>  <soap:Body>
> 	<process>
> 		<myNS:PurchaseOrder xmlns:myNS="http://commerce.com/PO">
> 			<item>SK001</item>
> 			<quantity>1</quantity>
> 			<description>Sushi Knife</description>
> 		</myNS:PurchaseOrder>
> 	</process>
>  </soap:Body>		  
> 
> Where I don't want the process elements
> 		
> Thanks John

Ok I have had a further look at this and my understanding is now that the 
wsdl has a wrapped document style - I.e. that is where the operation name is 
also included as a top level element in the input message (see wsdl below), 
and this is why the operation name (process) is being put into the input 
message. Could someone confirm this from the wdsl below (sensitive stuff 
replaced with ellipses)? 

Thanks John 

<wsdl:definitions targetNamespace=".....">
	<!--WSDL created by Apache Axis version: 1.3 Built on Oct 05, 2005 
(05:23:37 EDT)-->
	<wsdl:types>
		<schema targetNamespace="....">
			<import namespace="...."/>
			<element name="process" type="xsd:anyType"/>
		</schema>
		<schema targetNamespace="....">
			<element name="processReturn" type="xsd:anyType"/>
			<element name="fault" type="xsd:anyType"/>
		</schema>
	</wsdl:types>
	<wsdl:message name="processResponse">
		<wsdl:part element="impl:processReturn" name="processReturn"/>
	</wsdl:message>
	<wsdl:message name="processRequest">
		<wsdl:part element="tns1:process" name="part"/>
	</wsdl:message>
	<wsdl:message name="WebServicesRuntimeException">
		<wsdl:part element="impl:fault" name="fault"/>
	</wsdl:message>
	<wsdl:portType name="WebServiceExceptionLoggingAdapter">
		<wsdl:operation name="process">
			<wsdl:input message="impl:processRequest" name="processRequest"/>
			<wsdl:output message="impl:processResponse" name="processResponse"/>
			<wsdl:fault message="impl:WebServicesRuntimeException" 
name="WebServicesRuntimeException"/>
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:binding name="...." type="impl:WebServiceExceptionLoggingAdapter">
		<wsdlsoap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>
		<wsdl:operation name="process">
			<wsdlsoap:operation soapAction=""/>
			<wsdl:input name="processRequest">
				<wsdlsoap:body use="literal"/>
			</wsdl:input>
			<wsdl:output name="processResponse">
				<wsdlsoap:body use="literal"/>
			</wsdl:output>
			<wsdl:fault name="WebServicesRuntimeException">
				<wsdlsoap:fault name="WebServicesRuntimeException" use="literal"/>
			</wsdl:fault>
		</wsdl:operation>
	</wsdl:binding>
	<wsdl:service name="WebServiceExceptionLoggingAdapterService">
		<wsdl:port binding="impl:..." name="....">
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>

Mime
View raw message