posts - 122,  comments - 25,  trackbacks - 0
这两天,项目中需要开发一些webservice接口,我选用了XFire框架,原来一直在用AXIS。

很多朋友都在讨论XFire和AXIS的优劣,就我而言,更喜欢XFire,至少目前是如此。

最讨厌axis要生成一段东西,才能在wsdd文件注册服务,很是麻烦。而且,调试时要是设成debug,那可就惨了,一大堆用户信息,出了异常还不好捕捉。相比之下,XFire的开发就要简单的点多了,包括代码开发,配置,还是返回自定义类型,真是easy。不过,客户端调用时(动态模式或根据WSDL生成Client Stub),返回的自定义类型是否能顺利取得,到时需要研究一下。

今天,就返回类型问题困了好久,还好已经解决了。

对象的属性、函数的参数和返回值如果为int、String、Date等普通类型以及由普通类型组成的复杂对象都无需定义。我见到只有两种情况需要定义:

  • 无法使用泛型定义Collection中元素的类型时。
  • 需要为属性定义不同的名字,或者定义复杂对象里的某些属性不要输出。
若是遇害到上述情况的话,需要进行aegis配置,文件名应与接口的文件名相同,并且放在同一目录下,如UserService.java,则定义一下UserService.aegis.xml文件,定义内容如下:
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <mappings>
 3     <mapping>
 4         <method name="getResources">
               <
!--配置getResources服务的返回值,List内对象为Resource-->
 5             <return-type componentType="com.test.Resource" />
 6         </method>
 7         
 8         <method name="getAuthentication">
 9             <return-type componentType="com.test.Authentication" />
10         </method>
11     </mapping>
12 </mappings>

若返回的Javabeans存在Collections 时,需要定义一个与javabean相关的文件名,如User.aegis.xml,并且放在相同的目录下:
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
    
<mapping>
        
<!--User bean  ,包含了一个  List  ,  其中的对象是Resource  -->
        
<property name="resources" componentType="com.test.Resource" />
        
<!--配置User类,忽略内嵌的roles属性不要输出XML-->
        
<property name="roles" ignore="true" />
    
</mapping>
</mappings>


有空将XFire使用总结一下,也贴出来。

posted on 2007-04-19 19:13 josson 阅读(486) 评论(0)  编辑  收藏 所属分类: java 开发

只有注册用户登录后才能发表评论。


网站导航:
 
<2007年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用链接

留言簿(3)

随笔分类

随笔档案

收藏夹

搜索

  •  

最新评论

阅读排行榜

评论排行榜