Thanks Dan. Thanks your help; ----- Original Message ----- From: "Daniel Kulp" <dk...@apache.org> To: <users@cxf.apache.org> Cc: "xuhb" <x...@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" <x...@tongtech.com> >> To: <users@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 > dk...@apache.org - http://dankulp.com/blog > Talend Community Coder - http://coders.talend.com >