[jboss-user] [JBoss Web Services] New message: "Re: How can I force a particular WS implementation? How to ensure Metro over Native?"
Jan Uhlir
do-not-reply at jboss.com
Wed Jan 27 08:30:36 EST 2010
User development,
A new message was posted in the thread "How can I force a particular WS implementation? How to ensure Metro over Native?":
http://community.jboss.org/message/522508#522508
Author : Jan Uhlir
Profile : http://community.jboss.org/people/espinosa_cz
Message:
--------------------------------------------------------------
Yes it is definitively possible to deploy a Metro based web service to a JBoss with Native stack or without any WS support at all.
Yes it is definitively possible to deploy a project using two or more WS stack implementations.
I have just finished this example project proving it. You are more then welcome to test it:
http://gitorious.org/esp-home/wsarena3/trees/version1
Steps to deploy Metro based web service to a hosting AS in a target implementation agnostic way:
* Package libraries to WAR: sun-jaxws:jaxws-rt, sun-jaxws:streambuffer, sun-jaxws:stax-ex (Maven naming)
* Generate WSDL and server Java stubs (hosting AS will not do it for you) and bundle them. Use CLI, Ant or Maven tools: wsgen.
* In web.xml define FooService servlet as a com.sun.xml.ws.transport.http.servlet.WSServlet class. Also set servlet/service URL pattern.
* In sun-jaxws.xml define a real implementation class for FooService, it is esp.home.wsarena.service.FooService in my case, and define service URL pattern (t is already defined in web.xml!? Rather keem them same)
There are 2 modules in my project - *webservice-metro* and *webservice-native*. One using SUN Metro stack (bundled in), other JBoss native stack (expected to be provided by server). Both deploy on the server at the same time successfully. I did not put them in one EAR, there should be no difference. Service implementation is in separate JAR module, the same identical JAR is included into both native and metro WAR packages. There is aslo a simple test client to prove functionality of both modules.
You are welcome to try them as:
http://localhost:8080/wsarena3-*metro*/FooService?wsdl
http://localhost:8080/wsarena3-*native*/FooService?wsdl
The question remains – how JBoss recognized that FooService in my webservice-metro module is intended to be run as Metro and not a Native? Why JBoss reacted on annotated FooService in webservice-metro modue and not on the very same class in my webservice-native module?
Possible answers:
A) it detects presence of jaxws libraries (how? Some specific class or a Jar name?)
B) it detects presence of jaxws configuration file the sun-jaxws.xml (is it a simple file detection? Or it does deepr context analysis looking for present class names?)
C) both above
I am very keen to know the answer.
--------------------------------------------------------------
To reply to this message visit the message page: http://community.jboss.org/message/522508#522508
More information about the jboss-user
mailing list