基于 xfire 建 web service

方法一:
测试环境:windows xp,jdk1.5.0_4,tomcat5.0.28,myeclipse5.1,xfire1.2,commons-httpclient3.0

(1)service

利用 myeclipse 5.1
1.新建 web service project 填入项目名,其它都默认
2.右建点项目名,新建一个web service 例子
3.把serializer.jar,xalan.jar 放入lib 下(或放入%tomcat%/common/endorsed 下),没有它们,在jdk1.5 下会有错误,包文件可以在下面的例子里找
4.发布到 tomcat 下 ,
5.网页输入 http://192.168.0.108:8080/WSservice/services/TestService?wsdl 测试

(2) client

1.新建 web service project 填入项目名,其它都默认
2.导入 xfire-httpclient-libraries
3.导入 commons-httpclient-3.0.jar (可在上传的例子里找到)
4.将 service project 里面的要调用的相关接口打成 jar 包并放到本例子的lib 下
5.写一个测试类,如下:

package test;

import java.net.MalformedURLException;

import org.codehaus.xfire.XFire;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;

import com.test.Itest;

public class HelloClient {

	public static void main(String[] args) {
		Service srvcModel = new ObjectServiceFactory().create(Itest.class);
		XFire xfire = XFireFactory.newInstance().getXFire();
		XFireProxyFactory factory = new XFireProxyFactory(xfire);
		String serviceUrl = "http://192.168.0.108:8080/WSservice/services/TestService";
		Itest hs = null;
		try {
			hs = (Itest) factory.create(srvcModel, serviceUrl);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
		System.out.println(hs.example("Jivam"));
	}
}


6.直接运行测试

方法二:
1. 新建一个普通 web 项目
2. 把方法一里面的相关包导入
3. 配置 web.xml ,加入:

<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>

4.类似上面步骤新建servcie类或client 类
5.在WEB-INF/classes/ 下新建 META-INF/xfire/services.xml ,内容模仿上面的写,样例:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">

	<service>
		<name>TestService</name>
		<serviceClass>com.test.ITestService</serviceClass>
		<implementationClass>
			com.test.TestServiceImpl
		</implementationClass>
		<style>wrapped</style>
		<use>literal</use>
		<scope>application</scope>
	</service></beans>


6.网页打开 http://127.0.0.1:8080/web_service/services/TestService?wsdl 测试

=========web项目过滤器中怎么安全的过滤WebService请求========

如果web.xml中 xFire的url-pattern地址是 <url-pattern>/services/*</url-pattern>

那么在相应的Filter中应这样过滤才是安全的:

HttpServletRequest req = (HttpServletRequest)request;
if(req.getServletPath().equals("/services")){
        chain.doFilter(request, response);
}

猜你喜欢

转载自wuzijingaip.iteye.com/blog/1330690