You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by xuhb <xu...@tongtech.com> on 2012/01/16 10:17:25 UTC

A defect of JAXWS of RPC Literal operation which has xsd:Element message part?

Hi:
   
   CXF support RPC Literal operation which has message part point to a xsd:element;
   But it seems there is a defect;
  
   First I generate a JAXWS interface from such a wsdl, and publish the JAXWS as service; 

   If I doesn't specifiy the origical wsdl's location and force CXF create WSDL only from JAXWS interface. then the new wsdl's message part point to a xsd:type, but not a xsd:element;

for example:

Original wsdl:
<schema>
  <xs:element name="SimpleSymbol" type="xs:string" /> 
  <xs:element name="Symbol" type="ns:SymbolType" /> 
</schema>

  <wsdl:message name="rpcEInOutRequest">
    <wsdl:part name="rpcEInOutArg" element="ns:SimpleSymbol">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="rpcEInOutResponse">
    <wsdl:part name="rpcEInOutReturn" element="ns:Symbol">
    </wsdl:part>
  </wsdl:message>

  <wsdl:portType name="rpcLiteralType">
    <wsdl:operation name="rpcEInOut">
      <wsdl:input message="axis2:rpcEInOutRequest">
    </wsdl:input>
      <wsdl:output message="axis2:rpcEInOutResponse">
    </wsdl:output>
    </wsdl:operation>
  </wsdl:portType>

Generate JAXWS-Interface:
    public interface RpcLiteralType {

    @WebResult(name = "rpcEInOutReturn", targetNamespace = "http://anyxml.samples/", partName = "rpcEInOutReturn")
    @WebMethod
    public SymbolType rpcEInOut(
        @WebParam(partName = "rpcEInOutArg", name = "rpcEInOutArg")
        java.lang.String rpcEInOutArg
    );
}

Created WSDL from JAXWS-interface:

    
    <wsdl:message name="rpcEInOutResponse">
       <wsdl:part name="rpcEInOutReturn" type="ns1:SymbolType" /> 
</wsdl:message>
    <wsdl:message name="rpcEInOut">
          <wsdl:part name="rpcEInOutArg" type="xsd:string" /> 
    </wsdl:message>
    <wsdl:portType name="rpcLiteralType">
    <wsdl:operation name="rpcEInOut">
      <wsdl:input message="tns:rpcEInOut" name="rpcEInOut" /> 
   <wsdl:output message="tns:rpcEInOutResponse" name="rpcEInOutResponse" /> 
</wsdl:operation>
</wsdl:portType>




Re: A defect of JAXWS of RPC Literal operation which has xsd:Element message part?

Posted by xuhb <xu...@tongtech.com>.
Thanks Dan. 
Thanks your help;
----- Original Message ----- 
From: "Daniel Kulp" <dk...@apache.org>
To: <us...@cxf.apache.org>
Cc: "xuhb" <xu...@tongtech.com>
Sent: Monday, January 16, 2012 11:51 PM
Subject: Re: A defect of JAXWS of RPC Literal operation which has xsd:Element message part?


