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" <[email protected]> > To: <[email protected]> > 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 [email protected] - http://dankulp.com/blog Talend Community Coder - http://coders.talend.com
