cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Freeman Fang (JIRA)" <>
Subject [jira] [Commented] (CXF-4676) Partial WSDL support in CXF
Date Sun, 06 Jan 2013 09:00:14 GMT


Freeman Fang commented on CXF-4676:

Hi Iris,

Thanks for the patch.
But it breaks several tests in rt/databinding/sdo module.

Please ensure all tests pass with your patch. Also for this improvement, I think it's better
that you also append a testcase which can demonstrate your patch works for the specific purpose,
something like publish an endpoint successfully with a partial wsdl and  a client invocation
works. We have systests/jaxws test module, so you can add a test like ClientServerPartialWsdlTest
there. Take a look at how other ClientServer Test works in that module, it should be a good
start for you.

> Partial WSDL support in CXF 
> ----------------------------
>                 Key: CXF-4676
>                 URL:
>             Project: CXF
>          Issue Type: Bug
>          Components: Services
>    Affects Versions: 2.6.2
>            Reporter: iris ding
>            Assignee: Freeman Fang
>         Attachments: cxf-4676.patch
> I have one SEI defined as below:
> @WebService(wsdlLocation="WEB-INF/wsdl/AddNumbersImplPartial1Service.wsdl")
> public class AddNumbersImplPartial1 {
>         public int addTwoNumbers(int number1, int number2) throws AddNegativeNumbersException
>                 if (number1 < 0 || number2 < 0) {
>                         throw new AddNegativeNumbersException("Negative number submitted
!! ", "Numbers: " +
>                                                               number1 + ", " + number2);
>                 }
>                 return number1 + number2;
>         }
> }
> The WEB-INF/wsdl/AddNumbersImplPartial1Service.wsdl is not complete, it only contains
to the porttype part:
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <definitions
> targetNamespace="http://serverpartial1.partialwsdl.annotations/" 
> name="AddNumbersImplPartial1Service"
> xmlns:soap="" 
> xmlns:xsd="" 
> xmlns:tns="http://serverpartial1.partialwsdl.annotations/"
> xmlns="">
>   <types>
>     <xsd:schema>
>       <xsd:import namespace="http://serverpartial1.partialwsdl.annotations/" schemaLocation="AddNumbersImplPartial1Service_schema1.xsd"/>
>     </xsd:schema>
>   </types>
>   <message name="addTwoNumbers">
>     <part name="parameters" element="tns:addTwoNumbers"/>
>   </message>
>   <message name="addTwoNumbersResponse">
>     <part name="parameters" element="tns:addTwoNumbersResponse"/>
>   </message>
>   <message name="AddNegativeNumbersException">
>     <part name="fault" element="tns:AddNegativeNumbersException"/>
>   </message>
>   <portType name="AddNumbersImplPartial1">
>     <operation name="addTwoNumbers">
>       <input message="tns:addTwoNumbers"/>
>       <output message="tns:addTwoNumbersResponse"/>
>       <fault name="AddNegativeNumbersException" message="tns:AddNegativeNumbersException"/>
>     </operation>
>   </portType>
> </definitions>
> Now if I put the war file into tomcat and let it use CXF, the service can not be deployed
successfully. In CXF, when it calls WSDLServiceFactory.create, it will simply get the service
name from wsdl file and in our case, since it is empty, it will throw exception and service
deployment failed. you can reference below part:
> javax.wsdl.Service wsdlService = definition.getService(serviceName);
>             if (wsdlService == null) {
>                 throw new ServiceConstructionException(new Message("NO_SUCH_SERVICE_EXC",
LOG, serviceName));
>             }
> But per jaxws 2.2 spec, in chapter
> Application-specified PortType
> No metadata document contains a definition for the sought-after service S, but a metadata
document, say
> D, contains a definition for the WSDL portType whose qualified name, say P, matches that
specified by the
> endpoint being published. In this case, a JAX-WS implementation MUST create a new description
for S,
> including an appropriate WSDL binding element referencing portType P. The metadata document
> be imported/included so that the published contract uses the definition of P provided
by D. No schema generation
> occurs,as P is assumed to embed or import schema definitions for all the types/elements
it requires.
> Like in the previous case, the implementation MUST override any location and schemaLocation
> It is an error if more than one metadata document contains a definition for the sought-after
> P.

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:

View raw message