> On Monday, January 16, 2012 5:37:23 PM xuhb wrote:
>> By the way, I am not sure if JAXWS specification support a RPC-Literal
>> Operation whose message part point to a xsd:element, not to a xsd:type.
>> Does anyone know about it ?
> 
> WS-I Basic profile, the parts in an RPC-Literal style WSDL MUST point to a 
> type, not an element:
> 
> R2203 An rpc-literal binding in a DESCRIPTION MUST refer, in its soapbind:body 
> element(s), only to wsdl:part element(s) that have been defined using the type 
> attribute.
> 
> Thus, such a wsdl as you describe is not WS-I Basic Profile compliant and thus 
> would really be outside the scope of JAX-WS and CXF (and pretty much any other 
> modern toolkit).
> 
> 
> Dan
> 
> 
>> ----- Original Message ----- 
>> From: "xuhb" <xu...@tongtech.com>
>> To: <us...@cxf.apache.org>
>> Sent: Monday, January 16, 2012 5:17 PM
>> Subject: A defect of JAXWS of RPC Literal operation which has xsd:Element
>> message part?
> 
>> 
>> 
>> > Hi:
>> > 
>> >   
>> >   CXF support RPC Literal operation which has message part point to a
>> >   xsd:element;
> But it seems there is a defect;
>> >  
>> >  
>> >  
>> >   First I generate a JAXWS interface from such a wsdl, and publish the
>> >   JAXWS as service; 
>> 
>> > 
>> > 
>> >   If I doesn't specifiy the origical wsdl's location and force CXF
>> >   create WSDL only from JAXWS interface. then the new wsdl's message
>> >   part point to a xsd:type, but not a xsd:element;
>> 
>> > 
>> > for example:
>> > 
>> > Original wsdl:
>> > <schema>
>> > 
>> >  <xs:element name="SimpleSymbol" type="xs:string" /> 
>> >  <xs:element name="Symbol" type="ns:SymbolType" /> 
>> > 
>> > </schema>
>> > 
>> > 
>> >  <wsdl:message name="rpcEInOutRequest">
>> >  
>> >    <wsdl:part name="rpcEInOutArg" element="ns:SimpleSymbol">
>> >    </wsdl:part>
>> >  
>> >  </wsdl:message>
>> >  <wsdl:message name="rpcEInOutResponse">
>> >  
>> >    <wsdl:part name="rpcEInOutReturn" element="ns:Symbol">
>> >    </wsdl:part>
>> >  
>> >  </wsdl:message>
>> > 
>> > 
>> > 
>> >  <wsdl:portType name="rpcLiteralType">
>> >  
>> >    <wsdl:operation name="rpcEInOut">
>> >    
>> >      <wsdl:input message="axis2:rpcEInOutRequest">
>> >    
>> >    </wsdl:input>
>> >    
>> >      <wsdl:output message="axis2:rpcEInOutResponse">
>> >    
>> >    </wsdl:output>
>> >    </wsdl:operation>
>> >  
>> >  </wsdl:portType>
>> > 
>> > 
>> > Generate JAXWS-Interface:
>> > 
>> >    public interface RpcLiteralType {
>> > 
>> > 
>> > 
>> >    @WebResult(name = "rpcEInOutReturn", targetNamespace =
>> >    "http://anyxml.samples/", partName = "rpcEInOutReturn")
>> >    @WebMethod
>> >    public SymbolType rpcEInOut(
>> >    
>> >        @WebParam(partName = "rpcEInOutArg", name =
>> >        "rpcEInOutArg")
>> >        java.lang.String rpcEInOutArg
>> >    
>> >    );
>> > 
>> > }
>> > 
>> > Created WSDL from JAXWS-interface:
>> > 
>> > 
>> >    
>> >    <wsdl:message name="rpcEInOutResponse">
>> >    
>> >       <wsdl:part name="rpcEInOutReturn" type="ns1:SymbolType" /> 
>> > 
>> > </wsdl:message>
>> > 
>> >    <wsdl:message name="rpcEInOut">
>> >    
>> >          <wsdl:part name="rpcEInOutArg" type="xsd:string" /> 
>> >    
>> >    </wsdl:message>
>> >    <wsdl:portType name="rpcLiteralType">
>> >    <wsdl:operation name="rpcEInOut">
>> >    
>> >      <wsdl:input message="tns:rpcEInOut" name="rpcEInOut" /> 
>> >   
>> >   <wsdl:output message="tns:rpcEInOutResponse"
>> >   name="rpcEInOutResponse" /> 
>> 
>> > </wsdl:operation>
>> > </wsdl:portType>
>> > 
>> > 
>> > 
> 
> -- 
> Daniel Kulp
> dkulp@apache.org - http://dankulp.com/blog
> Talend Community Coder - http://coders.talend.com
>

