一、开发前部署
如果要在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
1. package org.xiazdong.ws;
2. import javax.jws.*;
3. @WebService
4. public interface TempConvert{
5. @WebMethod int f2c(int i);
6. @WebMethod int c2f(int i);
7.
8. }
2.编写SIB
1. package org.xiazdong.ws;
2. import javax.jws.*;
3. @WebService(endpointInterface="org.xiazdong.ws.TempConvert")
4.
5. public class TempConvertImpl implements TempConvert{
6. public int f2c(int i){
7. return i-5;
8. }
9. public int c2f(int i){
10. return i+5;
11. }
12. }
3.编译以上两个文件;
javac -d . *.java
4.通过wsgen工具生成类型
wsgen -cp . org.xiazdong.ws.TempConvertImpl
5.编写web.xml
1. <?xml version="1.0" encoding="UTF-8"?>
2.
3. <web-app xmlns="http://java.sun.com/xml/ns/javaee"
4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
6. version="2.5">
7.
8. <listener>
9. <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
10. </listener>
11. <servlet>
12. <servlet-name>TimeServerWS</servlet-name>
13. <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
14. </servlet>
15. <servlet-mapping>
16. <servlet-name>TimeServerWS</servlet-name>
17. <url-pattern>/ws</url-pattern>
18. </servlet-mapping>
19. </web-app>
6.编写sun-jaxws.xml
1. <?xml version="1.0" encoding="UTF-8"?>
2. <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
3. <endpoint
4. name="TimeServerWS"
5. implementation="org.xiazdong.ws.TempConvertImpl"
6. url-pattern="/ws"/>
7. </endpoints>
7.把这些文件按照上图目录的排版排列;
最后输入http://localhost:8080/ws/ws?wsdl看是否存在wsdl,如果存在,则说明部署正确;
三、调用服务
1.使用wsimport工具
wsimport -keep -p client http://localhost:8080/ws/ws?wsdl
生成服务的代码;
2.编写调用客户端
1. import client.*;
2. public class TimeClient{
3. public static void main(String args){
4. TempConvertImplService service = new TempConvertImplService();
5. TempConvert c = service.getTempConvertImplPort();
6. System.out.println(c.f2C(5));
7. }
8. }