java - 在 Java 中从 WebService 返回一个 ArrayList

标签 java service arraylist

我在从网络服务 (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/

相关文章:

android - ResultReceiver 无法幸免于屏幕旋转

android - 来自另一个 Activity 的 StopService 不起作用?

java - JSwing 组件中 ArrayList 的使用

java - 如何将 ArrayList 拆分为两个新的 ArrayList?

java - 需要帮助按字母顺序对文本文件进行排序

java - 如何设置可以在样式中使用的变量

java - 匿名类方法访问

android - 为什么我的服务使用大量电池?

java - 在 Java 中使用方法输入和输出变量数组?

javafxpackager错误