JDK6下开发WebService

 周末闲来无事,在家中复习了一下JDK6下开发WebService的知识,为了加强印象,特此记录。
一、       样例开发环境
Java6开始,JDK中已经支持用Java开发WebService应用了,不必选用第三方包。
软件及其版本
JDK1.6.0_25
Eclipse3.4.2 JavaEE
  二、       样例工程结构
JDK6下开发WebService
(1)服务端com.ws.server(手工编写)
(2) 客户端com.ws.client(自动生成)
(3) 客户端调用com.ws.client.test(手工编写)。
 三        样例开发过程
1、新建Dynamic Web Project
2、编写服务代码
package com.ws.server;
import javax.jws.WebService;
@WebService
public class HelloService {
	public String sayHello(String username) {
		return "hello," + username + "! This is HelloService!";
	}
}
3、发布服务,在本例中使用Servlet发布服务
package com.ws.server;
import java.io.IOException;
import java.io.Writer;
import javax.servlet.GenericServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.xml.ws.Endpoint;
public class HelloServicePublisher extends GenericServlet {

	@Override
	public void init(ServletConfig config) throws ServletException {
		super.init(config);
		System.out
				.println("准备启动WebService-->http://192.168.1.103:8088/WS_Java6/HelloService");
		// 发布一个WebService
		Endpoint.publish("http://192.168.1.103:8088/WS_Java6/HelloService",
				new HelloService());
		System.out
				.println("成功启动WebService-->http://192.168.1.103:8088/WS_Java6/HelloService");

	}
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		response.setCharacterEncoding("GBK");
		Writer wr = response.getWriter();
		wr
				.write("<a href='http://192.168.1.103:8088/WS_Java6/HelloService?WSDL'>点击访问WSDL</a>");
		wr.close();
	}
}
4、生成客户端
Java6 提供了生成 WebService 客户端代码的工具wsimport.exe,只需在命令行输入一句简单的命令就可以生成客户端代码。需要 注意的是,在生成客户端前前需要先启动服务端。如果已经在启动,就不需要重新启动。
JDK6下开发WebService
-p参数指定生成的代码所要放置的包
在生成的客户端中有一个java文件的名字是由服务端的类名加上一个Service组成的,这个xxxService我们可以把它看做是 WebService 的一个代理类,在客户端我们通过这个代理类来调用服务。
5、编写客户端调用服务的代码
package com.ws.client.test;
import com.ws.client.HelloService;
import com.ws.client.HelloServiceService;
public class ClientTest {
	public static void main(String[] args) {
		// 创建一个客户端服务对象
		HelloService helloService = new HelloServiceService()
				.getHelloServicePort();
		// 调用服务方法,并得到方法返回值
		String returnContent = helloService.sayHello("张三");
		// 打印服务的返回值
		System.out.println(returnContent);
	}
}
6、运行测试代码
  
 

你可能感兴趣的:(webservice)