axis参数为自定义数组

今天用axis传递自定义对象的数组,发生了很多问题,总结如下:
1: 发布程序的时候报出了找不到类的问题(类是解析xml用的),最终发现自己系统中存在的java版本为1.3.*,把java版本提高就可以解决了。(编译的类一定要放在apache-tomcat-5.5.28\webapps\axis\WEB-INF\classes下,否则也会报找不到类)
2:发布的时候系统报找不到我自己定义的类,经过检查发现发布文件中
<typeMapping
xmlns:ns="sheng.com"
qname="ns:Bean"
type="java:com.sheng.Student"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
/>
的type="java:com.sheng.Student"被我多写个空格type="java: com.sheng.Student",去掉空格问题就没了。

3:客户端调用的时候,QName一定要与发布的文档相对应,如果会出错,如:
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="StudentService" provider="java:RPC">
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="com.sheng.Test"/>
<parameter name="scope" value="application"/>
<typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" qname="ns1:Student" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" type="java:com.sheng.Student" xmlns:ns1="sheng.com"/>
<typeMapping deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" qname="ns2:StudentArray" serializer="org.apache.axis.encoding.ser.ArraySerializerFactory" type="java:com.sheng.Student[]" xmlns:ns2="sheng.com"/>
</service>
</deployment>
客户端调用程序中应写:
QName studentQn = new QName("sheng.com","Student"); //应该与发布文件上的相对应
QName studentArrayQn = new QName("sheng.com","StudentArray");//应该与发布文件上的相对应
4:客户端调用服务的时候,一定要写清参数的类型,否则服务端根本收不到参数。代码如下:
QName xmlTypeQn = new QName("XMLType.SOAP_ARRAY");
call.addParameter(studentArrayQn, xmlTypeQn, ParameterMode.IN);
正確寫法應該是下面的,不過上面的寫法也能調用成功
call.addParameter(studentArrayQn, XMLType.SOAP_ARRAY, ParameterMode.IN);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值