xfire 1.0配置

1、jar包

同以往一样,xfire user guide中的Dependency Guide.html还是说得不明不白,除了让人发晕,没有太大的实际意义。

SNAG-0000.jpg

注:
1)XmlSchema-1.0.jar、jakatra commons httpclient/codec只有在Dynamic Client中才需要用。
2)采用quick start、examples/book中用的service.xml配置方法时,xbean-spring与spring有兼容问题,我用1.2.7、2.0M2的spring时,总是报addPropertyValue(String,Object)之类的异常,换成1.2.6以后一切正常。用examples/spring例子中的配置方法时,没有出现这种情况。

2、quick start、examples/book

这种做法很简单,好象也不太合我的胃口,就没仔细折腾。
(1)在web.xml中配置一下

 1    < servlet >
 2      < servlet-name > XFireServlet </ servlet-name >
 3      < display-name > XFire Servlet </ display-name >
 4      < servlet-class > org.codehaus.xfire.transport.http.XFireConfigurableServlet </ servlet-class >
 5    </ servlet >
 6
 7    < servlet-mapping >
 8      < servlet-name > XFireServlet </ servlet-name >
 9      < url-pattern > /servlet/XFireServlet/* </ url-pattern >
10    </ servlet-mapping >
11
12    < servlet-mapping >
13      < servlet-name > XFireServlet </ servlet-name >
14      < url-pattern > /services/* </ url-pattern >
15    </ servlet-mapping >

(2)编码。这个不用说,呵呵
(3)在classpath中,建META-INF/xfire/services.xml配置文件,把刚才做好的webservices配置一下。

1 < beans  xmlns ="http://xfire.codehaus.org/config/1.0" >
2    < service >
3      < name > BookService </ name >
4      < namespace > http://xfire.codehaus.org/BookService </ namespace >
5      < serviceClass > org.codehaus.xfire.demo.BookService </ serviceClass >
6    </ service >
7 </ beans >

(4)然后就是deploy,访问http://ip:port/webapp name/BookService?WSDL之类的动作了。

3、examples/spring

xfire和spring勾搭得比较紧密啊,只需要简单配置一下,就可以把spring.xml中配置好的bean拿出来做web services了。
(1)折腾spring的东西(略)。
(2)在web.xml中配置一下(注意xfire那一段)

 1      < context-param >
 2          < param-name > contextConfigLocation </ param-name >
 3          < param-value > /WEB-INF/applicationContext.xml classpath:org/codehaus/xfire/spring/xfire.xml </ param-value >
 4      </ context-param >
 5
 6      < listener >
 7          < listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >
 8      </ listener >
 9
10      < servlet >
11          < servlet-name > xfire </ servlet-name >
12          < servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class >
13      </ servlet >
14      < servlet-mapping >
15          < servlet-name > xfire </ servlet-name >
16          < url-pattern > /* </ url-pattern >
17      </ servlet-mapping >

(3)在WEB-INF/xfire-servlet.xml中把spring bean同xfire webservices“关联”起来。这个xfire-servlet.xml实际上就是一个标准的spring.xml配置文件。

 1 <? xml version="1.0" encoding="UTF-8" ?>
 2 <! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
 3 < beans >
 4      < bean  class ="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >
 5          < property  name ="urlMap" >
 6              < map >
 7                  < entry  key ="/EchoService" value-ref ="echo" />
 8              </ map >
 9          </ property >
10      </ bean >
11     
12      < bean  id ="echo"  class ="org.codehaus.xfire.spring.remoting.XFireExporter" >
13          < property  name ="serviceFactory"  ref ="xfire.serviceFactory" />
14          < property  name ="xfire"  ref ="xfire" />
15          < property  name ="serviceBean"  ref ="echoBean" />
16          < property  name ="serviceClass"  value ="org.codehaus.xfire.spring.example.Echo" /> >
17      </ bean >
18 </ beans >

注:第16行,xfire 1.0M6中用serviceInterface,现在改成serviceClass了。

(4)然后就完工,用http://ip:port/webapp name/xfire/EchoService?WSDL可以看到WSDL内容。

4、客户端

按我的恶习,这类事情,肯定是直接开vs.net或者C# developer来显摆一下了。不得不承认,.net里面调web services就是方便啊!
SNAG-0001.jpg
至于java做client么,以前一般是用axis来生成client class,xfire也提供类似的工具,不过对于xfire来说,最简单的办法就是用Dynamic Client,几行代码搞定。

1     Service serviceModel  =   new  ObjectServiceFactory().create(Echo. class );
2     Echo service  =  (Echo)  new  XFireProxyFactory().create(serviceModel,
3          " http://localhost:8080/xfire-examples/EchoService " );
4     String result  =  service.echo( " ok " );

 

按照上述配置了一番,发现在一些类的映射上如Set/List等,需要配置Aegis Binding,另外据说在循环引用的检测上也没做到位,所以真正的应用还有待观察

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值