Déployer les services Web JAX-WS sur Tomcat

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.

  1. Créez un service Web (bien sûr).

  2. Créez un fichier sun-jaxws.xml , qui définit la classe d’implémentation du service Web.

  3. Créer un web.xml standard, définit WSServletContextListener ,

WSServlet et la structure d’un projet Web.

  1. Outil de construction pour générer un fichier WAR.

  2. Copiez les dépendances JAX-WS dans le dossier “$ \ {Tomcat}/lib”.

  3. Copiez WAR dans le dossier “$ \ {Tomcat}/webapp”.

  4. Commencez-le.

Structure de répertoire de cet exemple, afin que vous sachiez où placer vos fichiers.

jaxws-deploy-tomcat - dossier

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.

jaxws-deploy-tomcat - example

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

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]

Related