可能是Apache Soap不支持List这种数据类型。你必须自己写序列化方法。

解决方案 »

  1.   

    不是可能,使用前,对于要用到的class都要register一下。
      

  2.   

    哦!没看清楚,呵呵!你已经贴了source,你用的是什么List?可不可以用实现了Serializable的子类似一下?
      

  3.   

    当初觉得序列化的问题,因为是BeanSerializer这个类来负责的,但是好像不是这样,可能本身实现的类也应该序列化。
      我的测试过程:自定义个Bean类,把List封装在里面就可以得到正确的结果。但是,结果的得到是一步一步靠近的,就是说先在Bean类里面包含一些标准的数据结构,如String, Integer,结果正确,然后添加List类,List中包含标准的String等类型,拷贝到执行目录,没有问题。在List类中添加一个Map类,结果都还正常。但是重新启动Tomcat的时候,在执行出现贴子一的问题,faint。先休息休息再说。
      

  4.   

    又测试了一次,发现如下结论:
    在启动Tomcat之后,更换自己的Bean Class文件,List类可以正常被解析。但是当Tomcat重起之后,在调用方法时提示java.util.List类没有序列化,怎么办?问题出现的地方在Server。
    the call failed:
      Fault Code   = SOAP-ENV:Server
      Fault String = java.lang.IllegalArgumentException: No Serializer found to seri
    alize a 'java.util.List' using encoding style 'http://schemas.xmlsoap.org/soap/e
    ncoding/'.
      

  5.   

    BeanSerializer类只能序列化符合bean类型的class。至于到底能不能序列化list。我觉得你去www.apache.org里面的Apache Soap的主页看看她所内置的序列化类是不是包括list,如果没有,必须得自己写!
      

  6.   

    “在启动Tomcat之后,更换自己的Bean Class文件,List类可以正常被解析。“-----这句话事什么意思?你是说在开了Tomcat的情况下,换你的类,你的webService可以call通。而重起tomcat就不行了?不会吧!
    这跟tomcat没关系吧。应该只跟Apache Soap所支持的数据类型有关。
      

  7.   

    然而确实是这样,我只是偷换了自己的bean类,发现在自己的bean里面添加的List类型中所有的数据都能表示出来,哪怕是List类里面再嵌入一个Map类,数据显示都没有问题。我怀疑解析的时候第一次解析成功以后,第二次在解析的时候是用的是默认的解析方式(正好我的List类和Map类里面都是标准的String和int类型的数据。)也许跟Tomcat没有关系,因为Tomcat在没有重起的情况下SOAP服务也是没有重起,Just think so.有时间我想改用Axis试一下,如果不支持诸如:List,Map确实是一件很遗憾的事。
      Thank Norwaywoods(),我在到Apache Soap上去看看。
      

  8.   

    先把贴子结了,呵呵,不太习惯拖太长时间。感谢大家回答,谁要是有什么新的发现,别忘了回复一下,Thank you again.