通过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="https://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="https://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="https://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="https://img-blog.csdn.net/20150310181900915?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2IyNDc0NjAwMzc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="图7" />