查看了网上的各类用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如下结果,为成功访问接口。