因需要,在webservice返回的response中需要包含对象List<QueryResult>,使用axis生成代码后,自动转化为对象数组。
按照常规方式,部署之后,soapUi测试返回时报错:
2011-12-19 17:39:57 org.apache.axis.encoding.ser.BeanSerializer serialize
严重: Exception:
java.io.IOException: No serializer found for class cc.bb.QueryResult in registry org.apache.axis.encoding.TypeMappingDelegate@67333875
at org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1507)
at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
解决办法:
1.将返回对象中的对应的Object[]修改成QueryResult[]
2.在/WEB-INF/server-config.wsdd中<service></service>标签中增加:
<typeMapping
xmlns:ns="http://bb.cc"
qname="ns:QueryResult"
type="java:cc.bb.SubscriptionQueryResult"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=""
/>
<typeMapping
xmlns:ns="http://bb.cc"
qname="ns:QueryResultArray"
type="java:cc.bb.QueryResult[]"
serializer="org.apache.axis.encoding.ser.ArraySerializerFactory"
deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory"
encodingStyle=""
/>
可以成功返回。