采用Axis1.4、wrapped/literal方式开发webservice服务,服务中包括返回复杂类型对象数组的方法,加密认证之前测试通过。
    如果加上加密认证的策略,比如UsernameToken,客户端解析服务器端返回的消息会报下面的异常:
    Caused by: java.lang.ArrayStoreException 
   at org.apache.axis.utils.JavaUtils.convert(JavaUtils.java:493) 接口中定义的方法如下面的例子:public ExampleEntity[] getExampleEntity(String id, String name);

解决方案 »

  1.   

    在我的项目中,我是用username和password进行认证的,为你的服务加一个handler就可以了,典型的AOP思想的应用。
    因此,你加的认证功能应该不会影响你正常的程序功能。
      

  2.   

    经过调制后发现,使用UsernameToken策略认证前后org.apache.axis.utils.JavaUtils.convert这个方法接收的参数是不一样的,在不使用UsernameToken时,convert方法接收的参数是一个对象和它的类型(Class),假设对象为 Entity,它有两个属性,id 和 name。
    如果使用UsernameToken,convert方法接收的参数一个Object数组和一个类型,这个类型是没有变化,和之前的一样,但是这个Object数组是Entity这个类的属性组成的大小为2的数组,这样将Entity的每一个属性赋值给Entity类型,显然会报错,所以引发了上面的异常,目前还没有找到合理的处理方法。
      

  3.   

    哪位遇到这样的问题,给说一下,wrapped样式的webservice可以使用wss4j吗?