在用webservice的时候,在服务端需要返回一个reponse,这个返回对象是一个复杂对象,其中包括了class A, class中有个一vector类型的属性item,但是这个item在add的时候给加的是classB,classB 有一个成员变量,String类型的。我用自动生成的wsdl文件,发现文件中没有对classB有描述,不知道是不是这个原因,在我用这个wsdl文件自动生成的客户端测试的时候,发现会报一个一场,具体的我忘记了,但是查网上应该是一个反序列化的一场,simpleDiserised 。which is NOT expected。的这个异常。但是,我在debug服务端的时候,是有数据的。并且,如果我在item中直接放String等基本类型的话,是可以正确显示数据的,没有那个异常,这个究竟是怎么回事?望高手指教。
class A
{
private Vector item;//省略方法}Class B
{
private String c;
//省略方法
}
在返回的时候我是这样构造返回对象的
B b = new B();
b.setc("dd");
Vector temp = new Vector();
temp.add(b);
A a = new A();
a.setitem(temp);

解决方案 »

  1.   

    类型好复杂啊。
    不知道自动生成的wsdl文件中ClassA是怎么描述的?
    如果wsdl文件中没有ClassB的类型的话,根据此wsdl文件生成的客户端中是不会生成ClassB的类型的,因此客户端在获得返回对象的时候,不知道如何对数据进行反序列化,也就不能正常地转化成相应的对象了。
      

  2.   

    我刚研究了 给个邮箱明天发给你代码 就是针对vector测试了一次
      

  3.   

    使用vector的时候不需要序列化,但是如果你要返回一个类类型就需要序列化,如果是简单的值对像,可以用axis自带的序列化方法,如果比较复杂就需要自己写序列化方法