It's likely due to the "-exsh true" flags and the headers for the response:

>          <soap12:header use="literal" message="tns:replyHeader" 
> part="result"/>


To be able to pass the header back to the client, the holder needs to be 
generated.


Dan



On Nov 9, 2012, at 9:12 AM, Eric Ettes <[email protected]> wrote:

> Dear all,
> 
> I'm currently building a Java application with CXF, and it worked, until I 
> received a new set of WSDL's.
> 
> When generating new classes from said WSDL's, my reply methods get an extra 
> parameter 'result':
> 
> 
>    @WebResult(name = "rebootReply", targetNamespace = 
> "urn://blueMeasure/box/1/0/", partName = "parameters")
>    @Action(input = "/reboot")
>    @WebMethod(action = "/reboot")
>    public RebootReply reboot(
>        @WebParam(partName = "parameters", name = "rebootRequest", 
> targetNamespace = "urn://blueMeasure/box/1/0/")
>        RebootRequest parameters,
>        @WebParam(partName = "identity", name = "identity", targetNamespace = 
> "urn://blueMeasure/box/1/0/", header = true)
>        java.lang.String identity,
>        @WebParam(partName = "result", mode = WebParam.Mode.OUT, name = 
> "result", targetNamespace = "urn://blueMeasure/box/1/0/", header = true)
>        javax.xml.ws.Holder<Result> result
>    );
> 
> 
> I've been reading about people using .net with the exact same problem, only 
> opposite. I've tried adding extraargs to my wsdl2java, but that didn't work, 
> so maybe I'm missing something. I'll paste a snippet from the wsdl (only 
> using the reboot part), and my wsdl2java section, perhaps there is something 
> wrong with the wsdl?
> 
> WSDL:
> 
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> 
> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
>                  xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/";
>                  xmlns:s="http://www.w3.org/2001/XMLSchema";
>                          xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
>                  xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl";
>                  xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy";
>                  
> xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
>                  xmlns:jaxws="http://java.sun.com/xml/ns/jaxws";
>                  xmlns:tns="urn://blueMeasure/box/1/0/"
>                  targetNamespace="urn://blueMeasure/box/1/0/">
> 
>       <wsp:Policy wsu:Id="ServicePolicy">
>       <wsp:ExactlyOne>
>               <wsp:All>
>               </wsp:All>
>       </wsp:ExactlyOne>
>       </wsp:Policy>
> 
>    <wsdl:types>
>       <s:schema targetNamespace="urn://blueMeasure/box/1/0/">
> 
>                       <s:simpleType name="rebootType">
>                               <s:restriction base="s:string">
>                                       <s:enumeration value="soft"/>
>                                       <s:enumeration value="hard"/>
>                               </s:restriction>
>                       </s:simpleType>
> 
>             <s:complexType name="rebootRequest">
>               <s:sequence>
>                               <s:element name="type" type="tns:rebootType" 
> minOccurs="1" maxOccurs="1" />
>               </s:sequence>
>             </s:complexType>
> 
>             <s:complexType name="rebootReply">
>               <s:sequence>
>               </s:sequence>
>             </s:complexType>
> 
>             <s:element name="rebootRequest"           
> type="tns:rebootRequest" />
>             <s:element name="rebootReply"             type="tns:rebootReply" 
> />
>       
>       </s:schema>
>       </wsdl:types>
> 
>       <wsdl:message name="rebootInput">
>               <wsdl:part name="parameters" element="tns:rebootRequest" />
>       </wsdl:message>
> 
>       <wsdl:message name="rebootOutput">
>               <wsdl:part name="parameters" element="tns:rebootReply" />
>       </wsdl:message>
> 
>       <wsdl:portType name="blueMeasure2box">
> 
>     <wsdl:operation name="reboot">
>       <wsdl:input message="tns:rebootInput" wsaw:Action="/reboot" />
>       <wsdl:output message="tns:rebootOutput" />
>     </wsdl:operation>
> 
>       </wsdl:portType>
> 
>     <wsdl:binding name="blueMeasure2boxService" type="tns:blueMeasure2box">
>     <wsp:PolicyReference URI="#ServicePolicy" />
>     <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"; />
>       
>      <wsdl:operation name="reboot">
>        <soap12:operation soapAction="/reboot" style="document" />
>        <wsdl:input>
>          <soap12:header use="literal" message="tns:requestHeader" 
> part="identity"/>
>          <soap12:body use="literal" />
>        </wsdl:input>
>        <wsdl:output>
>          <soap12:header use="literal" message="tns:replyHeader" 
> part="result"/>
>          <soap12:body use="literal" />
>        </wsdl:output>
>      </wsdl:operation>
>       
>       </wsdl:binding>
> 
>  <wsdl:service name="blueMeasure2box">
>    <wsdl:port name="blueMeasure2box10" binding="tns:blueMeasure2boxService">
>      <soap12:address 
> location="http://localhost/blueMeasure/blueMeasure2box10/"; />
>    </wsdl:port>
>  </wsdl:service>
> 
> </wsdl:definitions>
> 
> pom.xml / build:
>    <build>
>        <plugins>
>            <plugin>
>                <groupId>org.apache.cxf</groupId>
>                <artifactId>cxf-codegen-plugin</artifactId>
>                <version>${cxf.version}</version>
>                <executions>
>                    <execution>
>                        <id>generate-sources</id>
>                        <phase>generate-sources</phase>
>                        <configuration>
>                            <wsdlOptions>
>                                <wsdlOption>
>                                    
> <wsdl>${basedir}/src/main/resources/wsdl/blueMeasure2box.wsdl</wsdl>
>                                    
> <wsdlLocation>classpath:wsdl/blueMeasure2box.wsdl</wsdlLocation>
>                                    <packagenames>
>                                        
> <packagename>ohmp.bluemeasure2box</packagename>
>                                    </packagenames>
>                                    <extraargs>
>                                        <extraarg>-verbose</extraarg>
>                                        <extraarg>-exsh</extraarg>
>                                        <extraarg>true</extraarg>
>                                        
> <extraarg>-bareMethods=reboot</extraarg>
>                                    </extraargs>
>                                </wsdlOption>
>                                <wsdlOption>
>                                    
> <wsdl>${basedir}/src/main/resources/wsdl/blueMeasure2master.wsdl</wsdl>
>                                    
> <wsdlLocation>classpath:wsdl/blueMeasure2master.wsdl</wsdlLocation>
>                                    <packagenames>
>                                        
> <packagename>ohmp.bluemeasure2master</packagename>
>                                    </packagenames>
>                                    <extraargs>
>                                        <extraarg>-client</extraarg>
>                                        <extraarg>-exsh</extraarg>
>                                        <extraarg>true</extraarg>
>                                    </extraargs>
>                                </wsdlOption>
>                            </wsdlOptions>
>                        </configuration>
>                        <goals>
>                            <goal>wsdl2java</goal>
>                        </goals>
>                    </execution>
>                </executions>
>            </plugin>
>        </plugins>
>    </build>
> 
> As you can see, I still have the -bareMethods=reboot as an extraArg, hoping 
> that the reboot method would lack the Holder but that didn't work :-(
> 
> Kind regards,
> Eric

-- 
Daniel Kulp
[email protected] - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com

Reply via email to