1,在JDK1.6中JAX-WS规范定义了如何发布一个WebService服务。
JAX-WS是指:Java API Base XML for WebService.
所以必须使用JDK1.6以后的版本才可以。
可以参看JAX-WS白皮书。(皮儿是白的,所以是白皮书。。。。。。 -_-#)
白皮书中的推荐开发步骤:
(1),创建一个服务端点接口SEI,包含你希望发布的服务方法。在为这个接口开发一个实现类。
(4),发布你的service。
2,实例开发:
(1)发布一个WebService:
这里直接建立一个类,先不提供接口。
/** * 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文档。如下:
至此服务发布成功。
在浏览器中可以看到生成的WSDL文档,根据之前的获取手机号码归属地的案例,可以用同样的方法获取这个WSDL的Java文件。
本来写了一个类,但是产生了好多类。这是根据WSDL文档解析出来的。
(3)编写客户端代码,远程访问服务器提供的sayHello()方法。
将刚生成的包目录结构复制到src下。
在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!!!
至此客户端访问成功。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。