如何使用jax-ws创建和处理复杂的对象?

问题描述:

在服务器端,我创建一个名为Fragment的对象。让我们只是说它是一些字符串的数据容器。如何使用jax-ws创建和处理复杂的对象?

一个接受一个字符串并返回另一个字符串的简单WebMethod非常简单易用。但是,如果我尝试从服务器发送一个对象到客户端,它会变得复杂。我发布WebService并使用wsimport创建我的客户端存根类。

我想将一组碎片返回给客户端。 wsimport创建一个HashSet类,该类是调用各自服务器方法的方法的返回类型。

我无法将此HashSet强制转换为标准的java util HashSet如何处理这些复杂的对象?

编辑: 这是由Web服务公开的方法的签名:

@WebMethod 
public HashSet<Fragment> topicIntersect(File tm1, String loc1, File tm2, 
     String loc2) 

这是生成了什么的wsimport

/** 
* 
* @param arg3 
* @param arg2 
* @param arg1 
* @param arg0 
* @return 
*  returns webservice.HashSet 
*/ 
@WebMethod 
@WebResult(partName = "return") 
public HashSet topicIntersect(
    @WebParam(name = "arg0", partName = "arg0") 
    String arg0, 
    @WebParam(name = "arg1", partName = "arg1") 
    String arg1, 
    @WebParam(name = "arg2", partName = "arg2") 
    String arg2, 
    @WebParam(name = "arg3", partName = "arg3") 
    String arg3); 

webservice.HashSet是也产生了空类没有方法...

+0

请提供您的网络服务的方法的签名(包括进口)。 – AndrewBourgeois

我不确定JAX-WS是否直接支持HashSet。但是,列表肯定会奏效。另外,如果您使用代码优先方法,则不需要生成客户端存根。你应该能够使用你的服务实现的相同接口。

+0

它不支持HashSet和List ...这就是为什么创建存根类(webservice.hashset)。 “代码优先的方法”是什么意思? – Stephan

+0

“代码优先”意味着您首先在Java中实现服务,然后从中生成WSDL。显然,您然后使用该WSDL来生成客户端存根。这种方法(从生成的WSDL生成客户端代码)有时用于Axis2(用于POJO服务的ADB客户端存根),但它不适用于JAX-WS。 –

+0

你有什么建议,我可以阅读这些东西了吗?一个小教程或一个小实施例子? – Stephan