Web Service框架XFire与Tomcat集成
刘岩
虽然XFire已经过时,但是无奈上个公司的项目用的是jdk1.4,所以我只能选择了老战车XFire进行Web Service的开发。
首先先用MyEclipse建立一个web项目,如图所示:
利用myeclipse为web项目添加xfire的支持,如图。
利用myeclipse为web项目添加xfire的支持,如图
一直点击默认即可,虽然这里是利用myeclipse插件进行的辅助添加,但是我们还是有必要看一下myeclipse为我们做了什么,添加了哪些jar包。
有关xfire的核心jar包如下图:
您最好还是看看都有哪些jar包,要不你的项目经理哪天该说了:“小X啊?你看看哪些jar包是不必要的,咱们的服务器空间可不够啊…………”。连服务器的空间都放不下几十兆的jar包,我只能汗了。
再来看/WebServices/services.xml,这个文件在真正环境中是会被放到到/WebRoot/WEB-INF/classes/META-INF/xfire下面,这个类似于Spring在web项目中的配置文件。
这个文件是配置你要暴露的web service的文件的,稍后还会详细阐述。
下面我们看看web.xml修改了些什么东西,web.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
| 声明了一个Servlet,此XFireServlet拦截了所有关于/services/*的请求,所以对外系统开放的web service的url基本上都是” http;//127.0.0.1:端口/项目/services/服务名”的形式。
下面编写一个接口和一个实现类
接口代码如下:
package webservice;
/**
* 暴露成web服务的接口类
* @author liuyan
*/
public interface WebServiceable {
/**
*
* @param name
* @return
*/
public String sayHello(String name);
}
| 实现类代码如下:
package webservice.impl;
import webservice.WebServiceable;
/**
* 暴露成web服务的接口实现类
* @author liuyan
*/
public class WebServiceImpl implements WebServiceable {
/**
*
* @param name
* @return
*/
public String sayHello(String name) {
String message = "加油"+name;
System.out.println(message);
return message;
}
}
| 之后配置一下刚才提到的/WebServices/services.xml文件,将刚刚编写的一般的Java类暴露成Web Service即可。
services.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>sayHello</name>
<serviceClass>webservice.WebServiceable</serviceClass>
<implementationClass>
webservice.impl.WebServiceImpl
</implementationClass>
<style>wrapped</style>
<use>literal</use>
<scope>request</scope>
</service>
</beans>
| 说明:
name是暴露的接口方法名,比如你的方法名就是sayHello
serviceClass是接口类路径
implementationClass是借口实现类路径
scope是服务在web容器中的作用域
style是绑定到wsdl的类型,这是以包装的形式绑定到soap
use:不解………………
好了让我们发布到Tomcat上面试一下吧。
发布成功后启动Tomcat服务器,输入地址” http://127.0.0.1:8080/xfireClient/services”就能看到所有的web服务项目
点击那个wsdl链接或者直接在地址栏输入” http://127.0.0.1:8080/xfireClient/services/sayHello?wsdl”就可以看到相应的wsdl。 |