Voici un guide pour vous montrer comment déployer des services Web JAX-WS sur un conteneur de servlets Tomcat . Voir les étapes récapitulatives suivantes d’un déploiement de service Web.
-
Créez un service Web (bien sûr).
-
Créez un fichier sun-jaxws.xml , qui définit la classe d’implémentation du service Web.
-
Créer un web.xml standard, définit
WSServletContextListener,
WSServlet
et la structure d’un projet Web.
-
Outil de construction pour générer un fichier WAR.
-
Copiez les dépendances JAX-WS dans le dossier “$ \ {Tomcat}/lib”.
-
Copiez WAR dans le dossier “$ \ {Tomcat}/webapp”.
-
Commencez-le.
Structure de répertoire de cet exemple, afin que vous sachiez où placer vos fichiers.
1. WebServices
Un exemple simple du monde JAX-WS hello.
File: HelloWorld.java
package com.mkyong.ws;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
//Service Endpoint Interface
@WebService
@SOAPBinding(style = Style.RPC)
public interface HelloWorld{
@WebMethod String getHelloWorldAsString();
}
File: HelloWorldImpl.java
package com.mkyong.ws;
import javax.jws.WebService;
//Service Implementation Bean
@WebService(endpointInterface = "com.mkyong.ws.HelloWorld")
public class HelloWorldImpl implements HelloWorld{
@Override
public String getHelloWorldAsString() {
return "Hello World JAX-WS";
}
}
Plus tard, vous déploierez ce service Web Hello World sur Tomcat.
2. sun-jaxws.xml
Créez un descripteur de déploiement de service Web, également appelé descripteur de déploiement RI JAX-WS - sun-jaxws.xml.
File: sun-jaxws.xml
<?xml version="1.0" encoding="UTF-8"?>
<endpoints
xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
version="2.0">
<endpoint
name="HelloWorld"
implementation="com.mkyong.ws.HelloWorldImpl"
url-pattern="/hello"/>
</endpoints>
Lorsque l’utilisateur accède à
/hello/
URL path, il déclenche le service Web déclaré, qui est
HelloWorldImpl.java
.
3. web.xml
Créez un descripteur de déploiement web.xml standard pour le déploiement.
Définit
WSServletContextListener
en tant que classe d’écoute,` WSServlet` en tant que votre servlet hello.
Fichier: web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,
Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app__2__3.dtd">
<web-app>
<listener>
<listener-class>
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>
com.sun.xml.ws.transport.http.servlet.WSServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>120</session-timeout>
</session-config>
</web-app>
4. Contenu WAR
Utilisez les commandes Ant, Maven ou JAR pour créer un fichier WAR incluant tout ce qu’il contient. Le contenu de WAR devrait ressembler à ceci:
WEB-INF/classes/com/mkyong/ws/HelloWorld.class WEB-INF/classes/com/mkyong/ws/HelloWorldImpl.class WEB-INF/web.xml WEB-INF/sun-jaxws.xml
-
Note ** + Pour ceux qui sont intéressés, voici le fichier Ant pour construire ce projet et générer le fichier WAR.
File: build.xml
<project name="HelloWorldWS" default="dist" basedir=".">
<description>
Web Services build file
</description>
<!-- set global properties for this build -->
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="dist" location="dist"/>
<property name="webcontent" location="WebContent"/>
<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Create the build directory structure used by compile -->
<mkdir dir="${build}"/>
</target>
<target name="compile" depends="init"
description="compile the source " >
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}"/>
</target>
<target name="war" depends="compile"
description="generate the distribution war" >
<!-- Create the war distribution directory -->
<mkdir dir="${dist}/war"/>
<!-- Follow standard WAR structure -->
<copydir dest="${dist}/war/build/WEB-INF/" src="${webcontent}/WEB-INF/"/>
<copydir dest="${dist}/war/build/WEB-INF/classes/" src="${build}"/>
<jar jarfile="${dist}/war/HelloWorld-${DSTAMP}.war" basedir="${dist}/war/build/"/>
</target>
</project>
5. Dépendances JAX-WS
Par défaut, Tomcat n’est livré avec aucune dépendance de JAX-WS , vous devez donc l’inclure manuellement.
{vide} 1. Allez ici http://jax-ws.java.net/ . 2. Téléchargez la distribution RI JAX-WS. 3. Décompressez-le et copiez les dépendances JAX-WS suivantes dans le dossier de la bibliothèque Tomcat « \ {$ TOMCAT}/lib ».
-
jaxb-impl.jar
-
jaxws-api.jar
-
jaxws-rt.jar
-
gmbal-api-only.jar
-
management-api.jar
-
stax-ex.jar
-
streambuffer.jar
-
policy.jar
6. Déploiement
Copiez le fichier WAR généré dans le dossier \ {$ TOMCAT}/webapps/ et démarrez le serveur Tomcat.
Pour le test, vous pouvez accéder à cette URL:
http://localhost : 8080/HelloWorld/hello , si vous voyez la page suivante, cela signifie que les services Web sont déployés avec succès.
Télécharger le code source
Téléchargez-le - lien://wp-content/uploads/2010/11/JAX-WS-Deploy-To-Tomcat-Example.zip[JAX-WS-Deploy-To-Tomcat-Example.zip](13 Ko)
Référence
-
http://jax-ws.java.net/nonav/2.1.4/docs/jaxws-war.html [JAX-WS Fichier WAR
Emballage]. http://jax-ws.java.net/guide/Deploying Metro endpoint.html[Deploying
Point de terminaison Metro]. http://weblogs.java.net/blog/kohlert/archive/2006/01/publishing a re.html[Publishing
un service Web RESTful avec JAX-WS]
lien://tag/deploy/[deploy]lien://tag/jax-ws/[jax-ws]lien://tag/tomcat/[tomcat]