Java 如何从返回列表的服务中检索值<;对象>;使用jax-ws

Java 如何从返回列表的服务中检索值<;对象>;使用jax-ws,java,jaxb,jax-ws,Java,Jaxb,Jax Ws,我有一个返回列表的服务,这个对象根据不同的场景而变化 有人能告诉我jax-ws是否支持这种行为,或者我们是否有其他选择。既然jax-ws使用JAXB序列化对象,JAXB需要知道marshall或unmarshall的类型名称。在一个独立的环境中,可以使用这种东西。但是,在处理对象列表时,这会变得更加复杂 此外,每个数据类型都必须在WSDL中定义。服务客户端必须能够将响应XML转换为所需的数据类型 如果希望返回不同类型的不同列表,最简单的方法是为响应使用包装器。e、 g public class

我有一个返回列表的服务,这个对象根据不同的场景而变化


有人能告诉我jax-ws是否支持这种行为,或者我们是否有其他选择。

既然jax-ws使用JAXB序列化对象,JAXB需要知道marshall或unmarshall的类型名称。在一个独立的环境中,可以使用这种东西。但是,在处理对象列表时,这会变得更加复杂

此外,每个数据类型都必须在WSDL中定义。服务客户端必须能够将响应XML转换为所需的数据类型

如果希望返回不同类型的不同列表,最简单的方法是为响应使用包装器。e、 g

public class ResponseWrapper {
    private List<Audio> audios;
    private List<Video> videos;

    // setters and getters
}

@WebService
public class MediaStore {

    @Inject
    AudioService audioService;
    @Inject
    VideoService videoService;

    @WebMethod
    public ResponseWrapper getCollections(String artistId) {
        ResponseWrapper response = new ResponseWrapper();
        response.setAudios(audioService.getAudios(artistId));
        response.setAudios(videoService.getVideos(artistId));
        return response;
    }
}
公共类响应包装器{
私人列表,但您可以避免这样做