Posted on November 23, 2010Bymkyong
2. sun-jaxws.xml
Create a web service deployment descriptor, which is also known asJAX-WS RI deployment descriptor– 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>
When user access/hello/URL path, it will fire the declared web service, which isHelloWorldImpl.java.
Note
For detail endpoint attributes , see thisarticle.
3. web.xml
![tomcat下使用jax-ws的RI环境 jaxws](http://img.aihuau.com/images/31101031/31011833t016a49fa17f1c016f8.jpg)
Create a standard web.xmldeployment descriptorfor the deployment. DefinesWSServletContextListeneras listener class,WSServletas your hello servlet.
File : 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 Content
Use Ant, Maven or JAR command to build a WAR file to include everything inside. The WAR content should look like this :
WEB-INF/classes/com/mkyong/ws/HelloWorld.classWEB-INF/classes/com/mkyong/ws/HelloWorldImpl.classWEB-INF/web.xmlWEB-INF/sun-jaxws.xml
Note
For those who are interested, here’s the Ant file to build this project and generate the WAR file.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. JAX-WS Dependencies
By default, Tomcat does not comes with anyJAX-WS dependencies, So, you have to include it manually.
1. Go herehttp://jax-ws.java.net/.
2. Download JAX-WS RI distribution.
3. Unzip it and copy following JAX-WS dependencies to Tomcat library folder “{$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. Deployment
Copy the generatedWARfile to{$TOMCAT}/webapps/folder and start the Tomcat server.
For testing, you can access this URL :http://localhost:8080/HelloWorld/hello, if you see following page, it means web services are deploy successfully.