加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

发布第一个WebService

发布时间:2020-12-17 00:01:14 所属栏目:安全 来源:网络整理
导读:1,在JDK1.6中JAX-WS规范定义了如何发布一个WebService服务。 JAX-WS是指:Java API Base XML for WebService. 所以必须使用 JDK1.6 以后的版本才可以。 可以参看JAX-WS白皮书。(皮儿是白的,所以是白皮书。。。。。。 -_-#) 白皮书中的推荐开发步骤: (1)

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代码,并覆盖之前工程中的代码,并实现。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读