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//此注解用在类上指定将此类发布成一个WebService
public 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.声明所要调用的Qname
QName 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地址了。
》》未完待续,接下一篇