查看了网上的各类用Java开发WebService接口的方法,有些麻烦而且行不通,自己实践后,将实践过程记录如下,以备以后之用。
一、服务端发布WebService接口
1、在Myeclipse中,选择File->new->Web Service Project,然后输入项目名称,框中内容按如下所示选择即可,然后点击next。
2.点击next后,出现如下画面:
3、再点击next,勾选两个框。
4、点击2次next后出现如下界面,勾选所有框
5、点击Finish完成后。在该项目上的Java Build Path,选择Libraries标签,点击Add Libirary,在弹出框中,选择MyEclipse Library,如下图所示:
6、点击next后,在弹出框中选择JAX-WS 2.1 Libraries,并点击Finish,检查Libraries标签中是否已经添加上了刚添加的Lib
7、 在下面这个页面上全部勾选:
8、在TestServiceDemo/src目录下,新建如下图结构的类:
其中IServiceHello类为接口,ServiceHelloImpl类为实现,具体代码如下:
IServiceHello类:
- package com.mf5.app.service;
- public interface IServiceHello
- {
- public String sayHello();
- public String sayHelloName(String name);
- }
ServiceHelloImpl类:
- package com.mf5.app.serviceimpl;
- import javax.jws.WebMethod;
- import javax.jws.WebService;
- import javax.jws.soap.SOAPBinding;
- import com.mf5.app.service.IServiceHello;
- @WebService(targetNamespace="http://demo.webservice",name="Hello")
- @SOAPBinding(style=SOAPBinding.Style.RPC)
- public class ServiceHelloImpl implements IServiceHello
- {
- public final String str = "WebService服务器返回消息...";
- @WebMethod
- public String sayHello()
- {
- return str+"Hello!";
- }
- @WebMethod
- public String sayHelloName(String name)
- {
- return str+name;
- }
- }
9、在WEB-INF目录下,新建一个文件,名称为:sun-jaxws.xm,其中内容如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
- <endpoint name="IServiceHello"
- implementation="com.mf5.app.serviceimpl.ServiceHelloImpl"
- url-pattern="/testservice">
- </endpoint>
- </endpoints>
10、在web.xml文件中,在 <display-name>TestServiceDemo</display-name> 下面添加如下代码:注意的是,在sun-jaxws.xm中的url-pattern的值与web.xml中的servlet-mapping中映射的url-pattern的值必须是一样的。
- <listener>
- <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
- </listener>
- <servlet>
- <servlet-name>testservice</servlet-name>
- <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>testservice</servlet-name>
- <url-pattern>/testservice</url-pattern>
- </servlet-mapping>
11、可将TestServiceDemo部署在Myeclipse自带的Tomcat中,并启动tomcat服务器。启动成功后,访问: http://localhost:8080/TestServiceDemo/testservice,如果出现如下页面,则说明WebService部署成功。
点击页面中的WSDL连接地址,访问的是该WebService的wsdl文件内容:
二、在Myeclipse上编写客户端,访问接口
1、同样新建一个Web Service Project工程,名字为TestClient。
2、打开cmd命令,进入到项目的src目录下,输入以下命令:
wsimport -keep http://localhost:8080/TestServiceDemo/testservice?wsdl
回车后就会将wsdl上的接口信息生成java类文件,放在src目录下。
3、刷新项目,可看到src目录下有新文件生成。
4、编写DemoTest类,测试是否能调用接口。代码如下:
- package com.mf5.test;
- import webservice.demo.Hello;
- import webservice.demo.ServiceHelloImplService;
- public class DemoTest
- {
- public static void main(String[] args)
- {
- //创建一个用于产生WebServiceImpl实例的工厂,WebServiceImplService类是wsimport工具生成的
- ServiceHelloImplService factory = new ServiceHelloImplService();
- //通过工厂生成一个WebServiceImpl实例,WebServiceImpl是wsimport工具生成的
- Hello wsImpl = factory.getHelloPort();
- //调用WebService的sayHello方法
- String resResult = wsImpl.sayHello();
- System.out.println("调用WebService的sayHello方法返回的结果是:"+resResult);
- System.out.println("---------------------------------------------------");
- //调用WebService的sayHelloName方法
- resResult = wsImpl.sayHelloName("孤傲苍狼");
- System.out.println("调用WebService的save方法返回的结果是:"+resResult);
- }
- }
5、运行该DemoTest,检查console如下结果,为成功访问接口。