Hello
*(added clarifications)*
I have a question re: the form of the generated Service subclass code that
is created when running the wsdl2java tool in CXF
(org.apache.cxf.tools.wsdlto.WSDLToJava) - I am using CXF 2.5.1
When using JAX-WS RI's/Metro's *wsimport *tool (from the 2.1 release),
there is a *generated *static block of code of the form:
static {
BOOKORDERMANAGERSERVICE_WSDL_LOCATION =
com.acme.book.webservices.BookOrderManagerService_Service.class.getResource("/META-INF/wsdl/BookOrderManagerService.wsdl");
WebServiceException e = null;
if (BOOKORDERMANAGERSERVICE_WSDL_LOCATION == null) {
e = new WebServiceException("Cannot find
'/META-INF/wsdl/BookOrderManagerService.wsdl' wsdl. Place the resource
correctly in the classpath.");
}
BOOKORDERMANAGERSERVICE_EXCEPTION = e;
}
This uses the WSDL file packaged in the JAR file and pulled from the
/META-INF/wsdl location of that JAR using the
*</generated_fully_qualified_service_classname/>.class.getResource(/<localized_path_to_wsdl_in_jar>/)*
method as
shown, and works perfectly.
Similar code *generated *with the CXF tools produces this block in
the following form:
static {
URL url = null;
try {
url = new URL("/META-INF/wsdl/BookOrderManagerService.wsdl");
} catch (MalformedURLException e) {
java.util.logging.Logger.getLogger(BookOrderManagerService.class.getName())
.log(java.util.logging.Level.INFO,
"Can not initialize the default wsdl from {0}",
"META-INF/wsdl/BookOrderManagerService.wsdl");
}
WSDL_LOCATION = url;
}
In this case, the WSDL_LOCATION is defined using the URL class and the same
value of the String representing the localized path of the WSDL file,
relative to the JAR file content.
The client code works in EITHER case but the CXF-generated code produces
the message:
Jan 7, 2012 8:59:11 AM com.acme.book.webservices.BookOrderManagerService
<clinit>
INFO: Can not initialize the default wsdl from
/META-INF/wsdl/BookOrderManagerService.wsdl
Jan 7, 2012 8:59:21 AM
org.apache.cxf.service.factory.ReflectionServiceFactoryBean
buildServiceFromWSDL
Obviously it is 2 different approaches with the first one working since the
class.getResource() is always available in the classpath. The CXF code
accomplishes a similar thing but produces the exception message shown, yet
continues successfully to create the instance...which seemed puzzling.
(perhaps I am misunderstanding?).
We are looking to potentially move to the CXF stack (for both JAX-WS and
JAX-RS) in a large scale environment and I want to make sure I understand
what I am seeing.
Jan 7, 2012 3:06:52 PM
org.apache.cxf.service.factory.ReflectionServiceFactoryBean
buildServiceFromWSDL
INFO: Creating Service {
http://webservices.book.acme.com/}BookOrderManagerService from WSDL:
jar:file:/C:/Users/xxxxxxxxx/workspace/EclipseIndigo/CXFTestWSClient/deploy/CXFTestWSClient.jar!/META-INF/wsdl/BookOrderManagerService.wsdl
/I do recall some time ago that the wsimport tool in JAX-WS RI 2.0 (and
JDK6) created similar code which was eventually changed in one of the JAX-WS
RI 2.1.x releases to using this "getResource()" method approach. Before
that, there was a bug where the String path provided to the URL constructor
was the absolute file system path to the file...which was clearly a
problem./
Any insight would be appreciated.
Thank you.
--
View this message in context:
http://cxf.547215.n5.nabble.com/Generated-Service-proxy-client-side-CXF-Tools-tp5128342p5146480.html
Sent from the cxf-user mailing list archive at Nabble.com.