【Java】Java中webservice的简单理解

最近到了新公司, 需要开发webservice接口. 以前只开发过http形式的接口, 学习了一些后总结一下发布学习心得

  1. 什么是webservice

    具体的底层是什么不知道, 学习下来自己的理解就是一个client和server之间通过socket通信的方式. server将可以提供的服务接口发布出来, client通过server发布的wsdl得到可以使用的接口代码的处理类, 然后在client中直接将参数传入处理类中, 处理类处理完成将response返回就可以得到接口返回的数据.

  2. 怎么用webservice

    大致的过程是:

    • 新建一个服务器server项目, 项目内新建一个server类, 类需要加注解 @WebService,
    • 然后类里面需要至少一个访问权限为public的方法, 加注解 @WebMethod. 这个方法就是给被人调用的方法
    • 在server中加一个main方法, 用来启动server服务. 其中需要把这个server的位置和可以被访问的对象暴露出去.

      public static void main(String[] argv) {
          Object implementor = new HelloWorld ();
          String address = "http://localhost:9000/HelloWorld";
          Endpoint.publish(address, implementor);
          System.out.println("publish success!");
      }
    • 如上中, HelloWorld相当于一个controller, 可以接受外界请求的类, address就是可以访问的地址. 通过Endpoint的publish来部署webservice. (ps: webservice需要导入包, 相关的包请百度). main方法不能关闭, 相当于一个服务器. 这样server部分结束了.

    • 然后新建一个客户端client项目, 项目内新建一个client类, 然后把刚才server中生成的wsdl拿来生成代码直接调用. 我用的是idea, 可以直接右键生成如下:
      右键最下面找到WebService
      把刚才main方法中的address的最后加上 ?wsdl, 变成 http://localhost:9000/HelloWorld?wsdl , 这个就是生成的webservice, 可以通过浏览器查看里面的内容, 形式是xml.
      填入url中即可
      填入url中确定即可.
    • 不过我用这个方式生成的时候出现了错误, 所以用的是cmd, 用命令生成的.命令如下
      wsimport -s d:\\workspace\\TheClient\\src -p com.test.client -keep http://localhost:9000/HelloWorld?wsdl

    其中, -s后面的是需要代码生成的项目的src路径, -p是新建一个包用来放生成的代码, -keep是将代码的来源, 即之前发布的webservice的地址.
    回车执行后, 提示正在执行代码, 正在编译代码, 然后就OK了. 刷新一下client项目.

    • client项目中新建一个类, 写一个main方法用来测试webservice是否可用

      public static void main(String[] args) {
          HelloWorld helloWorld = new HelloWorldService().getHelloWorldPort();
          System.out.println(helloWorld.sayHelloWorldFrom("paul"));
      }
    • 得到server返回的数据, 测试成功. 这就是webservice的完整的请求和响应的过程.

猜你喜欢

转载自blog.csdn.net/coldfireman/article/details/78183030