I don't know.  It's really CXF's WSDL2Java doing that.  Even the JAX-WS RI
(Metro) does the same:

/**
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.1.3-b02-
 * Generated source version: 2.1
 * 
 */
@WebServiceClient(name = "DoubleItService", targetNamespace =
"http://www.example.org/DoubleIt";, wsdlLocation =
"file:/C:/working/xxxxx/trunk/service-war/src/main/webapp/WEB-INF/wsdl/DoubleIt.wsdl")
public class DoubleItService
    extends Service
{....

Glen


Gary Weaver wrote:
> 
> 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
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/why-does-cxf-codegen-plugin-v2.1-wsdl2java-put-hardcoded-WSDL-path-into-autogenerated-service-class--suggested-fix--tp18218959p18220827.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to