Hi there @ JBoss web,

Disclaimer: I do not think the following is a bug (because this is pretty basic 
functionality) but I cannot see what, for the life of us, we are doing wrong or 
unconventional.  

We are using a basic example and we have the following setups

A: JBoss 5.1.0 with CXF WS Stack 3.2.1
B: JBoss 4.2.2 with CXF WS Stack 3.0.2

For both A and B we have the SAME WSDL file (reproduced for completeness 
hereunder - note that this is automatically generated through the same server 
class annotation).


  | <?xml version="1.0" encoding="UTF-8"?>
  | <wsdl:definitions name="testApiService" 
targetNamespace="http://server.ws.ixaris.com";
  | xmlns:ns1="http://schemas.xmlsoap.org/wsdl/soap/http";
  | xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
  | xmlns:tns="http://server.ws.ixaris.com";
  | xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
  | xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
  |   <wsdl:types>
  | <xs:schema elementFormDefault="unqualified" 
targetNamespace="http://server.ws.ixaris.com"; version="1.0"
  | xmlns:tns="http://server.ws.ixaris.com"; 
  | xmlns:xs="http://www.w3.org/2001/XMLSchema";>
  | <xs:element name="apiCaller" type="tns:apiCaller"/>
  | <xs:element name="apiCallerResponse" type="tns:apiCallerResponse"/>
  | <xs:complexType name="apiCaller">
  | <xs:sequence>
  | <xs:element form="qualified" minOccurs="0" name="arg0" 
type="tns:testpayment"/>
  | </xs:sequence>
  | </xs:complexType>
  | <xs:complexType name="testpayment">
  | <xs:sequence>
  | <xs:element name="paymentId" type="xs:string"/>
  | <xs:element name="userId" type="xs:string"/>
  | <xs:element name="amount" type="xs:double"/>
  | <xs:element name="currency" type="xs:string"/>
  | <xs:element name="date" type="xs:dateTime"/>
  | </xs:sequence>
  | </xs:complexType>
  | <xs:complexType name="apiCallerResponse">
  | <xs:sequence>
  | <xs:element form="qualified" minOccurs="0" name="testApiCallerResult" 
type="tns:testpaymentconfirmation"/>
  | </xs:sequence>
  | </xs:complexType>
  | <xs:complexType name="testpaymentconfirmation">
  | <xs:sequence>
  | <xs:element name="statusCode" type="xs:int"/>
  | <xs:element minOccurs="0" name="statusMessage" type="xs:string"/>
  | <xs:element minOccurs="0" name="paymentObject" type="tns:testpayment"/>
  | </xs:sequence>
  | </xs:complexType>
  | </xs:schema>
  |   </wsdl:types>
  |   <wsdl:message name="apiCaller">
  |     <wsdl:part element="tns:apiCaller" name="parameters">
  |     </wsdl:part>
  |   </wsdl:message>
  |   <wsdl:message name="apiCallerResponse">
  |     <wsdl:part element="tns:apiCallerResponse" name="parameters">
  |     </wsdl:part>
  |   </wsdl:message>
  |   <wsdl:portType name="testApiService">
  |     <wsdl:operation name="apiCaller">
  |       <wsdl:input message="tns:apiCaller" name="apiCaller">
  |     </wsdl:input>
  |       <wsdl:output message="tns:apiCallerResponse" name="apiCallerResponse">
  |     </wsdl:output>
  |     </wsdl:operation>
  |   </wsdl:portType>
  |   <wsdl:binding name="testApiServiceSoapBinding" type="tns:testApiService">
  |     <soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>
  |     <wsdl:operation name="apiCaller">
  |       <soap:operation soapAction="" style="document"/>
  |       <wsdl:input name="apiCaller">
  |         <soap:body use="literal"/>
  |       </wsdl:input>
  |       <wsdl:output name="apiCallerResponse">
  |         <soap:body use="literal"/>
  |       </wsdl:output>
  |     </wsdl:operation>
  |   </wsdl:binding>
  |   <wsdl:service name="testApiService">
  |     <wsdl:port binding="tns:testApiServiceSoapBinding" name="testapiport">
  |       <soap:address 
location="http://127.0.0.1:8080/testapiwebservice/testapiservice"/>
  |     </wsdl:port>
  |   </wsdl:service>
  | </wsdl:definitions>
  | 

Using the wsconsume tool in the JBoss BIN folder, this WSDL file generates 
different clients for setups A and B (described above).  The main and (possibly 
only) interesting difference in the service interface is the following:

In A:  JBoss 5.1.0 with CXF WS Stack 3.2.1: (class finally generated by Apache 
CXF 2.2.4)


  |   @WebResult(name = "testApiCallerResult", targetNamespace = "")
  |   @.. //other annotations identical!
  |   public com.ixaris.ws.server.Testpaymentconfirmation apiCaller(
  |         @WebParam(name = "arg0", targetNamespace = 
"http://server.ws.ixaris.com";)
  |         com.ixaris.ws.server.Testpayment arg0
  |     );
  | 

In B:  JBoss 4.2.2 with CXF WS Stack 3.0.2: (class finally generated by JAX-WS 
RI 2.1.1-b03)


  |   @WebResult(name = "testApiCallerResult", targetNamespace = 
"http://server.ws.ixaris.com";)   
  |   @.. //other annotations identical!
  |   public Testpaymentconfirmation apiCaller(
  |         @WebParam(name = "arg0", targetNamespace = 
"http://server.ws.ixaris.com";)
  |         Testpayment arg0);
  | 

As you can see the client generated by the wsconsume tool in setup A does not 
have a namespace and generates the following exception:


  | Exception in thread "main" javax.xml.ws.WebServiceException: class 
com.ixaris.ws.client.endpoints.ApiCallerResponse do not have a property of the 
name testApiCallerResult
  |     at 
com.sun.xml.internal.ws.client.sei.ResponseBuilder$DocLit.<init>(ResponseBuilder.java:486)
  |     at 
com.sun.xml.internal.ws.client.sei.SyncMethodHandler.<init>(SyncMethodHandler.java:171)
  |     at com.sun.xml.internal.ws.client.sei.SEIStub.<init>(SEIStub.java:67)
  |     at 
com.sun.xml.internal.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:544)
  |     at 
com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:292)
  |     at 
com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:274)
  |     at 
com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:267)
  |     at javax.xml.ws.Service.getPort(Service.java:92)
  |     at 
com.ixaris.ws.client.endpoints.TestApiService_Service.getTestapiport(TestApiService_Service.java:62)
  |     at 
com.ixaris.ws.client.testapiclient.testApiClientProcess(testapiclient.java:31)
  |     at com.ixaris.ws.client.testapiclient.main(testapiclient.java:84)
  | Caused by: javax.xml.bind.JAXBException: testApiCallerResult is not a valid 
property on class com.ixaris.ws.client.endpoints.ApiCallerResponse
  |     at 
com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getElementPropertyAccessor(JAXBContextImpl.java:910)
  |     at 
com.sun.xml.internal.ws.client.sei.ResponseBuilder$DocLit.<init>(ResponseBuilder.java:475)
  |     ... 10 more
  | 


Note that if I add this 

targetNamespace = "http://server.ws.ixaris.com";

to the Jboss 5.1.0 and CXF 3.2.1 (setup A) WebResult annotation on the 
interface, everything works fine.

Note: I am running BOTH war files on JBoss 5.1.0 with CXF stack 3.2.1

Any ideas why this is happening ?

Many Thanks
JP

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4267001#4267001

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4267001
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to