WebService之HelloWorld
前面 《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); } WebService实现类 HelloWorldImpl.java 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> 需要在web.xml中加入一个监听器,用来初始生成Endpoint;以及需要添加WSServlet来响应对service的url访问请求。该WSServlet配置成为响应所有/webService/*开头的url请求,不需要为每个service配置地址,具体的访问地址在sun-jaxws.xml里指定。 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 能看到WSDL文件则表示发布成功。 至此为止,Web方式发布WebService已经成功。 参考文献:
Deploy JAX-WS web services on Tomcat
http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat/
|