java学习笔记之webservice(一)-入门实例,自定义webservice服务

来源:互联网 发布:特色课程优化基本设想 编辑:程序博客网 时间:2024/05/27 19:26


1    WebService是用来做什么?

WebService是一种跨编程语言和跨操作系统知识库"操作系统平台的远程调用技术。用于网络通信,多台机器之间的数据交互。

 

2    与socket的区别

1. socket是在网络中的数据传输层,采用的是TCP/UDP协议,webservice是属于应用层,采用的是http协议

2. socket建立是长连接,webservice建立的是短连接(调用服务时建立连接,调用完毕后断开连接)

 

3    WebService入门实例

3.1  定义服务

a). 定义服务的接口:

package com.beauxie.webservice;import javax.jws.WebService;/** * 定义服务的接口 * @author Beauxie * */@WebService//此注解用在类上指定将此类发布成一个WebServicepublic interface Speaker {  String sayHello(String name);}

b). 创建实现这个接口的实现类:

package com.beauxie.webservice;import javax.jws.WebService;/** * 定义服务的实现类 * @author Beauxie */@WebService(endpointInterface="com.beauxie.webservice.Speaker")public class Person implements Speaker {public String sayHello(String name) { return "Hello,"+name;}}

注意:接口和实现类中必须用@WebService注解,并且在实现类的注解中必须指定endpointInterface属性的值为接口的全限定名

3.2  发布服务

package com.beauxie.webservice;import javax.xml.ws.Endpoint;/** * 发布服务 * @author Beauxie */public class Service {public static void main(String[] args){//1.定义发布的地址String url = "http://localhost:8080/demo";//2.发布服务//第一个参数是指定你要发布的地址,第二个参数是你要发布的服务对象Endpoint.publish(url, new Person());System.out.println("服务器已启动");}}
运行程序进行发布,运行结果:

 




然后打开浏览器访问http://localhost:8080/demo?wsdl,只要在客户端浏览器能看以下WSDL文档,说明服务发布成功:













3.3  客户端去调用服务

如果是内部系统之间的调用,那么提供2个信息就可以调用webservice:

1. wsdl的地址

2. 接口文件(jar包)

package com.beauxie.webservice;import java.net.URL;import javax.xml.namespace.QName;import javax.xml.ws.Service;/** * 客服端调用 * @author Beauxie * */public class Client {public static void main(String[] args) throws Exception {//1.声明所发布的服务对应的wsdl地址URL url=new URL("http://localhost:8080/demo?wsdl");//2.声明所要调用的QnameQName qname=new QName("http://webservice.beauxie.com/", "PersonService");//3.创建客户端的服务代理对象Service service=Service.create(url,qname);Speaker speaker = service.getPort(Speaker.class);//4.调用服务的方法String str=speaker.sayHello("Beauxie");System.out.println(str);}}
运行结果:


 

附:QName中两个参数所对应wsdl文档中参数:












其实可以直接访问http://localhost:8080/demo,但由于自己的电脑原因,无法访问,所以只能访问wsdl地址了。


》》未完待续,接下一篇


1 0
原创粉丝点击