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

来源:互联网 发布:录音软件 比特率 编辑:程序博客网 时间:2024/05/16 09:20

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:3410  *11  */12 //使用@WebService注解标注WebServiceI接口13 @WebService14 public interface HelloWS {15     16     //使用@WebMethod注解标注WebServiceI接口中的方法17     @WebMethod18     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 @WebService13 public class HelloWSImpl implements HelloWS{14 15     @Override16     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__D10  * @date 2017年7月28日 上午11:40:4811  *12  */13 public class ServerTest {14 15     public static void main(String[] args) {16         17         //定义WebService的发布地址,这个地址就是提供给外界访问Webervice的URL地址,URL地址格式为:http://ip:端口号/xxxx18         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:2410  *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,如下:
      

转载地址:http://www.cnblogs.com/h--d/p/7249260.html