Je possède une application de service web JAX-WS qui se déploie comme un fichier WAR pour Tomcat 7. Elle utilise une version récente des bibliothèques Metro, que j'inclus à l'intérieur du fichier WAR, et cela fonctionne très bien.
Je cherche à simplifier le package de déploiement. Je comprends que le JDK Sun inclut une copie de Metro (voir cette question et celle-ci par exemple), cependant, pour une raison inconnue, il semble être obligatoire de remplacer cette copie de Metro par une téléchargée depuis le site glassfish. J'essaie de comprendre s'il est possible de se passer uniquement de Tomcat et de l'implémentation de Metro fournie avec le JDK, ou non et pourquoi.
Les contenus du WAR sont les suivants (fichiers de classe retirés) :
META-INF/MANIFEST.MF
WEB-INF/classes/
WEB-INF/classes/com/[et cetera]
WEB-INF/ibm-web-ext.xml
WEB-INF/lib/
WEB-INF/lib/stax-api.jar
WEB-INF/lib/webservices-api.jar
WEB-INF/lib/webservices-extra-api.jar
WEB-INF/lib/webservices-extra.jar
WEB-INF/lib/webservices-rt.jar
WEB-INF/lib/webservices-tools.jar
WEB-INF/sun-jaxws.xml
WEB-INF/web.xml
wsdl/
wsdl/MyService.wsdl
web.xml
contient en partie:
MyService
com.sun.xml.ws.transport.http.servlet.WSServlet
Lorsque je supprime les jars webservices-* - les jars Metro - du WAR, le service web échoue avec l'erreur "Le Wrapper ne peut pas trouver la classe de servlet com.sun.xml.ws.transport.http.servlet.WSServlet ou une classe sur laquelle elle dépend". Ce n'est pas surprenant car je ne trouve pas cette classe nulle part dans les jars fournis avec Java 7 SE.
Alors, que signifie-t-il de dire que Java 7 est livré avec Metro, si vous devez télécharger une autre copie de Metro pour faire fonctionner quelque chose comme ça? Est-il possible de faire fonctionner un service web JAX-WS dans Tomcat en utilisant uniquement les jars fournis avec Java?