Hello again,

Anyone know why the client code generated by cxf-codegen-plugin v2.1 + JAXB is hardcoding the original WSDL file's path into the client classes, and then looking for that file when the client is used?

Any idea how to keep it from doing that?

For example, in one of the autogenerated client service classes it has a static block that looks like:

...
   static {
       URL url = null;
       try {
url = new URL("file:/path/to/my/project/trunk/src/main/wsdl/MyService.wsdl");
       } catch (MalformedURLException e) {
System.err.println("Can not initialize the default wsdl from file:/path/to/my/project/trunk/src/main/wsdl/MyService.wsdl");
           // e.printStackTrace();
       }
       WSDL_LOCATION = url;
   }
...

And in the pom.xml looks like:

...
           <plugin>
               <groupId>org.apache.cxf</groupId>
               <artifactId>cxf-codegen-plugin</artifactId>
               <version>${cxf.version}</version>
               <executions>
                   <execution>
                       <id>checklist</id>
                       <phase>generate-sources</phase>
                       <configuration>
<sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
                           <wsdlOptions>
                               <wsdlOption>
<wsdl>${basedir}/src/main/wsdl/MyService.wsdl</wsdl>
                               </wsdlOption>
                           </wsdlOptions>
                       </configuration>
                       <goals>
                           <goal>wsdl2java</goal>
                       </goals>
                   </execution>
                   ...
               </executions>
           </plugin>
...


And the error that occurs when you run this in an environment where that path/file (/path/to/my/project/trunk/src/main/wsdl/MyService.wsdl) doesn't exist is:

javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
       at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:134)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:65)
       at javax.xml.ws.Service.<init>(Service.java:56)
       at ... (autogenerated client code)
       at ...
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service. at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:83) at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:140)
       at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:132)
       ...
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: Problem parsing 'file:/path/to/my/project/trunk/src/main/wsdl/MyService.wsdl'.: java.io.FileNotFoundException: /path/to/my/project/trunk/src/main/wsdl/MyService.wsdl (No such file or directory)
       at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(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:206) at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:170) at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:81)
       ...
Caused by: java.io.FileNotFoundException: /path/to/my/wsdl/MyService.wsdl (No such file or directory)
       at java.io.FileInputStream.open(Native Method)
       at java.io.FileInputStream.<init>(FileInputStream.java:106)
       at java.io.FileInputStream.<init>(FileInputStream.java:66)
at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70) at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161) at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
       at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
       at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
       at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
       ...

Thanks in advance!

Gary

--
Gary Weaver
Internet Framework Services
Office of Information Technology
Duke University

Reply via email to