高分求救!!!Axis 1.4 客户端访问服务,出现问题了!!!
目前使用Axis 1.4进行开发,使用donument/literal绑定方式,多参数传递问题已经解决,目前遇到了一个问题是:从wsdl生成java客户端和服务器端代码后,客户端中的一些类需要实现接口,而接口里的方法返回值为List类型,生成的方法返回值类Object[],因为Axis不支持集合类。如果将属性的get方法返回值改为List类型,从服务器端传递对象到客户端时,报序列化的错误,调试了很长时间仍然没有头绪,请高手帮忙!
实体类的wsdl描述如下:
<complexType name="WfWorkItemImpl">
<sequence>
<element name="id" nillable="true" type="xsd:string"/>
<element name="instCode" nillable="true" type="xsd:string"/>
<element name="lastStateChangeTime" nillable="true" type="xsd:dateTime"/>
<element name="masterUserIds" nillable="true" type="impl:ArrayOf_xsd_anyType"/>
</sequence>
</complexType>
masterUserIds属性在接口中的方法返回值类型为List,生成的客户端是Object[],如果将masterUserIds的get方法返回值类型改为List,客户端访问时会报下面的异常:
ERROR [axis.client.Call] Exception:
java.lang.NullPointerException
at org.apache.axis.encoding.ser.BeanDeserializer.onStartChild(BeanDeserializer.java:314)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384)
at org.apache.axis.client.Call.invoke(Call.java:2467)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
调试时发现,属性masterUserIds的get方法并没有走到,只是走到了set方法。为什么我把get方法的返回值类型改了后,会报异常??