您好我想从Web服务返回一个列表。我的代码是
public class WebListTest {
public List serviceFunction(String arg1,String arg2)
{
List list=new ArrayList();
list.add(arg1);
list.add(arg2);
return list;
}
}
但是在wsdl创建中我找到了
<xs:element minOccurs="0" name="return" nillable="true" type="xs:anyType"/>
当从客户端调用此Web服务时,我得到异常
org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Any type element type has not been given
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at webservice1.WebListTestStub.fromOM(WebListTestStub.java:1622)
at webservice1.WebListTestStub.serviceFunction(WebListTestStub.java:191)
at webservice1.ServiceTest.main(ServiceTest.java:24)
Caused by: java.lang.Exception: org.apache.axis2.databinding.ADBException: Any type element type has not been given
at webservice1.WebListTestStub$ServiceFunctionResponse$Factory.parse(WebListTestStub.java:917)
at webservice1.WebListTestStub.fromOM(WebListTestStub.java:1616)
... 2 more
Caused by: org.apache.axis2.databinding.ADBException: Any type element type has not been given
at org.apache.axis2.databinding.utils.ConverterUtil.getAnyTypeObject(ConverterUtil.java:1612)
at webservice1.WebListTestStub$ServiceFunctionResponse$Factory.parse(WebListTestStub.java:895)
... 3 more
现在我做什么。请帮助。
答案 0 :(得分:6)
从Axis2 POJO Web服务对象返回数据时,不应使用Java Collection类型,而应返回对象数组或基本类型。 WSDL不允许Java Collection数据结构。请记住,Web服务需要可以从任何语言访问,并且它们不会像Java那样使用相同的集合框架。
所以,做这样的事情:
public class WebListTest {
public String[] serviceFunction(String arg1,String arg2) {
List<String> stringList=new ArrayList<String>();
stringList.add(arg1);
stringList.add(arg2);
return stringList.toArray( new String[stringList.size()] );
}
}
答案 1 :(得分:0)
您可以从&#34;列表&#34;更改返回类型到&#34;列表&lt;字符串&gt;&#34; ,它会正常工作。
public class WebListTest {
public List<String> serviceFunction(String arg1,String arg2)
{
List<String> list=new ArrayList();
list.add(arg1);
list.add(arg2);
return list;
}
}