Tomcat部署web服务
一、开发前部署
如果要在tomcat下开发web服务,则必须要下载jaxws.zip,下载地址:http://jax-ws.java.net/2.2.5/
如果要创建一个web服务,则需要按照以下目录方式部署进行:
上图中:
lib放置jaxws.zip中的jar包;
classes放置web服务的SIB和SEI(如果是style=document,则还需要wsgen工具生成类型);
sun-jaxws.xml是web服务特定的配置文件;
我们这里WEBROOT假定是ws文件夹;
二、开发步骤
1.编写SEI
package org.xiazdong.ws; import javax.jws.*; @WebService public interface TempConvert{ @WebMethod int f2c(int i); @WebMethod int c2f(int i); }
2.编写SIB
package org.xiazdong.ws; import javax.jws.*; @WebService(endpointInterface="org.xiazdong.ws.TempConvert") public class TempConvertImpl implements TempConvert{ public int f2c(int i){ return i-5; } public int c2f(int i){ return i+5; } }
3.编译以上两个文件;
javac -d . *.java
4.通过wsgen工具生成类型
wsgen -cp . org.xiazdong.ws.TempConvertImpl
5.编写web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
<servlet-name>TimeServerWS</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TimeServerWS</servlet-name>
<url-pattern>/ws</url-pattern>
</servlet-mapping>
</web-app>
6.编写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="TimeServerWS" implementation="org.xiazdong.ws.TempConvertImpl" url-pattern="/ws"/> </endpoints>
7.把这些文件按照上图目录的排版排列;
最后输入http://localhost:8080/ws/ws?wsdl看是否存在wsdl,如果存在,则说明部署正确;
三、调用服务
1.使用wsimport工具
wsimport -keep -p client http://localhost:8080/ws/ws?wsdl
生成服务的代码;
2.编写调用客户端
import client.*; public class TimeClient{ public static void main(String args[]){ TempConvertImplService service = new TempConvertImplService(); TempConvert c = service.getTempConvertImplPort(); System.out.println(c.f2C(5)); } }