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