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