cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Freeman Fang (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-5061) Invalid WSDL generated for List of Complex Type
Date Wed, 19 Jun 2013 00:36:21 GMT

    [ https://issues.apache.org/jira/browse/CXF-5061?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13687447#comment-13687447
] 

Freeman Fang commented on CXF-5061:
-----------------------------------

With CXF 2.7.5, you should have
WEB-INF/lib/jaxb-api-2.2.6.jar
WEB-INF/lib/jaxb-impl-2.2.6.jar
in the war.
But you have jaxb-api-2.2.7 and jaxb-impl-2.2.6, this mismatch may cause the error you encounter.

Anyway, if you can narrow down your project and provide the war project we can reproduce the
error, it would be more helpful here.

                
> Invalid WSDL generated for List of Complex Type
> -----------------------------------------------
>
>                 Key: CXF-5061
>                 URL: https://issues.apache.org/jira/browse/CXF-5061
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-WS Runtime, JAXB Databinding
>    Affects Versions: 2.7.5
>         Environment: Windows 7, Tomcat 7.0.30, Java 1.7.0_07
>            Reporter: Joshua Shannon
>         Attachments: cxf5061.wsdl, package-info.java, springWebService.xml, TestServiceImpl.java,
TestService.java, test.wsdl, WrapperString.java
>
>
> We are using CXF to do Code First development of both SOAP and REST web services. Here
is our interface for the web service:
> {noformat}
> @Path("/test")
> @Produces(BaseMediaType.APPLICATION_JSON)
> @Consumes(BaseMediaType.APPLICATION_JSON)
> @WebService(name = "TestService",
> 		portName = "TestServicePort",
> 		serviceName = "TestService",
> 		targetNamespace = "http://enterprise.ltcourttech.com/services/test")
> @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
> public interface TestService
> {
> 	@Path("/list")
> 	@GET
> 	@Produces(BaseMediaType.MULTIPART_RELATED)
> 	@WebMethod(operationName = "getList")
> 	public List<WrapperString> getList();
> }
> {noformat}
> Whenever CXF creates the WSDL for the implementing class, the WSDL is invalid. Here is
the WSDL that is created:
> {noformat}
> <?xml version='1.0' encoding='UTF-8'?><wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://enterprise.ltcourttech.com/services/test"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http"
name="TestService" targetNamespace="http://enterprise.ltcourttech.com/services/test">
>   <wsdl:types>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://enterprise.ltcourttech.com/services/base"
elementFormDefault="qualified" targetNamespace="http://enterprise.ltcourttech.com/services/base">
>   <xsd:complexType name="wrapperStringArray">
>     <xsd:sequence>
>       <xsd:element maxOccurs="unbounded" minOccurs="0" name="item" nillable="true"
type="ns0:WrapperString"/>
>     </xsd:sequence>
>   </xsd:complexType>
>   <xsd:complexType name="WrapperString">
>     <xsd:sequence>
>       <xsd:element minOccurs="0" name="value" type="xsd:string"/>
>     </xsd:sequence>
>   </xsd:complexType>
>   <xsd:element name="wrapperString" type="ns0:WrapperString"/>
> </xsd:schema>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://enterprise.ltcourttech.com/services/test"
xmlns:ns0="http://enterprise.ltcourttech.com/services/base" attributeFormDefault="unqualified"
elementFormDefault="qualified" targetNamespace="http://enterprise.ltcourttech.com/services/test">
>   <xsd:import namespace="http://enterprise.ltcourttech.com/services/base"/>
>   <xsd:element name="getListResponse" nillable="true" type="ns0:WrapperStringArray"/>
> </xsd:schema>
>   </wsdl:types>
>   <wsdl:message name="getListResponse">
>     <wsdl:part element="tns:getListResponse" name="getListResponse">
>     </wsdl:part>
>   </wsdl:message>
>   <wsdl:message name="getList">
>   </wsdl:message>
>   <wsdl:portType name="TestService">
>     <wsdl:operation name="getList">
>       <wsdl:input message="tns:getList" name="getList">
>     </wsdl:input>
>       <wsdl:output message="tns:getListResponse" name="getListResponse">
>     </wsdl:output>
>     </wsdl:operation>
>   </wsdl:portType>
>   <wsdl:binding name="TestServiceSoapBinding" type="tns:TestService">
>     <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
>     <wsdl:operation name="getList">
>       <soap:operation soapAction="" style="document"/>
>       <wsdl:input name="getList">
>         <soap:body use="literal"/>
>       </wsdl:input>
>       <wsdl:output name="getListResponse">
>         <soap:body use="literal"/>
>       </wsdl:output>
>     </wsdl:operation>
>   </wsdl:binding>
>   <wsdl:service name="TestService">
>     <wsdl:port binding="tns:TestServiceSoapBinding" name="TestServicePort">
>       <soap:address location="http://mtefile/services/soap/test"/>
>     </wsdl:port>
>   </wsdl:service>
> </wsdl:definitions>
> {noformat}
> Notice that the complexType is named "wrapperStringArray" yet the getListResponse is
trying to use the type of "ns0:WrapperStringArray". The bug is that the case of the types
does not match. I think the getListResponse type should be a lowercase "w". I ran another
test with a List<String> and the types were correctly generated to "stringArray". It
seems like CXF is messing the capitalization of the type when using complex objects. This
is quite a high priority issue so we can get SOAP services to work correctly with a valid
WSDL.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message