方法一:
测试环境: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);
}