JDK1.6 - WebServices

Java6.0之后,JDK自带了一个轻量级的Web Service服务器。

 

因此,使用JDK自带的API,不必担心框架(Axis、Spring WS)升级、更新等系列问题。

 

开发步骤:

1、创建一个WebServer Project

 

package wei.peng.server;

import javax.jws.Oneway;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

/**
 * @author WPeng
 * @time  2011-3-14 AM 12:03:33
 * @email [email protected]
 */
@WebService(targetNamespace = "http://localhost:8888/WEIPENG", 
		serviceName = "HelloServices")
public class WSProvider {
	// 自定义该方法返回值在WSDL中相关的描述
	//@WebResult(name="Greetings")
	
	@WebMethod(action="sya",operationName="sayHi")
	// WebParam是自定义参数name在WSDL中相关描述
	public String sayHi(@WebParam(name="MyName") String name){
		return "Hi, " + name;
	}
	
	// 表明该服务方法是单向的,既没有返回值,也不应该什么检查异常
	@Oneway
	// 自定义方法在WSDL中相关描述
	@WebMethod(action="printSystemTime",operationName="printSystemTime")
	public void printTime(){
		System.out.println(System.currentTimeMillis());
	}
	
	public static void main(String args[]){
		Thread wsPublisher = new Thread(new WSPublisher());
		wsPublisher.start();
	}
	
	private static class WSPublisher implements Runnable{

		@Override
		public void run() {
			
			// 发布WSPublisher到http://localhost:8888/WEIPENG/HelloServices这个地址
			// 之前必须调用wsgen命令,生成服务类HelloServices的支持类,命令如下:
			// wsgen -cp . wei.peng.server.WSProvider
			Endpoint.publish("http://localhost:8888/WEIPENG/HelloServices", new WSProvider());
		}
		
	}
}

在服务器端运用 @WebService @WebMethod 等注释描述生成WSDL文件。

 

进入classes目录,运行

wsgen -cp ./bin -r ./wsdl -s ./src -d ./bin -wsdl wei.peng.server.WSProvider

执行之后会在WSDL文件夹中生成HelloServices的wsdl描述文件,

src文件夹中生成依赖类

bin生成依赖类的class文件

 

2、运行WSProvider

在浏览器打开 

http://localhost:8888/WEIPENG/HelloServices?wsdl

 

3、创建WebClient Project

wsimport -d ./bin -s ./src -p wei.peng.client http://localhost:8888/WEIPENG/HelloServices?wsdl

会在客户端的wei.peng.client目录下生成相关的辅助类文件(便于客户端的调用

共有七个文件:HelloServices.java 

                     ObjectFactory.java 

                     package-info.java 

                     PrintSystemTime.java

                     SayHi.java

                     SayHiResponse.java

                     WSProvider.java

 

4、编写客户端程序

package wei.peng.client.test;

import wei.peng.client.HelloServices;
import wei.peng.client.WSProvider;

public class TestClient {

	public static void main(String[] args) {
		
		HelloServices helloServices = new HelloServices();
		WSProvider wsProvider = helloServices.getWSProviderPort();
		System.out.println(wsProvider.sayHi("wei.peng"));
		wsProvider.printSystemTime();
	}

}
 

 5、运行TestClient

 

 

你可能感兴趣的:(java,spring,jdk,浏览器,webservice)