【问题标题】:How to create and process a complex object using jax-ws?如何使用 jax-ws 创建和处理复杂对象?
【发布时间】:2011-11-03 18:34:18
【问题描述】:

在服务器端,我创建了一个名为 Fragment 的对象。可以说它是一些字符串的数据容器。

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

我想返回一组 Fragments 给客户。 wsimport 创建一个 HashSet 类,它是调用相应服务器方法的方法的返回类型。

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

编辑: 这是webservice发布的方法的签名:

@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 也是一个没有方法的空类...

【问题讨论】:

  • 请提供您的网络服务方法的签名(包括导入)。

标签: java web-services object


【解决方案1】:

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

【讨论】:

  • 它也不支持 HashSet 和 List...这就是为什么要创建这些存根类 (webservice.hashset)。 “代码优先方法”是什么意思?
  • “代码优先”意味着您首先在 Java 中实现服务,然后从中生成 WSDL。显然,您随后使用该 WSDL 来生成客户端存根。这种方法(从生成的 WSDL 生成客户端代码)有时与 Axis2(POJO 服务的 ADB 客户端存根)一起使用,但它不是 JAX-WS 的正确方法。
  • 您有什么建议可以让我阅读这些内容吗?小教程还是小实现示例?
  • 以下问题有几个指向 JAX-WS 教程和文档的链接:stackoverflow.com/questions/1533118/getting-started-with-jax-ws
猜你喜欢
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
相关资源
最近更新 更多