Apache Axis Web服务是否支持ArrayList?

时间:2011-07-15 10:19:08

标签: java web-services apache arraylist tomcat6

我写了一个简单的HelloWorld Web服务。其中ArrayList作为参数。代码就像`import java.util.ArrayList;

一样简单
public class Service {

public void service(ArrayList<Object> list) {
    System.out.println("Hello World..");
}
}`

我正在使用Eclipse Helios SR1并尝试生成Web服务。 选择Web服务实现为“服务”并将服务器运行时选择为Tomcat 6.0,将Web服务运行时选择为Apache Axis。点击下一步会发出警告 服务类"Service"不符合JAX-RPC 1.1规范的一个或多个要求,可能无法正确部署或运行​​。   服务类"Service"上的方法“service”使用JAX-RPC规范不支持的数据类型"java.util.ArrayList"。该类型的实例可能无法正确序列化或反序列化。可能会导致数据丢失或Web服务完全失败。

单击“确定”继续,它会逐一显示更多警告: 输入类型java.lang.Class是一个不可实例化的类型,将从示例JSP中省略。继续样本JSP生成?

输入类型javax.xml.namespace.QName是一个不可实例化的类型,将从示例JSP中省略。继续样本JSP生成?

IWAB0189W示例JSP客户端省略了一些方法,因为它们包含不受支持的类型。

为什么会发生这种情况? 我在Sun网站上看到:Sun RPC Doc

根据它,应该支持ArrayList。

任何帮助?

2 个答案:

答案 0 :(得分:2)

编写WSDL然后使用Axis WSDL2Java工具生成java类是非常好的做法。您可以随时集中精力根据业务需求编写WSDL,并将编组和解组的麻烦留给生成类。

答案 1 :(得分:1)

引自规范。

  

阵列

     

JAX-RPC还支持具有受支持的JAX-RPC类型成员的数组。   支持的数组的示例是int []和String []。多维   

也支持数组,例如BigDecimal [] []

对方法签名进行简单修改以接受数组而不是ArrayList应该可以解决问题。