• 【WebService】使用JDK开发WebService(二)


    WebService的开发手段

      1、使用JDK开发(1.6及以上版本)

      2、使用CXF框架开发(工作中)

    WebService的组成

      1、服务器端

      2、客户端

    使用JDK开发WebService

      a、开发WebService服务端

        1、使用eclipse新建一个服务端java工程
        

        2、新建一个接口,使用@WebService(SEI和SEI的实现类)注解标注接口,使用@WebMethod(SEI中的所有方法)注解标注接口中定义的所有方法,如下:      

     1 package com.test.ws;
     2 
     3 import javax.jws.WebMethod;
     4 import javax.jws.WebService;
     5 
     6 /**
     7  * 定义SEI(WebService EndPoint Interface)终端
     8  * @author H__D
     9  * @date 2017年7月28日 上午11:35:34
    10  *
    11  */
    12 //使用@WebService注解标注WebServiceI接口
    13 @WebService
    14 public interface HelloWS {
    15     
    16     //使用@WebMethod注解标注WebServiceI接口中的方法
    17     @WebMethod
    18     public String sayHello(String name);
    19     
    20 }

        3、编写一个接口实现类,使用@WebService注解标注实现类,如下:

     1 package com.test.ws;
     2 
     3 import javax.jws.WebService;
     4 
     5 /**
     6  * SEI的具体实现
     7  * @author H__D
     8  * @date 2017年7月28日 上午11:37:43
     9  *
    10  */
    11 //使用@WebService注解标注
    12 @WebService
    13 public class HelloWSImpl implements HelloWS{
    14 
    15     @Override
    16     public String sayHello(String name) {
    17         System.out.println("WebService sayHello : " + name);
    18         return "Hello : " + name;
    19     }
    20 }

        4、使用Endpoint(终端)类发布webservice,如下:

     1 package com.test.ws.server;
     2 
     3 import javax.xml.ws.Endpoint;
     4 
     5 import com.test.ws.HelloWSImpl;
     6 
     7 /**
     8  * 发布Web Service
     9  * @author H__D
    10  * @date 2017年7月28日 上午11:40:48
    11  *
    12  */
    13 public class ServerTest {
    14 
    15     public static void main(String[] args) {
    16         
    17         //定义WebService的发布地址,这个地址就是提供给外界访问Webervice的URL地址,URL地址格式为:http://ip:端口号/xxxx
    18         String address = "http://127.0.0.1:8989/test-webservice/hellows";
    19         //使用Endpoint类提供的publish方法发布WebService,发布时要保证使用的端口号没有被其他应用程序占用
    20         Endpoint.publish(address, new HelloWSImpl());
    21         System.out.println("发布webservice成功!");
    22         
    23     }
    24 }

        5、运行SeverTest类的main方法,使用浏览器进行访问,访问地址:http://127.0.0.1:8989/test-webservice/hellows,如下:
          控制他输出:
          
          网页访问:
          

        6、使用Eclipse的Web Services Explorer,测试访问WebService,其中要输入wsdl地址(一般是发布的WebService的Endpoint后面加上'?wsdl'):
          
          
          

        7、查看发送消息和响应消息的具体内容,在Eclipse的Web Services Explorer模块中的Status中,点击Source如下:
          
          然后在请求框中查看源,同理在响应框中查看源,可以看到发送的请求消息和响应消息
          
          请求消息

    1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://ws.test.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    2   <soapenv:Body>
    3     <q0:sayHello>
    4       <arg0>tom</arg0>
    5     </q0:sayHello>
    6   </soapenv:Body>
    7 </soapenv:Envelope>

          响应消息

    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
      <S:Body>
        <ns2:sayHelloResponse xmlns:ns2="http://ws.test.com/">
          <return>Hello : tom</return>
        </ns2:sayHelloResponse>
      </S:Body>
    </S:Envelope>

      b、开发WebService客户端

        1、使用eclipse新建一个客服端java工程
          

        2、使用jdk的wsimort.exe工具生成客户端代码,执行命令:wsimport -keep url(url为wsdl文件的路径)生成客户端代码,wsimort.exe工具位于jdk的bin目录下,如下:
          
          打开命令行窗口,切换到src目录中,执行命令:wsimport -keep http://127.0.0.1:8989/test-webservice/hellows?wsdl,如下:
          
          刷新工程,可以看到代码已经生成,如下
          

        3、编写调用WebService对外提供的方法
          wsimport工具帮我们生成了好几个java类,但我们只需要关心WebServiceImplService类和WebServiceImpl接口的使用即可,如下:

     1 package com.test.ws.client;
     2 
     3 import com.test.ws.HelloWSImpl;
     4 import com.test.ws.HelloWSImplService;
     5 
     6 /**
     7  * 调用WebService的客户端
     8  * @author H__D
     9  * @date 2017年7月28日 下午2:39:24
    10  *
    11  */
    12 public class WSClient {
    13 
    14     public static void main(String[] args) {
    15         //创建一个用于产生WebServiceImpl实例的工厂,WebServiceImplService类是wsimport工具生成的
    16         HelloWSImplService factory = new HelloWSImplService();
    17         //通过工厂生成一个WebServiceImpl实例,WebServiceImpl是wsimport工具生成的
    18         HelloWSImpl helloWS = factory.getHelloWSImplPort();
    19         System.out.println(helloWS.getClass());
    20         
    21         //调用WebService的sayHello方法
    22         String result = helloWS.sayHello("Jack");
    23         System.out.println(result);
    24     }
    25 }

        4、运行main方法,控制台输出,可以看到已经成功调用了WebService,如下:
          


        

  • 相关阅读:
    将迁移学习用于文本分类 《 Universal Language Model Fine-tuning for Text Classification》
    深度 | 提升深度学习模型的表现,你需要这20个技巧(附论文)
    [线性代数] 矩阵白化
    基于搜索的贝叶斯网络结构学习算法-K2
    Deep learning:四十三(用Hessian Free方法训练Deep Network)
    2020年AI、CV、NLP顶会最全时间表
    浅谈人脸识别中的loss 损失函数
    控制uniFrame显示的一个管理类
    php+sqlserver之如何操作sqlserver数据库
    php支持连接sqlserver数据库
  • 原文地址:https://www.cnblogs.com/h--d/p/7249260.html
Copyright © 2020-2023  润新知