You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Amila Chinthaka Suriarachchi (JIRA)" <ji...@apache.org> on 2007/02/13 13:30:10 UTC

[jira] Commented: (AXIS2-2133) Axis2 WSDL2JAVA created skeleton does not alow multiple parts where one part is body and another destined for soap header

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

Amila Chinthaka Suriarachchi commented on AXIS2-2133:
-----------------------------------------------------

Can you try this with the nightly builds now. I fixed some problems. you have to specifiy your body part in <wsdlsoap:body use="literal"/>  using the *parts* attribute. but you can not have header parameters in skelton since axis2 does not produce any binding specific details in skelton. 

> Axis2 WSDL2JAVA created skeleton does not alow multiple parts where one part is body and another destined for soap header
> -------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-2133
>                 URL: https://issues.apache.org/jira/browse/AXIS2-2133
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: codegen
>    Affects Versions: 1.1.1
>         Environment: Windows XP - Java 5
>            Reporter: Sarwar Raza
>
> Here is what we were able to get working with Axis 1.4, and have been struggling with Axis 2...
> Our input message contained TWO parts, one destined for the body, and the other destined for the header (we set this up in the binding).
> The header contains security info that gets used by WSSJ - pretty typical usage best we can tell.
> When we ran WSDL2Java using Axis 1.4, the resulting stubs resulted in a method signature for each of the methods that looked something like:
> message (header, body).
> Using Axis2, the WSDL does get parsed correctly (even though we have defined two parts for the input message), but the resulting method signature in the skeleton code always turns out like:
> message(header) 
> Note the body is absent, even though it was set up to be one of the two parts for the message.
> Other than the fact that we need to pack our security tokens into the header, the WSDL is pretty basic. I can't rule out that transmogrifying the WSDL to work with Axis 2 has led to some errors creeping in - at this point, we've been staring at it for quite a while and can't see what we may be doing wrong. I'm attaching the WSDL here - perhaps someone can eyeball a problem we've missed. Note the header/body setup in the binding - we construct the binding by hand - is there any way to annotate a message part as being destined for the header so that we could use Eclipse WTP to generate the binding automagically?
> We have tried the unwrap and backwards compatibility flags also to no avail.
> WSDL below:
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions
>     xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
>     xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
>     xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" 
>     xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
>     xmlns:wss="http://ws.test.sample.com/WSSecurity/" 
>     xmlns:tns="http://ws.test.sample.com/TestService/" 
>     name="TestService"
>     targetNamespace="http://ws.test.sample.com/TestService/">
>     <wsdl:types>
>         <schema
>             elementFormDefault="qualified"
>             xmlns="http://www.w3.org/2001/XMLSchema"
>             xmlns:apachesoap="http://xml.apache.org/xml-soap"
>             xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
>             targetNamespace="http://ws.test.sample.com/TestService/">
>             <!-- Security Header types -->
>             <element name="SecurityType">
>                 <complexType>
>                     <sequence>
>                         <element name="UsernameToken" type="tns:UsernameTokenType"/>
>                     </sequence>
>                     <anyAttribute namespace="##other" processContents="lax"/>
>                 </complexType>
>             </element>
>             <complexType name="UsernameTokenType">
>                 <sequence>
>                     <element name="Username" type="tns:UsernameType"/>
>                     <element name="Password" type="tns:PasswordType"/>
>                 </sequence>
>                 <attribute name="Id" type="xsd:ID"/>
>             </complexType>
>             <complexType name="UsernameType">
>                 <simpleContent>
>                     <extension base="xsd:string">
>                         <attribute name="Id" type="xsd:ID"/>
>                     </extension>
>                 </simpleContent>
>             </complexType>
>             <complexType name="PasswordType">
>                 <simpleContent>
>                     <extension base="xsd:string">
>                         <attribute name="Type" type="xsd:anyURI"/>
>                     </extension>
>                 </simpleContent>
>             </complexType>
>             <!-- Common types -->
>             <complexType name="ServiceType">
>                 <attribute name="APIVersion" use="required">
>                     <simpleType>
>                         <restriction base="xsd:string">
>                             <enumeration value="V1"/>
>                         </restriction>
>                     </simpleType>
>                 </attribute>
>             </complexType>
>             <complexType name="ActionCredentials">
>                 <sequence>
>                     <element name="originNumber" type="xsd:string"/>
>                     <element name="password" type="xsd:string"/>
>                 </sequence>
>             </complexType>
>             
>             <element name="ActionResultType">
>                 <complexType>
>                     <restriction base="xsd:string">
>                         <enumeration value="Success"/>
>                         <enumeration value="Connection Failure"/>
>                         <enumeration value="Destination Number not available"/>
>                         <enumeration value="Requestor not authorized"/>
>                         <enumeration value="Internal Server Error"/>
>                     </restriction>
>                 </complexType>
>             </element>
>             <!-- Fault types -->
>             <element name="ConnectionFailureFault">
>                 <complexType>
>                     <sequence>
>                         <element name="Connection Failure" type="xsd:string"/>
>                     </sequence>
>                 </complexType>
>             </element>
>             <element name="DestinationNotAvailableFault">
>                 <complexType>
>                     <sequence>
>                         <element name="Destination Number not available" type="xsd:string"/>
>                     </sequence>
>                 </complexType>
>             </element>
>             <element name="RequestorNotAuthorizedFault">
>                 <complexType>
>                     <sequence>
>                         <element name="Requestor not authorized" type="xsd:string"/>
>                     </sequence>
>                 </complexType>
>             </element>
>             <element name="InternalServerErrorFault">
>                 <complexType>
>                     <sequence>
>                         <element name="Internal Server Error" type="xsd:string"/>
>                     </sequence>
>                 </complexType>
>             </element>
>             <element name="ServiceValidationFault">
>                 <complexType>
>                     <sequence>
>                         <element name="Unsupported WSDL Version" type="xsd:string"/>
>                     </sequence>
>                 </complexType>
>             </element>
>             <!-- Op Control types -->
>             <simpleType name="OpControlActionType">
>                 <restriction base="xsd:string">
>                     <enumeration value="makeOp"/>
>                     <enumeration value="disconnectOp"/>
>                     <enumeration value="holdOp"/>
>                     <enumeration value="conferenceOp"/>
>                     <enumeration value="transferOp"/>
>                 </restriction>
>             </simpleType>
>             <element name="OpControlActionRequest">
>                 <complexType>
>                     <sequence>
>                         <element name="actionType" type="tns:OpControlActionType" minOccurs="1" maxOccurs="1"/>
>                         <element name="credentials" type="tns:ActionCredentials" minOccurs="1" maxOccurs="1"/>
>                         <element name="destinationNumber" type="xsd:string" minOccurs="1" maxOccurs="1"/>
>                         <element name="serviceValidator" type="tns:ServiceType" minOccurs="1" maxOccurs="1"/>
>                     </sequence>
>                 </complexType>
>             </element>
>             <!-- Device Config types -->
>             <simpleType name="DeviceConfigActionType">
>                 <restriction base="xsd:string">
>                     <enumeration value="handsFree"/>
>                     <enumeration value="muteDevice"/>
>                     <enumeration value="dndSet"/>
>                     <enumeration value="fwdMailSet"/>
>                     <enumeration value="fwdMailReset"/>
>                     <enumeration value="cfuConfig"/>
>                     <enumeration value="cfbConfig"/>
>                     <enumeration value="cfrnaConfig"/>
>                     <enumeration value="huntGroupLogin"/>
>                     <enumeration value="huntGroupLogout"/>
>                 </restriction>
>             </simpleType>
>             <element name="DeviceConfigActionRequest">
>                 <complexType>
>                     <sequence>
>                         <element name="actionType" type="tns:DeviceConfigActionType" minOccurs="1" maxOccurs="1"/>
>                         <element name="credentials" type="tns:ActionCredentials" minOccurs="1" maxOccurs="1"/>
>                         <element name="destinationNumber" type="xsd:string" minOccurs="1" maxOccurs="1"/>
>                         <element name="serviceValidator" type="tns:ServiceType" minOccurs="1" maxOccurs="1"/>
>                     </sequence>
>                 </complexType>
>             </element>
>         </schema>
>     </wsdl:types>
>     <!-- Action messages -->
>     <wsdl:message name="opControlRequest">
>         <wsdl:part name="Security" element="tns:SecurityType"/>
>         <wsdl:part name="opControlRequest" element="tns:OpControlActionRequest"/>
>     </wsdl:message>
>     <wsdl:message name="opControlResponse">
>         <wsdl:part name="opControlResponse" element="tns:ActionResultType"/>
>     </wsdl:message>
>     <wsdl:message name="deviceConfigRequest"> 
>         <wsdl:part name="Security" element="tns:SecurityType"/>
>         <wsdl:part name="deviceConfigRequest" element="tns:DeviceConfigActionRequest"/>
>     </wsdl:message>
>     
>     <wsdl:message name="deviceConfigResponse"> 
>         <wsdl:part name="deviceConfigResponse" element="tns:ActionResultType"/>
>     </wsdl:message>
>     <!-- Telephony Result messages -->
>     <wsdl:message name="ConnectionFailure">
>         <wsdl:part name="Fault" element="tns:ConnectionFailureFault"/>
>     </wsdl:message>
>     
>     <wsdl:message name="DestinationNotAvailable">
>         <wsdl:part name="Fault" element="tns:DestinationNotAvailableFault"/>
>     </wsdl:message>
>     
>     <wsdl:message name="RequestorNotAuthorized">
>         <wsdl:part name="Fault" element="tns:RequestorNotAuthorizedFault"/>
>     </wsdl:message>
>     <wsdl:message name="InternalServerError">
>         <wsdl:part name="Fault" element="tns:InternalServerErrorFault"/>
>     </wsdl:message>
>     <wsdl:message name="ServiceValidation">
>         <wsdl:part name="fault" element="tns:ServiceValidationFault"/>
>     </wsdl:message>
>     <!-- Operations -->
>  
>     <wsdl:portType name="TestService">
>         <wsdl:operation name="opControlRequest">
>             <wsdl:input  message="tns:opControlRequest"/>
>             <wsdl:output message="tns:opControlResponse"/>
>             <wsdl:fault name="ConnectionFailure" message="tns:ConnectionFailure"/>
>             <wsdl:fault name="DestinationNotAvailable" message="tns:DestinationNotAvailable"/>
>             <wsdl:fault name="InternalServerError" message="tns:InternalServerError"/>
>             <wsdl:fault name="RequestorNotAuthorized" message="tns:RequestorNotAuthorized"/>
>             <wsdl:fault name="ServiceValidation" message="tns:ServiceValidation"/>
>         </wsdl:operation>
>         <wsdl:operation name="deviceConfigRequest">
>             <wsdl:input  message="tns:deviceConfigRequest"/>
>             <wsdl:output message="tns:deviceConfigResponse"/>
>             <wsdl:fault name="ConnectionFailure" message="tns:ConnectionFailure"/>
>             <wsdl:fault name="DestinationNotAvailable" message="tns:DestinationNotAvailable"/>
>             <wsdl:fault name="InternalServerError" message="tns:InternalServerError"/>
>             <wsdl:fault name="RequestorNotAuthorized" message="tns:RequestorNotAuthorized"/>
>             <wsdl:fault name="ServiceValidation" message="tns:ServiceValidation"/>
>         </wsdl:operation>
>     
>     </wsdl:portType>
>     <!-- Bindings -->
>     <wsdl:binding name="TestService" type="tns:TestService">
>         <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
>         <wsdl:operation name="opControlRequest">
>             <wsdlsoap:operation soapAction="http://ws.test.sample.com/TestService/opControlRequest"/>
>             <wsdl:input>
>                 <wsdlsoap:body use="literal"/>
>                 <wsdlsoap:header message="tns:opControlRequest" part="Security" use="literal"
>                              namespace="http://ws.test.sample.com/WSSecurity/"/>
>             </wsdl:input>
>             <wsdl:output><wsdlsoap:body use="literal"/></wsdl:output>
>             <wsdl:fault name="ConnectionFailure">
>                 <wsdlsoap:fault use="literal" name="ConnectionFailure"/>
>             </wsdl:fault>
>             <wsdl:fault name="DestinationNotAvailable">
>                 <wsdlsoap:fault use="literal" name="DestinationNotAvailable"/>
>             </wsdl:fault>
>             <wsdl:fault name="InternalServerError">
>                 <wsdlsoap:fault use="literal" name="InternalServerError"/>
>             </wsdl:fault>
>             <wsdl:fault name="RequestorNotAuthorized">
>                 <wsdlsoap:fault use="literal" name="RequestorNotAuthorized"/>
>             </wsdl:fault>
>             <wsdl:fault name="ServiceValidation">
>                 <wsdlsoap:fault use="literal" name="ServiceValidation"/>
>             </wsdl:fault>
>         </wsdl:operation>
>         <wsdl:operation name="deviceConfigRequest">
>             <wsdlsoap:operation soapAction="http://ws.test.sample.com/TestService/deviceConfigRequest"/>
>             <wsdl:input>
>                 <wsdlsoap:body use="literal"/>
>                 <wsdlsoap:header message="tns:deviceConfigRequest" part="Security" use="literal"
>                              namespace="http://ws.test.sample.com/WSSecurity/"/>
>             </wsdl:input>
>             <wsdl:output><wsdlsoap:body use="literal"/></wsdl:output>
>             <wsdl:fault name="ConnectionFailure">
>                 <wsdlsoap:fault use="literal" name="ConnectionFailure"/>
>             </wsdl:fault>
>             <wsdl:fault name="DestinationNotAvailable">
>                 <wsdlsoap:fault use="literal" name="DestinationNotAvailable"/>
>             </wsdl:fault>
>             <wsdl:fault name="InternalServerError">
>                 <wsdlsoap:fault use="literal" name="InternalServerError"/>
>             </wsdl:fault>
>             <wsdl:fault name="RequestorNotAuthorized">
>                 <wsdlsoap:fault use="literal" name="RequestorNotAuthorized"/>
>             </wsdl:fault>
>             <wsdl:fault name="ServiceValidation">
>                 <wsdlsoap:fault use="literal" name="ServiceValidation"/>
>             </wsdl:fault>
>         </wsdl:operation>
>     </wsdl:binding>
>     <wsdl:service name="TestService">
>         <wsdl:port binding="tns:TestService" name="TestService">
>             <soap:address location="http://localhost/axis2/services/TestService"/>
>         </wsdl:port>
>     </wsdl:service>
>     
> </wsdl:definitions>

-- 
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: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org