通过Xfire开发web service接口
WebService接口的实现方式有很多种,常用的有
--AXIS框架的使用
--JAX-WS框架的使用
--XFire框架的使用
今天先学习以xfire实现web service接口服务端和客户端的创建
使用到的工具及框架,后面是我使用的版本
开发工具:Eclipse, Eclipse 3.7
框架:xfire框架 xfire-1.2.6
服务器:Tomcat, Tomcat 7.0
客户端:浏览器, 谷歌浏览器
准备好开发工具及框架资源
这里提供:xfire-1.2.6框架和下面的HelloWorld示例下载地址:http://pan.baidu.com/s/1mgKHVnU
第一步:打开Eclipse,新建一个DynamicWeb project项目
第二步,导入xfire框架的jar包,打开xfire框架文件,将xfire目录下的xfire-all-1.2.6.jar和lib文件夹里面的全部jar包复制到新建项目的WebContent\WEB-INF\lib下jar包参考:
|
第三步:在web.xml文件中添加xfire框架配置信息,
参考代码:
<servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class> org.codehaus.xfire.transport.http.XFireConfigurableServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/servlet/XFireServlet/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping>
实际上是一个配置一个servlet作为xfire接口的拦截器,
第四步:在src中创建一个包,在包中创建一个interface和一个实现该接口的class
参考代码:
HelloWorld接口
package com.test.webservice; public interface HelloWorld { public String test(String str); }
接口实现类HelloWorldImp
<pre name="code" class="java">package com.test.webservice; public class HelloWorldImp implements HelloWorld { public String test(String str){ System.out.println("hello"); return "Hello " + str; } }
<img src="http://img.blog.csdn.net/20150310181146517?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2IyNDc0NjAwMzc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="图3" />
第五步,配置接口信息,在src下创建META-INF>xfire->services.xml,必须严格安该路径来,不然会报错,找不到services.xml文件,serviceClass和implementationClass的类不要放反了,放反web service接口会成功发布,但是客户端访问接口就会出错
参考代码:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>TestWebService</name> <namespace> http://com.test.webservice </namespace> <serviceClass> com.test.webservice.HelloWorld </serviceClass> <implementationClass> com.test.webservice.HelloWorldImp </implementationClass> </service> </beans>
<p align="left">第六步,将项目部署到tomcat中运行,在浏览器中访问,访问地址为,Ip:Tomcat端口号/web项目地址/services/ </p><p align="left">例如:http://localhost:8080/HelloWorld/services/</p><img src="http://img.blog.csdn.net/20150310181257888?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2IyNDc0NjAwMzc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="图5" />
<p align="left">然后点击wsdl,得到接口的wsdl文档</p><img src="http://img.blog.csdn.net/20150310181407027?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2IyNDc0NjAwMzc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="图6" />
至此,web service接口服务端发布完成
<p align="left">二,客户端访问接口:(之前创建好的webservice接口不能关)</p><p align="left">客户端调用的方式有很多,这里只介绍一种简单的调用方式</p><p align="left">1. 新建一个DynamicWeb project项目,然后导入xfire框架的jar包,打开xfire框架文件,将xfire目录下的xfire-all-1.2.6.jar和lib文件夹里面的全部jar包复制到新建项目的WebContent\WEB-INF\lib下,<span style="font-family: Arial, Helvetica, sans-serif;">再src下创建一个包,再在包下创建一个类调用接口</span></p><pre name="code" class="java">package com.tets.webservice.client; import java.net.URL; import org.codehaus.xfire.client.Client; public class HelloWorldClient { public static void main(String[] args) { try { Client client = new Client(new URL("http://192.168.1.134:8080/HelloWorld/services/TestWebService?wsdl")); Object[] res = client.invoke("test", new Object[]{"admin"}); //invoke方法有两个参数,一个是接口的方法名,一个是接口方法的参数列表 String re = (String) res[0]; System.out.println(re); } catch (Exception e) { e.printStackTrace(); } } }运行mian方法
<img src="http://img.blog.csdn.net/20150310181900915?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2IyNDc0NjAwMzc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="图7" />