Re: A defect of JAXWS of RPC Literal operation which has xsd:Element message part?

Posted by Daniel Kulp <dk...@apache.org>.
On Monday, January 16, 2012 5:37:23 PM xuhb wrote:
> By the way, I am not sure if JAXWS specification support a RPC-Literal
> Operation whose message part point to a xsd:element, not to a xsd:type.
> Does anyone know about it ?

WS-I Basic profile, the parts in an RPC-Literal style WSDL MUST point to a 
type, not an element:

R2203 An rpc-literal binding in a DESCRIPTION MUST refer, in its soapbind:body 
element(s), only to wsdl:part element(s) that have been defined using the type 
attribute.

Thus, such a wsdl as you describe is not WS-I Basic Profile compliant and thus 
would really be outside the scope of JAX-WS and CXF (and pretty much any other 
modern toolkit).


Dan

 
> ----- Original Message ----- 
> From: "xuhb" <xu...@tongtech.com>
> To: <us...@cxf.apache.org>
> Sent: Monday, January 16, 2012 5:17 PM
> Subject: A defect of JAXWS of RPC Literal operation which has xsd:Element
> message part?
 
> 
> 
> > Hi:
> > 
> >   
> >   CXF support RPC Literal operation which has message part point to a
> >   xsd:element;
 But it seems there is a defect;
> >  
> >  
> >  
> >   First I generate a JAXWS interface from such a wsdl, and publish the
> >   JAXWS as service; 
> 
> > 
> > 
> >   If I doesn't specifiy the origical wsdl's location and force CXF
> >   create WSDL only from JAXWS interface. then the new wsdl's message
> >   part point to a xsd:type, but not a xsd:element;
> 
> > 
> > for example:
> > 
> > Original wsdl:
> > <schema>
> > 
> >  <xs:element name="SimpleSymbol" type="xs:string" /> 
> >  <xs:element name="Symbol" type="ns:SymbolType" /> 
> > 
> > </schema>
> > 
> > 
> >  <wsdl:message name="rpcEInOutRequest">
> >  
> >    <wsdl:part name="rpcEInOutArg" element="ns:SimpleSymbol">
> >    </wsdl:part>
> >  
> >  </wsdl:message>
> >  <wsdl:message name="rpcEInOutResponse">
> >  
> >    <wsdl:part name="rpcEInOutReturn" element="ns:Symbol">
> >    </wsdl:part>
> >  
> >  </wsdl:message>
> > 
> > 
> > 
> >  <wsdl:portType name="rpcLiteralType">
> >  
> >    <wsdl:operation name="rpcEInOut">
> >    
> >      <wsdl:input message="axis2:rpcEInOutRequest">
> >    
> >    </wsdl:input>
> >    
> >      <wsdl:output message="axis2:rpcEInOutResponse">
> >    
> >    </wsdl:output>
> >    </wsdl:operation>
> >  
> >  </wsdl:portType>
> > 
> > 
> > Generate JAXWS-Interface:
> > 
> >    public interface RpcLiteralType {
> > 
> > 
> > 
> >    @WebResult(name = "rpcEInOutReturn", targetNamespace =
> >    "http://anyxml.samples/", partName = "rpcEInOutReturn")
> >    @WebMethod
> >    public SymbolType rpcEInOut(
> >    
> >        @WebParam(partName = "rpcEInOutArg", name =
> >        "rpcEInOutArg")
> >        java.lang.String rpcEInOutArg
> >    
> >    );
> > 
> > }
> > 
> > Created WSDL from JAXWS-interface:
> > 
> > 
> >    
> >    <wsdl:message name="rpcEInOutResponse">
> >    
> >       <wsdl:part name="rpcEInOutReturn" type="ns1:SymbolType" /> 
> > 
> > </wsdl:message>
> > 
> >    <wsdl:message name="rpcEInOut">
> >    
> >          <wsdl:part name="rpcEInOutArg" type="xsd:string" /> 
> >    
> >    </wsdl:message>
> >    <wsdl:portType name="rpcLiteralType">
> >    <wsdl:operation name="rpcEInOut">
> >    
> >      <wsdl:input message="tns:rpcEInOut" name="rpcEInOut" /> 
> >   
> >   <wsdl:output message="tns:rpcEInOutResponse"
> >   name="rpcEInOutResponse" /> 
> 
> > </wsdl:operation>
> > </wsdl:portType>
> > 
> > 
> > 

