Please see Step #7 here for an example of how to work with Holder, it's
rather simple:  http://www.jroller.com/gmazza/date/20070929

Also, to switch between wrapper and non-wrapper styles (which I believe
has some relation to getting rid of Holder), see the next-to-last
question here:
http://cwiki.apache.org/CXF20DOC/wsdl-to-java.html

HTH,
Glen


2008-06-19 Schmülling, Christian wrote:
> Hello.
> 
> I have a problem with generating java sources from wsdl file. I have a wsdl 
> in document literal wrapped style. It's a synchronous service. All I want is 
> a Java interface with a method with for my operation from service. My method 
> has no return value. Instead I got a "holder" and a WebParam in mode INOUT.
> 
> What can I do with it? I can't find docs for it.
> 
> A method with a return value would be my favourite. How can I get it?
> 
> Here are some parts from my sources.
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
>         xmlns:tns="http://NS1";
>         xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
>         xmlns:xsd="http://www.w3.org/2001/XMLSchema";
>         xmlns:fault="http://NS2";
>         targetNamespace="http://NS1";>
>         <wsdl:types>
>                 <xsd:schema targetNamespace="http://NS1";
>                                         xmlns:daten="http://NS1/message"; 
> elementFormDefault="qualified">
>                         <xsd:import namespace="http://NS1/message"; 
> schemaLocation="Daten.xsd"/>
>                         <xsd:import namespace="http://NS2"; 
> schemaLocation="Fault.xsd"/>
>                         <xsd:element name="request">
>                                 <xsd:complexType>
>                                         <xsd:sequence>
>                                                 <xsd:element name="Message" 
> type="daten:MessageTyp"/>
>                                         </xsd:sequence>
>                                 </xsd:complexType>
>                         </xsd:element>
>                         <xsd:element name="requestResponse">
>                                 <xsd:complexType>
>                                         <xsd:sequence>
>                                                 <xsd:element name="Message" 
> type="daten:MessageTyp"/>
>                                         </xsd:sequence>
>                                 </xsd:complexType>
>                         </xsd:element>
> 
>                         ...
> 
>                 </xsd:schema>
>         </wsdl:types>
> 
>         <wsdl:message name="request">
>                 <wsdl:part name="anfrage" element="tns:request"/>
>         </wsdl:message>
>         <wsdl:message name="requestResponse">
>                 <wsdl:part name="antwort" element="tns:requestResponse"/>
>         </wsdl:message>
> 
>         ...
> 
>         <wsdl:message name="Fault">
>                 <wsdl:part name="parameters" element="fault:FaultFault"/>
>         </wsdl:message>
> 
>         <wsdl:portType name="messagePortType">
>                 <wsdl:operation name="request">
>                         <wsdl:input name="request" message="tns:request"/>
>                         <wsdl:output name="antwortAnzahlMitteilungen" 
> message="tns:requestResponse"/>
>                         <wsdl:fault name="fault" message="tns:Fault"/>
>                 </wsdl:operation>
> 
>         ...
> 
>         </wsdl:portType>
> 
>         <wsdl:binding name="messageSOAP" type="tns:messagePortType">
>                 <soap:binding style="document" 
> transport="http://schemas.xmlsoap.org/soap/http"/>
>                 <wsdl:operation name="request">
>                         <soap:operation soapAction="http://NS3"; 
> style="document"/>
>                         <wsdl:input name="request">
>                                 <soap:body use="literal"/>
>                         </wsdl:input>
>                         <wsdl:output name="antwortAnzahlMitteilungen">
>                                 <soap:body use="literal"/>
>                         </wsdl:output>
>                         <wsdl:fault name="fault">
>                                 <soap:fault name="fault" use="literal"/>
>                         </wsdl:fault>
>                 </wsdl:operation>
> 
>                 ...
> 
>         </wsdl:binding>
> 
>         <wsdl:service name="NAME">
>                 <wsdl:port name="messageSOAP" binding="tns:messageSOAP">
>                         <soap:address location="http://a_location"/>
>                 </wsdl:port>
>         </wsdl:service>
> </wsdl:definitions>
> 
> 
> I can't see any error here. More then one validator means it is a valid wsdl.
> In java I get the following sources for my porttype.
> 
> 
> @WebService(targetNamespace = "http://NS1";, name = "messagePortType")
> 
> public interface MessagePortType {
> 
>     @ResponseWrapper(targetNamespace = "http://NS1";, className = 
> "package.RequestResponse", localName = "requestResponse")
>     @RequestWrapper(targetNamespace = "http://NS1";, className = 
> "package.Request", localName = "request")
>     @WebMethod(action = "http://NS3";)
>     public void request(
>         @WebParam(targetNamespace = "http://NS1";, mode = Mode.INOUT, name = 
> "Message")
>         javax.xml.ws.Holder<package.message.MessageTyp> message
>     ) throws Fault;
> }
> 
> 
> As you can see I get a method with a void return parameter. I expect a return 
> parameter with type of package.message.MessageTyp.
> Here some information about the frameworks: cxf 2.0.1, spring 2.5.3
> 
> I hope it's a simple beginner mistake und you can help me fast.
> 
> With best regards
> Christian

Reply via email to