Hi,
has nobody a comment on this?
i think it is no good idea to fix errors in the generated code manually.

greets,
andi

[EMAIL PROTECTED] schrieb:
> Hello,
>
> I generate client code out of a wsdl with axis2 (v. 1.2) wsdl2java and 
> jaxbri(v. 2.0.2) databinding.
> the wsdl not only defines request and reply messages but also the header 
> element of the soap message.
>
> i have the following problems with the generated code:
> 1) The generated code for the client stub doesn't compile because of a 
> parameter error in the "toOM"-Method for the Header.
> 2) When i fix the error, the invocation of "toOM" fails because of incorrect/ 
> missing values when creating the OMElement for the Header
> 3) When i fix this error too by filling in the correct values for the 
> HeaderType, the client code works. 
>
> I think the wsdl is correct because generated code with adb binding out of 
> this wsdl works fine.
>
> It seems that axis2 code generation doesn't generate correct code with jaxb 
> binding when you have defined a soap header in the wsdl. 
> Does someone have a similiar problem (or fixed it)?
>
> greetings from sunny munich :)
> andi
>
> some code snippets from the generated stub:
>
> "toOM"-Method call. "mMS150_Display0" represents the request data type, 
> "mws1" the header data type.
> 1)------------------------------------------
> **snip**
> env = toEnvelope(getFactory(
>       _operationClient.getOptions().getSoapVersionURI()), 
>       mMS150_Display0, 
>       optimizeContent(new javax.xml.namespace.QName("", "MMS150_Display")));
> env.build();
> // add the children only if the parameter is not null
> if (mws1!=null){
>       env.getHeader().addChild(
>               toOM(mws1, optimizeContent(new javax.xml.namespace.QName("", 
> "MMS150_Display"))));
> }
> **snap**
>
> "toOM"-Method for the header:
> 2)------------------------------------------
> **snip**
> private org.apache.axiom.om.OMElement toOM(net.company.mws.mws2.HeaderType 
> param, org.apache.axiom.soap.SOAPFactory factory, boolean optimizeContent) {
>     try {
>         javax.xml.bind.JAXBContext context = net_company_mws_mws2_HeaderType;
>         javax.xml.bind.Marshaller marshaller = context.createMarshaller();
>         marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FRAGMENT, 
> Boolean.TRUE);            
>
>         JaxbRIDataSource source = new JaxbRIDataSource( 
> net.company.mws.mws2.HeaderType.class,
>                                                         param,
>                                                         marshaller,
>                                                         "",
>                                                         "");
>         org.apache.axiom.om.OMNamespace namespace = 
> factory.createOMNamespace("",
>                                                            null);
>         return factory.createOMElement(source, "", namespace);
>     } catch (javax.xml.bind.JAXBException bex){
>         throw new RuntimeException(bex);
>     }
> }
>
> **snap**
>
> the call of the "toOM"-Method (with Parameters HeaderType, boolean) doesn't 
> fit with the signature of the toOm-Method (HeaderType, SOAPFactory, boolean)
> i can correct this error by adding 
> "getFactory(_operationClient.getOptions().getSoapVersionURI())" to the 
> toOM-Method call in the generated stub.
> then i run into the second error i mentioned above. 
>
> The following code snippet shows the correct values for in the "toOM"-Method:
> 3)------------------------------------------
> **snip**
> JaxbRIDataSource source = new JaxbRIDataSource( 
> net.company.mws.mws2.HeaderType.class,
>                                                 param,
>                                                 marshaller,
>                                                 "http://mws.company.net/mws2";,
>                                                 "mws");
> org.apache.axiom.om.OMNamespace namespace = factory.createOMNamespace("",
>                                                    null);
> return factory.createOMElement(source, "mws", namespace);
> **snap**
>
> the wsdl:
> ------------------------------------------
> **snip**
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
>       xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
>       xmlns:mws="http://mws.company.net/mws2"; 
>       xmlns:tns="http://schemas.company.com/KKTEST2"; 
>       
> xmlns:mms150_display="http://schemas.company.com/KKTEST2/MMS150_Display"; 
>       name="KKTEST2" targetNamespace="http://schemas.company.com/KKTEST2";>
>   <wsdl:types>
>     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
> targetNamespace="http://schemas.company.com/KKTEST2/MMS150_Display"; 
> elementFormDefault="qualified">
>       <xsd:element name="MMS150_Display" 
> type="mms150_display:MMS150_DisplayType" />
>       <xsd:complexType name="MMS150_DisplayType">
>         <xsd:sequence>
>           <xsd:element name="MMS150" type="mms150_display:ct_0" />
>         </xsd:sequence>
>       </xsd:complexType>
>       <xsd:complexType name="ct_0">
>         <xsd:sequence>
>           <xsd:element name="User" nillable="true" maxOccurs="1" 
> minOccurs="0">
>             <xsd:simpleType>
>               <xsd:restriction base="xsd:string">
>                 <xsd:maxLength value="10" />
>               </xsd:restriction>
>             </xsd:simpleType>
>           </xsd:element>
>         </xsd:sequence>
>       </xsd:complexType>
>       <xsd:element name="MMS150_DisplayResponse" 
> type="mms150_display:MMS150_DisplayResponseType" />
>       <xsd:complexType name="MMS150_DisplayResponseType">
>         <xsd:sequence>
>           <xsd:element name="MMS150" type="mms150_display:ct_1" />
>         </xsd:sequence>
>       </xsd:complexType>
>       <xsd:complexType name="ct_1">
>         <xsd:sequence>
>           <xsd:element name="Description">
>             <xsd:simpleType>
>               <xsd:restriction base="xsd:string">
>                 <xsd:maxLength value="40" />
>               </xsd:restriction>
>             </xsd:simpleType>
>           </xsd:element>
>         </xsd:sequence>
>       </xsd:complexType>
>     </xsd:schema>
>     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
>       xmlns:tns="http://mws.company.net/mws2"; 
>       targetNamespace="http://mws.company.net/mws2"; 
> elementFormDefault="qualified">
>       <xsd:element name="mws" type="tns:headerType" />
>       <xsd:complexType name="headerType">
>         <xsd:sequence>
>           <xsd:element name="user" type="xsd:string" />
>           <xsd:element name="password" type="xsd:string" />
>           <xsd:element name="company" type="xsd:integer" nillable="true" />
>           <xsd:element name="division" type="xsd:string" nillable="true" />
>         </xsd:sequence>
>       </xsd:complexType>
>     </xsd:schema>
>   </wsdl:types>
>   <wsdl:message name="MMS150_Display">
>     <wsdl:part element="mms150_display:MMS150_Display" name="MMS150_Display" 
> />
>   </wsdl:message>
>   <wsdl:message name="MMS150_DisplayResponse">
>     <wsdl:part element="mms150_display:MMS150_DisplayResponse" 
> name="MMS150_DisplayResponse" />
>   </wsdl:message>
>   <wsdl:message name="MwsHeader001">
>     <wsdl:part element="mws:mws" name="MwsHeader" />
>   </wsdl:message>
>   <wsdl:portType name="KKTEST2">
>     <wsdl:operation name="MMS150_Display">
>       <wsdl:input message="tns:MMS150_Display" />
>       <wsdl:output message="tns:MMS150_DisplayResponse" />
>     </wsdl:operation>
>   </wsdl:portType>
>   <wsdl:binding name="KKTEST2SoapBinding" type="tns:KKTEST2">
>     <soap:binding style="document" 
> transport="http://schemas.xmlsoap.org/soap/http"; />
>     <wsdl:operation name="MMS150_Display">
>       <soap:operation soapAction="MMS150_Display" />
>       <wsdl:input>
>         <soap:body use="literal" parts="MMS150_Display" />
>         <soap:header use="literal" part="MwsHeader" 
> message="tns:MwsHeader001" />
>       </wsdl:input>
>       <wsdl:output>
>         <soap:body use="literal" />
>       </wsdl:output>
>     </wsdl:operation>
>   </wsdl:binding>
>   <wsdl:service name="KKTEST2">
>     <wsdl:port name="KKTEST2Port" binding="tns:KKTEST2SoapBinding">
>       <soap:address location="http://host:port/ws/services/KKTEST2"; />
>     </wsdl:port>
>   </wsdl:service>
> </wsdl:definitions>
> **snap**
>

-- 
GMX FreeMail: 1 GB Postfach, 5 E-Mail-Adressen, 10 Free SMS.
Alle Infos und kostenlose Anmeldung: http://www.gmx.net/de/go/freemail

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to