发布第一个WebService

1,在JDK1.6中JAX-WS规范定义了如何发布一个WebService服务。

JAX-WS是指:Java API Base XML for WebService.

所以必须使用JDK1.6以后的版本才可以。

可以参看JAX-WS白皮书。(皮儿是白的,所以是白皮书。。。。。。 -_-#)

白皮书中的推荐开发步骤:


(1),创建一个服务端点接口SEI,包含你希望发布的服务方法。在为这个接口开发一个实现类。

(2),为这个实现类添加一个注解:@WebService。

(3),为你的service生成一个WSDL文件。

(4),发布你的service。

 

2,实例开发:

(1)发布一个WebService:

这里直接建立一个类,先不提供接口。

建立一个Java项目,新建一个HelloWorld类。

/**
 * webservice开发步骤:
 * 1,一般是先开发一个接口,并定义希望发布的方法,并为这个接口开发实现类,实现方法。这里直接定义一个类,实现方法的发布。
 * 2,在这个类上添加注解 @WebService
 * 3,为service生成WSDL文档。
 * 4,发布。
 * @author 许智敏
 */
@WebService
public class HelloWorld {
	
	public void sayHello() {
		System.out.println("hello webservice!!!");
	}
	
	public static void main(String[] args) {
		//通过Endpoint发布。
		Endpoint endpoint = null;
		endpoint = 
			Endpoint.publish("http://192.168.0.104:8989/hello", new HelloWorld());
		System.out.println("发布成功");
	}
}

上例中的publish中的第一个参数是url,

其中,前面是服务器的ip,8989是端口号,这个端口号随便定义,后面的hello是服务名,也随便定义。

这就将HelloWorld的sayHello()方法发布到服务中,可以提供远程调用。

在浏览器中输入http://192.168.0.104:8989/hello?wsdl,可以获取生成的WSDL文档。如下:

至此服务发布成功。

 

(2)根据WSDL生成java代码

在浏览器中可以看到生成的WSDL文档,根据之前的获取手机号码归属地的案例,可以用同样的方法获取这个WSDL的Java文件。

本来写了一个类,但是产生了好多类。这是根据WSDL文档解析出来的。

 

(3)编写客户端代码,远程访问服务器提供的sayHello()方法。

新建一个Java工程,模拟两个服务器之间的调用。

将刚生成的包目录结构复制到src下。

新建立一个TestMain测试文件。

在TestMain中远程访问。

分析WSDL文档,根据WSDL文档编写客户端代码。

1).首先要知道new谁,根据文档下方的<service name="HelloWorldService">可知,我们可以new一个HelloWorldService类。

2).在根据下面的port的name,得知new的这个类中存在的一个get方法:

<port name="HelloWorldPort" binding="tns:HelloWorldPortBinding">

可知,在HelloWorldService中一定有一个getHelloWorldPort()方法。

3).调用这个get方法,获取了HelloWorld。这时返回的是HelloWorld接口。也就是根据服务器的HelloWorld类建立的接口,里面有所有的可以调用的方法。

4).通过HelloWorld就可以调用提供的服务sayHello()方法。

public class TestMain {
	public static void main(String[] args) {
		HelloWorldService helloWorldService = new HelloWorldService();
		HelloWorld helloWorld = helloWorldService.getHelloWorldPort();
		helloWorld.sayHello();
	}
}

5).在控制台可以看到打印的信息:

发布成功

hellowebservice!!!

至此客户端访问成功。

 

注意:如果服务器的代码发生了改动,客户端需要重新根据WSDL生成Java代码,并覆盖之前工程中的代码,并实现。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值