精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-21
类型为PersistSerive, 实现 IPersistService接口, 其中有一个接口方法为: public void initPros(Map webDataMap); 在与IPersistService同一个包下,定义了IPersistService.aegis.xml文件 <?xml version="1.0" encoding="UTF-8"?> <mappings> <mapping > <method name="initPros"> <parameter index="1" componentType="java.util.Map"/> </method> </mapping > </mappings> 当我得到Service端的实现IPersistService接口的PersistService对象后, 就把一个client端的Map对象传入PersistService的initPros方法里面, 奇怪的是,这个Map各个key对应的对象,在传入 PersistService里面的initPros方法体后,就全为null了, 但根据打印出来的信息,这个Map在传入initPros之前, 是有值的. 我在debug模式下, 看到这个PersistService对象其实是被代理的, 现在我的问题应该怎么解决呢? 谢谢. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-03-21
terry_yip 写道 我用XFire来建Web Serive, 能成功看到wsdl, 而且,能得到Web Service对象,
你可以看看xfire的demo例如在book的demo中必须将map中的key类型和
类型为PersistSerive, 实现 IPersistService接口, 其中有一个接口方法为: public void initPros(Map webDataMap); 在与IPersistService同一个包下,定义了IPersistService.aegis.xml文件 <?xml version="1.0" encoding="UTF-8"?> <mappings> <mapping > <method name="initPros"> <parameter index="1" componentType="java.util.Map"/> </method> </mapping > </mappings> 当我得到IPersistService的Service对象后, 就把一个Map对象传入initPros方法里面, 奇怪的是,这个Map各个key对应的对象,在传入 PersistService里面的initPros方法体后,就全为null了, 但根据打印出来的信息,这个Map在传入initPros之前, 是有值的. 我在debug模式下, 看到这个PersistService对象其实是被代理的, 现在我的问题应该怎么解决呢? 谢谢. value类型也隐射出来: <method name="getBooksMap"> <parameter index="0" keyType="java.lang.String" componentType="org.codehaus.xfire.aegis.type.basic.SimpleBean"/> <return-type mappedName="BookMap" keyType="java.lang.String" componentType="org.codehaus.xfire.demo.Book" /> </method> |
|
返回顶楼 | |
发表时间:2007-03-21
如果你用的是JDK5.0以上版本,建议用泛型来解决这个问题,如:
public void initPros(Map<String,PersonVO> webDataMap); |
|
返回顶楼 | |
发表时间:2007-03-21
谢谢以上的回复, 现在我的问题的核心是, 为什么,我的这个webDataMap对象, 在传入PersistService的接口方法initPros(Map webDataMap)之前, 打印出来的hashCode为-1669610917, 但在接口方法中, webDataWeb的hashCode变为0了,证明在方法中的对象,都不是原先传入的那个, 这个PersistSerivce对象是用Xfire建立的的web service来的.
|
|
返回顶楼 | |
发表时间:2007-03-21
terry_yip 写道 谢谢以上的回复, 现在我的问题的核心是, 为什么,我的这个webDataMap对象, 在传入PersistService的接口方法initPros(Map webDataMap)之前, 打印出来的hashCode为-1669610917, 但在接口方法中, webDataWeb的hashCode变为0了,证明在方法中的对象,都不是原先传入的那个, 这个PersistSerivce对象是用Xfire建立的的web service来的. ...aegis中Map在网络传输的过程中会被序列化为entry对象(在xml文件中),entry对象又包含key对象和value对象(都在xml文件中有定义).
你在客户端传输的map,到server端,会被反序列化为map(重新生成了),当然hashcode不一样(entry,key,value什么的也同样反序列最后组成Map). |
|
返回顶楼 | |
发表时间:2007-03-21
dovecat 写道 aegis中Map在网络传输的过程中会被序列化为entry对象(在xml文件中),entry对象又包含key对象和value对象(都在xml文件中有定义).
你在客户端传输的map,到server端,会被反序列化为map(重新生成了),当然hashcode不一样(entry,key,value什么的也同样反序列最后组成Map). 谢谢, 但我还是不明白, 为何Map对象从客户端传到server端后, 里面的value全为null, 用过xfire的朋友请帮忙一下, 或者提示一下能从什么地方跟踪entry对象的内容. |
|
返回顶楼 | |
发表时间:2007-03-25
搞了三天,还没有解决。
|
|
返回顶楼 | |
发表时间:2007-03-25
在只有做了一个最简化的工程,并打包上来,请大家帮我调试一下
|
|
返回顶楼 | |
发表时间:2007-03-25
http://www.plastics-daily.com/lib.rar , 这是所需的jar包,解压后,加到WEB-INF/classes下面,并加入eclipse的build-path中就可以了。
|
|
返回顶楼 | |
发表时间:2007-03-25
不会是你本地lazyload了,快照时已load,发送时未load吧?
|
|
返回顶楼 | |