Xfire的aegis绑定方式配置需要注意的问题

当遇到需要映射POJO或配置WebService接口方法返回类型(如集合类型,自定义对象类型)时,需要进行绑定,此时aegis的绑定为建立 xxxx.aegis.xml的文件(xxxx为对应的实体名,如User.aegis.xml)。
1 对于正常的String,int类型的数据,无需做特别说明就能映射。
2 对于Collection类型,需要如下配置:(例如User对象里包含一个roleList属性)
        <property name="roleList"  componentType="com.domain.Role" />
   这是如果你的Role对象里都是基本数据类型,则可以不写Role.aegis.xml,但如果Role对象里也有其他类型的对象,则同样需  要配置Role.aegis.xml。
   当然如果你不想映射roleList,可以这么配置(所以无需映射的属性都可以这样配置):
        <property name="roleList" ignore="true" />
3 注意:对于一些非标准的写法需要做特殊处理。
    例如:在User实体类里有一个方法getOrg(),返回Department对象,但是User实体里面并没有org属性(正因为如此,我称之为非标准写法),这个时候,如果不特殊处理,此处会出现如下异常:
       java.lang.StackOverflowError
    at com.ctc.wstx.sw.BaseNsStreamWriter.closeStartElement(BaseNsStreamWriter.java:387)
    at com.ctc.wstx.sw.BaseNsStreamWriter.checkStartElement(BaseNsStreamWriter.java:436)
    at com.ctc.wstx.sw.SimpleNsStreamWriter.writeStartOrEmpty(SimpleNsStreamWriter.java:257)
    at com.ctc.wstx.sw.BaseNsStreamWriter.writeStartElement(BaseNsStreamWriter.java:318)
    at org.codehaus.xfire.aegis.stax.ElementWriter.writeStartElement(ElementWriter.java:116)
    at org.codehaus.xfire.aegis.stax.ElementWriter.<init>(ElementWriter.java:61)
    at org.codehaus.xfire.aegis.stax.ElementWriter.getElementWriter(ElementWriter.java:161)
    at org.codehaus.xfire.aegis.type.basic.BeanType.getWriter(BeanType.java:421)
    at org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:386)
    ………………
   此时你无法跟踪。
   解决办法:在User实体里增加一个org属性,在User.aegis.xml里增加对org属性的配置就行了。

posted @ 2008-04-18 16:33  呀呀个呸  阅读(5030)  评论(2编辑  收藏  举报