[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.