我在从网络服务 (Java) 返回 ArrayList 时遇到问题。
我已经编写了一个测试 Web 服务和使用它的客户端。一切似乎都工作正常 - 即客户端正在调用服务器并且服务器接收到操作请求。
但是,我写了一个简单的方法,我希望它返回一个 ArrayList。
我的接口(interface)定义如下:
@WebService
@SOAPBinding(style = Style.RPC)
public interface ISQLServerConnectionWS {
@WebMethod
ArrayList getSimpleArrayList();
}
我有我的服务器端实现来返回 ArrayList:
@WebService(endpointInterface="WebServices.ISQLServerConnectionWS")
public class SQLConnectionWSServer
implements ISQLServerConnectionWS {
@Override
public ArrayList getSimpleArrayList() {
ArrayList al = new ArrayList();
al.add( "This" );
al.add( "is" );
al.add( "a" );
al.add( "test" );
return al;
}
}
最后我的客户调用它:
ArrayList results = server.getSimpleArrayList();
服务器很好地填充数组列表。然而,回到客户端,ArrayList 是空的。它的大小为 0。
如果我在我的 URL ( http://127.0.0.1:9876/myservice-sql?wsdl) 检查 WSDL 中的 executeSelectSQL,它看起来像:
<message name="executeSelectSQLResponse">
<part name="return" type="tns:arrayList"/>
</message>
我是否漏掉了一些明显的东西?
编辑:
但是,如果我有一个 web 方法在界面中定义为:
@WebMethod
String getAString();
和服务器实现:
@Override
public String getAString() {
return "hello there";
}
然后这工作正常 - "hello there"
在客户端上收到。
最佳答案
使用数组而不是 ArrayList,因为 JAXB 不能将集合作为顶级对象处理,只能作为 bean 的属性处理。或者,创建一个 bean 并将 ArrayList 放入其中。
查看错误:JAXB-223: JAXB doesn't support collection classes as top level objects
关于java - 在 Java 中从 WebService 返回一个 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6609770/