-- 
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com

Re: A defect of JAXWS of RPC Literal operation which has xsd:Element message part?

Posted by xuhb <xu...@tongtech.com>.
By the way, I am not sure if JAXWS specification support a RPC-Literal Operation whose message part point to a xsd:element, not to a xsd:type.
Does anyone know about it ?

----- Original Message ----- 
From: "xuhb" <xu...@tongtech.com>
To: <us...@cxf.apache.org>
Sent: Monday, January 16, 2012 5:17 PM
Subject: A defect of JAXWS of RPC Literal operation which has xsd:Element message part?


> Hi:
>   
>   CXF support RPC Literal operation which has message part point to a xsd:element;
>   But it seems there is a defect;
>  
>   First I generate a JAXWS interface from such a wsdl, and publish the JAXWS as service; 
> 
>   If I doesn't specifiy the origical wsdl's location and force CXF create WSDL only from JAXWS interface. then the new wsdl's message part point to a xsd:type, but not a xsd:element;
> 
> for example:
> 
> Original wsdl:
> <schema>
>  <xs:element name="SimpleSymbol" type="xs:string" /> 
>  <xs:element name="Symbol" type="ns:SymbolType" /> 
> </schema>
> 
>  <wsdl:message name="rpcEInOutRequest">
>    <wsdl:part name="rpcEInOutArg" element="ns:SimpleSymbol">
>    </wsdl:part>
>  </wsdl:message>
>  <wsdl:message name="rpcEInOutResponse">
>    <wsdl:part name="rpcEInOutReturn" element="ns:Symbol">
>    </wsdl:part>
>  </wsdl:message>
> 
>  <wsdl:portType name="rpcLiteralType">
>    <wsdl:operation name="rpcEInOut">
>      <wsdl:input message="axis2:rpcEInOutRequest">
>    </wsdl:input>
>      <wsdl:output message="axis2:rpcEInOutResponse">
>    </wsdl:output>
>    </wsdl:operation>
>  </wsdl:portType>
> 
> Generate JAXWS-Interface:
>    public interface RpcLiteralType {
> 
>    @WebResult(name = "rpcEInOutReturn", targetNamespace = "http://anyxml.samples/", partName = "rpcEInOutReturn")
>    @WebMethod
>    public SymbolType rpcEInOut(
>        @WebParam(partName = "rpcEInOutArg", name = "rpcEInOutArg")
>        java.lang.String rpcEInOutArg
>    );
> }
> 
> Created WSDL from JAXWS-interface:
> 
>    
>    <wsdl:message name="rpcEInOutResponse">
>       <wsdl:part name="rpcEInOutReturn" type="ns1:SymbolType" /> 
> </wsdl:message>
>    <wsdl:message name="rpcEInOut">
>          <wsdl:part name="rpcEInOutArg" type="xsd:string" /> 
>    </wsdl:message>
>    <wsdl:portType name="rpcLiteralType">
>    <wsdl:operation name="rpcEInOut">
>      <wsdl:input message="tns:rpcEInOut" name="rpcEInOut" /> 
>   <wsdl:output message="tns:rpcEInOutResponse" name="rpcEInOutResponse" /> 
> </wsdl:operation>
> </wsdl:portType>
> 
> 
> 
>