-1

如何在 Java 中的 SOAP Web 服务中将数组列表从服务器端拉到客户端?

例子 :

服务器包含:书籍列表

客户端请求所有书籍的列表,在服务器的书籍列表的响应中 应该返回给客户端。

我将在服务器的响应中获取书籍列表,然后如何在客户端使用该列表?

4

2 回答 2

1

简而言之:

服务:

package webservice;
import java.util.ArrayList;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public class BookWebService {
List<Book> allBooks = new ArrayList<>();
@WebMethod
public List<Book> getAllBooks() {
return allBooks;
}
@WebMethod
public void addBook (Book book) {
this.allBooks.add(book);
}
}

客户端:

package root;
import java.util.List;
import javax.xml.ws.WebServiceRef;
import webservice.Book;
import webservice.BookWebService;
import webservice.BookWebServiceService;
public class MainClient {
@WebServiceRef(wsdlLocation="http://localhost:8080/LibraryWs/BookWebServiceService?wsdl")
private static BookWebServiceService service;
public static void main(String[] args) {
MainClient cl = new MainClient();
cl.start();
}
public void start() {
service = new BookWebServiceService();
BookWebService port = service.getBookWebServicePort();
System.out.println("All books: "+port.getAllBooks());
Book book = new Book();
book.setTitle("Journey");
book.setPages(233);
port.addBook(book);
System.out.println("All books: "+port.getAllBooks());
}
}

完整的详细步骤可在此处获得: JAX-WS 简单客户端和服务

于 2016-09-01T10:38:06.140 回答
0

您不能使用 List,因为 Web 服务通信中不允许使用接口类型(作为操作的返回类型和参数)。

您需要指定一个列表实现,例如 ArrayList。

Book 也不能是接口,它的所有字段都必须是非接口的类型。您不能在任何地方传递任何接口类型的数据。

您在尝试运行/部署您的网络服务时是否有任何异常?如果是这样,你为什么没有提到它?

如果您只是不知道如何编码,为什么您没有尝试使用 List/ArrayList/WhateverList 作为常规类型,如 String ?

于 2013-05-06T01:11:02.380 回答