我写了一个简单的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。
任何帮助?
答案 0 :(得分:2)
编写WSDL然后使用Axis WSDL2Java工具生成java类是非常好的做法。您可以随时集中精力根据业务需求编写WSDL,并将编组和解组的麻烦留给生成类。
答案 1 :(得分:1)
引自规范。
阵列
JAX-RPC还支持具有受支持的JAX-RPC类型成员的数组。 支持的数组的示例是int []和String []。多维
也支持数组,例如BigDecimal [] []
对方法签名进行简单修改以接受数组而不是ArrayList应该可以解决问题。