MyEclipse 开发WebService接口

查看了网上的各类用Java开发WebService接口的方法,有些麻烦而且行不通,自己实践后,将实践过程记录如下,以备以后之用。

一、服务端发布WebService接口

1、在Myeclipse中,选择File->new->Web Service Project,然后输入项目名称,框中内容按如下所示选择即可,然后点击next。

MyEclipse 开发WebService接口MyEclipse 开发WebService接口MyEclipse 开发WebService接口

2.点击next后,出现如下画面:

MyEclipse 开发WebService接口MyEclipse 开发WebService接口MyEclipse 开发WebService接口

3、再点击next,勾选两个框。

MyEclipse 开发WebService接口MyEclipse 开发WebService接口MyEclipse 开发WebService接口

4、点击2次next后出现如下界面,勾选所有框

MyEclipse 开发WebService接口

MyEclipse 开发WebService接口

MyEclipse 开发WebService接口

5、点击Finish完成后。在该项目上的Java Build Path,选择Libraries标签,点击Add Libirary,在弹出框中,选择MyEclipse Library,如下图所示:

MyEclipse 开发WebService接口MyEclipse 开发WebService接口MyEclipse 开发WebService接口

6、点击next后,在弹出框中选择JAX-WS 2.1 Libraries,并点击Finish,检查Libraries标签中是否已经添加上了刚添加的Lib

MyEclipse 开发WebService接口MyEclipse 开发WebService接口


7、 在下面这个页面上全部勾选:

MyEclipse 开发WebService接口MyEclipse 开发WebService接口

8、在TestServiceDemo/src目录下,新建如下图结构的类: 

MyEclipse 开发WebService接口MyEclipse 开发WebService接口MyEclipse 开发WebService接口

其中IServiceHello类为接口,ServiceHelloImpl类为实现,具体代码如下:

IServiceHello类:

  1. package com.mf5.app.service;  
  2.   
  3. public interface IServiceHello   
  4. {  
  5.       
  6.     public String sayHello();  
  7.   
  8.     public String sayHelloName(String name);  
  9. }  

ServiceHelloImpl类:
  1. package com.mf5.app.serviceimpl;  
  2.   
  3. import javax.jws.WebMethod;  
  4. import javax.jws.WebService;  
  5. import javax.jws.soap.SOAPBinding;  
  6.   
  7. import com.mf5.app.service.IServiceHello;  
  8.   
  9. @WebService(targetNamespace="http://demo.webservice",name="Hello")  
  10. @SOAPBinding(style=SOAPBinding.Style.RPC)  
  11. public class ServiceHelloImpl implements IServiceHello  
  12. {  
  13.     public final String str = "WebService服务器返回消息...";  
  14.       
  15.     @WebMethod  
  16.     public String sayHello()  
  17.     {  
  18.         return str+"Hello!";  
  19.     }  
  20.     @WebMethod   
  21.     public String sayHelloName(String name)  
  22.     {  
  23.         return str+name;  
  24.     }  
  25. }  

9、在WEB-INF目录下,新建一个文件,名称为:sun-jaxws.xm,其中内容如下:
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">  
  3.     <endpoint name="IServiceHello"   
  4.             implementation="com.mf5.app.serviceimpl.ServiceHelloImpl"   
  5.             url-pattern="/testservice">           
  6.     </endpoint>  
  7. </endpoints>  

10、在web.xml文件中,在 <display-name>TestServiceDemo</display-name>  下面添加如下代码:注意的是,在sun-jaxws.xm中的url-pattern的值与web.xml中的servlet-mapping中映射的url-pattern的值必须是一样的。

  1. <listener>    
  2.       <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>    
  3.   </listener>   
  4.     
  5.   <servlet>    
  6.     <servlet-name>testservice</servlet-name>    
  7.     <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>    
  8.     <load-on-startup>1</load-on-startup>    
  9.   </servlet>  
  10.          
  11.   <servlet-mapping>    
  12.     <servlet-name>testservice</servlet-name>    
  13.     <url-pattern>/testservice</url-pattern>    
  14.   </servlet-mapping>  


11、可将TestServiceDemo部署在Myeclipse自带的Tomcat中,并启动tomcat服务器。启动成功后,访问: http://localhost:8080/TestServiceDemo/testservice,如果出现如下页面,则说明WebService部署成功。

MyEclipse 开发WebService接口MyEclipse 开发WebService接口

点击页面中的WSDL连接地址,访问的是该WebService的wsdl文件内容:

MyEclipse 开发WebService接口

MyEclipse 开发WebService接口


二、在Myeclipse上编写客户端,访问接口

1、同样新建一个Web Service Project工程,名字为TestClient。

2、打开cmd命令,进入到项目的src目录下,输入以下命令:

wsimport  -keep http://localhost:8080/TestServiceDemo/testservice?wsdl

MyEclipse 开发WebService接口MyEclipse 开发WebService接口MyEclipse 开发WebService接口

回车后就会将wsdl上的接口信息生成java类文件,放在src目录下。

3、刷新项目,可看到src目录下有新文件生成。

MyEclipse 开发WebService接口MyEclipse 开发WebService接口

4、编写DemoTest类,测试是否能调用接口。代码如下:

  1. package com.mf5.test;  
  2.   
  3. import webservice.demo.Hello;  
  4. import webservice.demo.ServiceHelloImplService;  
  5.   
  6. public class DemoTest  
  7. {  
  8.     public static void main(String[] args)   
  9.     {  
  10.             //创建一个用于产生WebServiceImpl实例的工厂,WebServiceImplService类是wsimport工具生成的  
  11.         ServiceHelloImplService factory = new ServiceHelloImplService();  
  12.         //通过工厂生成一个WebServiceImpl实例,WebServiceImpl是wsimport工具生成的  
  13.         Hello wsImpl = factory.getHelloPort();  
  14.         //调用WebService的sayHello方法  
  15.         String resResult = wsImpl.sayHello();  
  16.         System.out.println("调用WebService的sayHello方法返回的结果是:"+resResult);  
  17.         System.out.println("---------------------------------------------------");  
  18.         //调用WebService的sayHelloName方法  
  19.         resResult = wsImpl.sayHelloName("孤傲苍狼");  
  20.         System.out.println("调用WebService的save方法返回的结果是:"+resResult);  
  21.     }  
  22. }  

5、运行该DemoTest,检查console如下结果,为成功访问接口。

MyEclipse 开发WebService接口MyEclipse 开发WebService接口