前面 《WebService学习笔记(一)》中讲述了,怎样开发一个WebService Server端和Client端,通过JDK自带的Endpoint.publish方法发布的WebService(使用JDK自带的一个微型服务器来响应请求),但在Web工程中这种方法使用起来不太好用,真正部署到生产环境时效率也成问题。下面讲述怎样把通过JAX-WS开发的WebService部署到Servlet容器中。
目录:
1、创建WebService。
2、部署WebService。
3、测试WebService。
开发环境: Windows + Eclipse3.7 JEE 版(WTP)
1、创建WebService
A)创建一个动态Web工程。我这里使用的名字叫: helloWorldWeb;
目录结构如下:
B)配置WebService。
这里使用的JAX-WS,为了方便部署发布,需要一些依赖包。将下面的依赖包放入”/WEB-INF/lib“目录下。
C)创建一个WebService。
代码如下:
package org.study.service; import javax.jws.WebParam; import javax.jws.WebService; @WebService public interface HelloWorld { /** * 输入用户名称,返回对用户的问候。 * * @param name 用户名称 * @return 问候语句 */ public String sayHello(@WebParam(name="name")String name); }
package org.study.service; import javax.jws.WebService; @WebService(endpointInterface="org.study.service.HelloWorld", serviceName="HelloWorldService", name="HelloWorld", portName="HelloWorldPort" ) public class HelloWorldImpl implements HelloWorld { public String sayHello(String name) { return "hello, "+name; } }
通过第一步,我们已经完成了一个WebService HelloWorld的定义,该Service含有一个方法,sayHello可供调用。接下来,我们将该service通过Web方式发布到Servlet容器中。
A)修改Web.xml。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>helloWorldWeb</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <listener> <description>web service configuration listener</description> <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class> </listener> <servlet> <description>web service servlet</description> <servlet-name>webService</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>webService</servlet-name> <url-pattern>/webService/*</url-pattern> </servlet-mapping> </web-app>
B)添加web service配置文件;
在web.xml中添加完上述代码之后,只是程序启动的时候能处理配置和访问service了,但是有哪些webservice需要初始化还不知道。因此需要我们配置。
JAX-WS提供了sun-jaxws.xml文件来配置需要发布的service(Endpoint),默认位置与web.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="org.study.service.HelloWorldImpl" url-pattern="/webService/helloWorld"/> </endpoints>
C)启动Web程序
把该工程添加到Tomcat里,点击启动即可。
3 测试WebService
我使用的是Tomcat发布,所以访问地址为:
http://localhost:8080/helloWorldWeb/webService/helloWorld?wsdl
至此为止,Web方式发布WebService已经成功。
参考文献: