You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Daniel Kulp (JIRA)" <ji...@apache.org> on 2009/03/30 23:01:52 UTC
[jira] Commented: (CXF-2136) [CXF2.2][wsdl2java][RPC/Lit] Unable to
create stubs
[ https://issues.apache.org/jira/browse/CXF-2136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12693904#action_12693904 ]
Daniel Kulp commented on CXF-2136:
----------------------------------
Actually, this is not a valid wsdl according to WSI-BP rules. For RPC/Lit, the parts in the message MUST be defined as a type, not an element. A couple of the operations above are using <wsdl:part element="tns:MyObject" name="myObject"> for input parts, and that's not valid for RPC/Lit.
The error message could be improved and I'll work on that a bit, but this issue is invalid.
> [CXF2.2][wsdl2java][RPC/Lit] Unable to create stubs
> ---------------------------------------------------
>
> Key: CXF-2136
> URL: https://issues.apache.org/jira/browse/CXF-2136
> Project: CXF
> Issue Type: Bug
> Components: Tooling
> Affects Versions: 2.2
> Environment: Java 6
> Reporter: Gabo Manuel
>
> Not sure how to attach so I am pasting the code here directly:
> Error message:
> WSDLToJava Error: Non unique body parts! In a port, operations must have unique operation signaure on the wire for successful dispatch. In port {http://domain.some/}MyObjectServicePort, Operations "{http://domain.some/}insertMyObject" and "{http://domain.some/}updateMyObject" have the same request body block {http://domain.some/}MyObject
> Command line:
> D:\java\cxf\apache-cxf-2.2\bin>wsdl2java -ant -client -autoNameResolution -exsh true -d ClientDir MyObjects.wsdl
> MyObject.java:
> package some.domain;
> import javax.xml.bind.annotation.XmlAccessType;
> import javax.xml.bind.annotation.XmlAccessorType;
> import javax.xml.bind.annotation.XmlRootElement;
> import javax.xml.bind.annotation.XmlType;
> @XmlType(name="MyObject")
> @XmlAccessorType(XmlAccessType.PROPERTY)
> @XmlRootElement(name="MyObject")
> public class MyObject{
> }
> package-info.java:
> @javax.xml.bind.annotation.XmlSchema(namespace = "http://domain.some/",
> elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED
> )
> package some.domain;
> MyService.java:
> package some.domain;
> import javax.jws.WebMethod;
> import javax.jws.WebParam;
> import javax.jws.WebService;
> import javax.jws.soap.SOAPBinding;
> import javax.jws.soap.SOAPBinding.Style;
> import javax.jws.soap.SOAPBinding.Use;
> import org.apache.log4j.Logger;
> @WebService(serviceName="MyObjectService", portName="MyObjectServicePort")
> @SOAPBinding(use=Use.LITERAL, style=Style.RPC)
> public class MyService{
> private static Logger logger = Logger.getLogger(MyService.class);
>
> @WebMethod
> public int deleteMyObject(
> @WebParam(name="longField1")
> long longField1){
> logger.info("delete MyObject received: " + longField1);
> return 1;
> }
>
> @WebMethod
> public MyObject getMyObject(
> @WebParam(name="longField1")
> long longField1){
> logger.info("get MyObject received: " + longField1);
>
> return generateMyObject();
> }
> @WebMethod
> public long insertMyObject(
> @WebParam(name="myObject")
> MyObject myObject){
> logger.info("insert MyObject Received: " + myObject);
>
> return 2;
> }
> @WebMethod
> public int updateMyObject(
> @WebParam(name="myObject")
> MyObject myObject){
> logger.info("update MyObject Received: " + myObject);
> return 3;
> }
>
> private static MyObject generateMyObject(){
> MyObject myObject = new MyObject();
>
> long tempLong = 1;
>
> myObject.setStringField1("S:"+tempLong++);
> myObject.setStringField2("S:"+tempLong++);
> myObject.setLongField1(tempLong++);
> myObject.setLongField2(tempLong++);
>
> return myObject;
> }
> }
> beans.xml:
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:jaxws="http://cxf.apache.org/jaxws"
> xmlns:soap="http://cxf.apache.org/bindings/soap"
> xsi:schemaLocation="http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
> http://cxf.apache.org/bindings/soap
> http://cxf.apache.org/schemas/configuration/soap.xsd
> http://cxf.apache.org/jaxws
> http://cxf.apache.org/schemas/jaxws.xsd">
> <import resource="classpath:META-INF/cxf/cxf.xml" />
> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
> <jaxws:endpoint
> id="mySoapService"
> address="/soap/MyObjects"
> implementor="some.domain.MyService"
> >
> </jaxws:endpoint>
> </beans>
> MyObjects.wsdl:
> <?xml version='1.0' encoding='UTF-8'?><wsdl:definitions name="MyObjectService" targetNamespace="http://domain.some/" xmlns:ns1="http://cxf.apache.org/bindings/xformat" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://domain.some/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <wsdl:types>
> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://domain.some/" xmlns:tns="http://domain.some/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <xs:element name="MyObject" type="tns:MyObject" />
> <xs:complexType name="MyObject">
> <xs:sequence>
> <xs:element name="longField1" type="xs:long" />
> <xs:element name="longField2" type="xs:long" />
> <xs:element minOccurs="0" name="stringField1" type="xs:string" />
> <xs:element minOccurs="0" name="stringField2" type="xs:string" />
> </xs:sequence>
> </xs:complexType>
> </xs:schema>
> </wsdl:types>
> <wsdl:message name="updateMyObject">
> <wsdl:part element="tns:MyObject" name="myObject">
> </wsdl:part>
> </wsdl:message>
> <wsdl:message name="getMyObjectResponse">
> <wsdl:part element="tns:MyObject" name="return">
> </wsdl:part>
> </wsdl:message>
> <wsdl:message name="getMyObject">
> <wsdl:part name="longField1" type="xsd:long">
> </wsdl:part>
> </wsdl:message>
> <wsdl:message name="insertMyObjectResponse">
> <wsdl:part name="return" type="xsd:long">
> </wsdl:part>
> </wsdl:message>
> <wsdl:message name="insertMyObject">
> <wsdl:part element="tns:MyObject" name="myObject">
> </wsdl:part>
> </wsdl:message>
> <wsdl:message name="deleteMyObjectResponse">
> <wsdl:part name="return" type="xsd:int">
> </wsdl:part>
> </wsdl:message>
> <wsdl:message name="updateMyObjectResponse">
> <wsdl:part name="return" type="xsd:int">
> </wsdl:part>
> </wsdl:message>
> <wsdl:message name="deleteMyObject">
> <wsdl:part name="longField1" type="xsd:long">
> </wsdl:part>
> </wsdl:message>
> <wsdl:portType name="MyService">
> <wsdl:operation name="updateMyObject">
> <wsdl:input message="tns:updateMyObject" name="updateMyObject">
> </wsdl:input>
> <wsdl:output message="tns:updateMyObjectResponse" name="updateMyObjectResponse">
> </wsdl:output>
> </wsdl:operation>
> <wsdl:operation name="insertMyObject">
> <wsdl:input message="tns:insertMyObject" name="insertMyObject">
> </wsdl:input>
> <wsdl:output message="tns:insertMyObjectResponse" name="insertMyObjectResponse">
> </wsdl:output>
> </wsdl:operation>
> <wsdl:operation name="getMyObject">
> <wsdl:input message="tns:getMyObject" name="getMyObject">
> </wsdl:input>
> <wsdl:output message="tns:getMyObjectResponse" name="getMyObjectResponse">
> </wsdl:output>
> </wsdl:operation>
> <wsdl:operation name="deleteMyObject">
> <wsdl:input message="tns:deleteMyObject" name="deleteMyObject">
> </wsdl:input>
> <wsdl:output message="tns:deleteMyObjectResponse" name="deleteMyObjectResponse">
> </wsdl:output>
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="MyObjectServiceSoapBinding" type="tns:MyService">
> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
> <wsdl:operation name="updateMyObject">
> <soap:operation soapAction="" style="rpc" />
> <wsdl:input name="updateMyObject">
> <soap:body namespace="http://domain.some/" use="literal" />
> </wsdl:input>
> <wsdl:output name="updateMyObjectResponse">
> <soap:body namespace="http://domain.some/" use="literal" />
> </wsdl:output>
> </wsdl:operation>
> <wsdl:operation name="insertMyObject">
> <soap:operation soapAction="" style="rpc" />
> <wsdl:input name="insertMyObject">
> <soap:body namespace="http://domain.some/" use="literal" />
> </wsdl:input>
> <wsdl:output name="insertMyObjectResponse">
> <soap:body namespace="http://domain.some/" use="literal" />
> </wsdl:output>
> </wsdl:operation>
> <wsdl:operation name="getMyObject">
> <soap:operation soapAction="" style="rpc" />
> <wsdl:input name="getMyObject">
> <soap:body namespace="http://domain.some/" use="literal" />
> </wsdl:input>
> <wsdl:output name="getMyObjectResponse">
> <soap:body namespace="http://domain.some/" use="literal" />
> </wsdl:output>
> </wsdl:operation>
> <wsdl:operation name="deleteMyObject">
> <soap:operation soapAction="" style="rpc" />
> <wsdl:input name="deleteMyObject">
> <soap:body namespace="http://domain.some/" use="literal" />
> </wsdl:input>
> <wsdl:output name="deleteMyObjectResponse">
> <soap:body namespace="http://domain.some/" use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="MyObjectService">
> <wsdl:port binding="tns:MyObjectServiceSoapBinding" name="MyObjectServicePort">
> <soap:address location="http://222.127.215.100:8030/soap/MyObjects" />
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
> Reference thread:
> http://www.nabble.com/-CXF2.2--wsdl2java--RPC-Lit--Unable-to-create-stubs-td22698336.html
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.