WebService概念
webService就是一个应用程序,他提供一种web方式访问的api,是解决两个系统(或者应用程序)之间的远程调用。 是跨语言,跨拼台的 webService 的基本组成部分就是 服务端 和客户端。
WebService 的例子应用
服务端:(作为服务端,怎么将自己的应用程序发布成一个webservice,让别人调用)
我们需要了解的俩个概念是 xml ,wdl,soap
xml (webservice的客户端与服务端进行交互的时候传递的数据格式)
webservice description language(web 服务描述语言.. api)xml,简称wsdl
soap(简单对象访问协议) webservice的客户端与服务端进行交互的时候走的协议
(soap 分两个版本(soap 1.1 与soap1.2)),现在的本是soap1.1,因为java jdk 只支持soap1.1版本的协议发布..
***** soap 协议=在http 的基础之上传送xml 格式的数据..
发布服务:
第一种是通过 Java jdk 自带的类可以将 java引用程序发布成webservice ,那个类及Endpoint.publish("http://192.168.2.120:9999/helloService",new HelloServiceimpl()); //第一个参数是对外提供访问的地址,第二个是提供服务的类的对象。
这类是Javax扩展包提供的,但是要求jdk 版本必须在1.6.0_21之上。
//发布服务的类
packagecom.shl.server;
importjavax.xml.ws.Endpoint;
publicclass PbulisServer {
/**
*
* @param args
*/
publicstaticvoid main(String[] args) {
//java jdk 提供一个自带的类可以将 java引用程序发布成webservice ,那个类及
Endpoint.publish("http://192.168.2.120:9999/helloService",new HelloServiceimpl()); //第一个参数是对外提供访问的地址,第二个是提供服务的类的对象。
}
}
//提供服务的类
packagecom.shl.server;
importjavax.jws.WebService;
@WebService
publicclass HelloServiceimpl {
publicvoid doublekill(){
System.out.println("发布服务测试");
}
}
注意:1,endpoint是java jdk 提供的类,用来发布webservice,所以你的jdk 版本必须在1.6.0_21之上..
2,被发布的类当中必须包含一个有效(方法必须为publish的非静态的,非final的方法)的方法
3,被发布的类上面必须有 @WebService 注解是javax.jws.WebService 提供的。
客户端:
(作为客户端,怎么调用别人发布的webservice)
调用服务:我们可以通过java jdk 自带的一个命令 wsimport 根据服务端说明书(wsdl)生成本地的java 代码
我们直接操作这些java 代码,就可以调用webservice
Wsimport 的使用格式:
wsimport -d . +服务说明书(wsdl)的地址 生成本地的class 文件
wsimport -s . +服务说明书(wsdl)的地址 生成本地的class 文件与java文件
wsimport -s . -p(包名)+服务说明书(wsdl)的地址 生成本地的class 文件与java文件
注意:
1. 通过 f: 切换到f盘 在运行上面的命令 f盘的根目录自动生成客户端代码 以及class文件 class文件是用来部署的 , 但是客户端有修改时 还要通过javac 要编译类 命令 对修改的类重新编译。
2. 将生成的客户端文件夹 复制到客户端的项目中的src 目录下 项目目录结构
客户端调用接口的类 本例 接口的类是实现类是
packagecom.shl.client.juyujdkwebservice;
importcom.shl.server.HelloServiceimpl;
importcom.shl.server.HelloServiceimplService;
/**
* 既然我们可以操作生成java代码,就可通过生成的java代码来调用webservice服务;
* @author shenhl
*
*/
publicclass InvokeHelloService {
publicstaticvoid main(String[] args) {
//第一步想要调用接口首先要找到接口,由于接口无法直接调用所以获取接口的实现类
HelloServiceimplService helloServiceimplService = new HelloServiceimplService();
HelloServiceimpl helloServiceimpl = helloServiceimplService.getHelloServiceimplPort();
String resouce = helloServiceimpl.doublekill("111");
System.out.println(resouce);
}
}
End 第一种方法服务端看和客户端配置完成 亲测-------