[ https://issues.apache.org/jira/browse/CXF-4676?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13546588#comment-13546588 ]
Freeman Fang edited comment on CXF-4676 at 1/8/13 4:30 AM: ----------------------------------------------------------- Unfortunately this can also cause another test failure at {code} Running org.apache.cxf.systest.http.HTTPSClientTest Tests run: 7, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 5.694 sec <<< FAILURE! testResourceKeySpecEndpointURL(org.apache.cxf.systest.http.HTTPSClientTest) Time elapsed: 0.321 sec <<< ERROR! org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service. at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:86) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:292) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:235) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:228) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:183) at org.apache.cxf.systest.http.HTTPSClientTest.testSuccessfulCall(HTTPSClientTest.java:114) at org.apache.cxf.systest.http.HTTPSClientTest.testResourceKeySpecEndpointURL(HTTPSClientTest.java:170) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:113) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) Caused by: javax.wsdl.WSDLException: WSDLException (at /soap:Envelope): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'. at com.ibm.wsdl.xml.WSDLReaderImpl.checkElementName(Unknown Source) at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source) at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source) at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source) at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:260) at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:205) at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:84) ... 38 more {code} You really should run all tests and ensure all passed with your patch. Btw, there's no rush, take your time. was (Author: ffang): Unfortunately this can also cause another test failure at {code} Running org.apache.cxf.systest.http.HTTPSClientTest Tests run: 7, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 5.694 sec <<< FAILURE! testResourceKeySpecEndpointURL(org.apache.cxf.systest.http.HTTPSClientTest) Time elapsed: 0.321 sec <<< ERROR! org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service. at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:86) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:292) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:235) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:228) at org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:183) at org.apache.cxf.systest.http.HTTPSClientTest.testSuccessfulCall(HTTPSClientTest.java:114) at org.apache.cxf.systest.http.HTTPSClientTest.testResourceKeySpecEndpointURL(HTTPSClientTest.java:170) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:113) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) Caused by: javax.wsdl.WSDLException: WSDLException (at /soap:Envelope): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'. at com.ibm.wsdl.xml.WSDLReaderImpl.checkElementName(Unknown Source) at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source) at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source) at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source) at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:260) at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:205) at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:84) ... 38 more {code} You really should run all tests and ensure all passed with your patch > Partial WSDL support in CXF > ---------------------------- > > Key: CXF-4676 > URL: https://issues.apache.org/jira/browse/CXF-4676 > 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="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:tns="http://serverpartial1.partialwsdl.annotations/" > xmlns="http://schemas.xmlsoap.org/wsdl/"> > <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 5.2.5.5: > 5.2.5.5 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 D MUST > 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 attributes. > It is an error if more than one metadata document contains a definition for > the sought-after portType > 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: http://www.atlassian.com/software/jira