基于javaJDK 的WebService开发服务端和客户端

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 第一种方法服务端看和客户端配置完成  亲测-------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值