天天看點

Tomcat部署web服務一、開發前部署二、開發步驟三、調用服務

一、開發前部署

如果要在tomcat下開發web服務,則必須要下載下傳jaxws.zip,下載下傳位址:http://jax-ws.java.net/2.2.5/

如果要建立一個web服務,則需要按照以下目錄方式部署進行:

Tomcat部署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(endpointInter) 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)); } }