cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel Kulp (JIRA)" <j...@apache.org>
Subject [jira] Commented: (CXF-2136) [CXF2.2][wsdl2java][RPC/Lit] Unable to create stubs
Date Mon, 30 Mar 2009 21:01:52 GMT

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


Mime
View raw message