xfire自定义类型传输

来源:百度知道 编辑:UC知道 时间:2024/09/22 16:48:28
小弟最近在做一个webservice项目,使用三个java工程协同的方式(Client、Common、Server),在MyEclipse下使用xfire。客户端采用动态方式,在Client工程内生成,因为我觉得网上普遍的第一种生成方式因为要提供服务接口,这样服务端和客户端就写在一个工程内了。当服务端方法的传入和返回参数都为String等原始类型时,工作正常。但是当我用Map<String,String>类型或自定义类型的参数时,就会报出NullPointerException。
org.codehaus.xfire.fault.XFireFault: Fault: java.lang.NullPointerException
at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:83)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.Client.invoke(Client.java:368)
at com.charbitsoft.gz.clientcommon.adapter.proc.ProcsCall.run(ProcsCall.java:55)
at com.charbitsoft.gz.clientcommon.adapter.proc.ProcsCall.main(ProcsCall.java:87)
Caused by: java.lang.NullPointerException
at org.codehaus.xfire.aegis.type.basic.ObjectType.writeObject(ObjectType.java:192)

webservices里传输的对象,不能自定义为集合类的,具体原因我也不清楚,以前我也试过用ArrayList、HashMap作为自定义传输对象,都出错了。
建议你把Map封装到一个java对象中,webservices是可以传输java对象的。后来我就是这么实现的。