In diesem Handbuch erfahren Sie, wie Sie JAX-WS-Webdienste auf dem Tomcat -Servlet-Container bereitstellen. Siehe die folgenden zusammenfassenden Schritte einer Webdienstbereitstellung.
-
Erstellen Sie einen Webservice (natürlich).
-
Erstellen Sie eine sun-jaxws.xml , die die Klasse der Webservice-Implementierung definiert.
-
Erstellen Sie eine Standard web.xml , die den
WSServletContextListener
definiert.
WSServlet
und Aufbau eines Webprojekts.
-
Build-Tool zum Erzeugen einer WAR-Datei.
-
Kopieren Sie die JAX-WS-Abhängigkeiten in den Ordner "$ \ {Tomcat}/lib".
-
Kopieren Sie WAR in den Ordner "$ \ {Tomcat}/webapp".
-
Starten Sie es.
Verzeichnisstruktur dieses Beispiels, damit Sie wissen, wo Sie Ihre Dateien ablegen sollen.
1. WebServices
Ein einfaches JAX-WS-Hallo-Weltbeispiel.
Datei: 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(); }
Datei: HelloWorld Impl.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"; } }
Später werden Sie diesen Hallo-Welt-Webdienst auf Tomcat bereitstellen.
2. sun-jaxws.xml
Erstellen Sie einen Webdienstbereitstellungsdeskriptor, der auch als JAX-WS RI-Implementierungsdeskriptor - sun-jaxws.xml bezeichnet wird.
Datei: 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>
Wenn der Benutzer auf den URL-Pfad /hello/ zugreift, wird der deklarierte Web-Service ausgelöst, der "HelloWorldImpl.java" ist.
3. web.xml
Erstellen Sie einen Standard-Implementierungsdeskriptor von web.xml ** für die Bereitstellung.
Definiert
WSServletContextListener
als Listener-Klasse,` WSServlet` als Hallo-Servlet
Datei: 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. WAR-Inhalt
Verwenden Sie den Befehl Ant, Maven oder JAR, um eine WAR-Datei zu erstellen, die alles enthält. Der WAR-Inhalt sollte folgendermaßen aussehen:
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
-
Hinweis ** + Für Interessierte ist hier die Ant-Datei, um dieses Projekt zu erstellen und die WAR-Datei zu generieren.
Datei: 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>
-
JAX-WS-Abhängigkeiten
Standardmäßig enthält Tomcat keine JAX-WS-Abhängigkeiten . Sie müssen sie daher manuell einschließen.
{leer} 1. Gehen Sie hier http://jax-ws.java.net/ . 2. Laden Sie die JAX-WS RI-Distribution herunter. 3. Entpacken Sie es und kopieren Sie die folgenden JAX-WS-Abhängigkeiten in den Tomcat-Bibliotheksordner „ \ {$ 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. Bereitstellung
Kopieren Sie die generierte WAR -Datei in den Ordner \ {$ TOMCAT}/webapps/ und starten Sie den Tomcat-Server.
Zum Testen können Sie auf diese URL zugreifen:
http://localhost : 8080/HelloWorld/hello . Wenn Sie die folgende Seite sehen, bedeutet dies, dass Webdienste erfolgreich implementiert werden.
Quellcode herunterladen
Download - JAX-WS-Deploy-To-Tomcat-Example.zip (13KB)
Referenz
-
http://jax-ws.java.net/nonav/2.1.4/docs/jaxws-war.html [JAX-WS WAR File
Verpackung]. http://jax-ws.java.net/guide/Deploying Metro endpoint.html[Deploying
Metro-Endpunkt]. http://weblogs.java.net/blog/kohlert/archive/2006/01/veröffentlichen a re.html
ein RESTful Web Service mit JAX-WS]