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;

目录结构如下:

WebService之HelloWorld_第1张图片

B)配置WebService。

这里使用的JAX-WS,为了方便部署发布,需要一些依赖包。将下面的依赖包放入”/WEB-INF/lib“目录下。

  • jaxb-impl.jar
  • jaxws-api.jar
  • jaxws-rt.jar
  • jsr181-api.jar
  • gmbal-api-only.jar
  • management-api.jar
  • ha-api.jar
  • stax-ex.jar
  • streambuffer.jar
  • policy.jar
上述包位于jaxws工程的lib目录下,在 http://jax-ws.java.net/可以下载得到。


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;
	}

}


2、部署WebService

通过第一步,我们已经完成了一个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文件则表示发布成功。

WebService之HelloWorld_第2张图片

至此为止,Web方式发布WebService已经成功。


参考文献:

Deploy JAX-WS web services on Tomcat

http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat/

你可能感兴趣的:(WebService之HelloWorld)