【问题标题】:How can I put a HashMap as an input in a Java Web Service?如何将 HashMap 作为 Java Web 服务的输入?
【发布时间】:2011-04-25 18:02:05
【问题描述】:

我收到此错误:

服务类“myclass”不符合 JAX-RPC 1.1 规范的一项或多项要求,并且可能无法正确部署或运行​​。 服务类“myclass”上的方法“mymethod”使用 JAX-RPC 规范不支持的数据类型“java.util.Map”。该类型的实例可能无法正确序列化或反序列化。可能会导致数据丢失或 Web 服务完全失败。

所以,我不知道如何使用那种类型的数据,作为输入我有这个:

Map<String, String>[] complex

我把它作为一个数组,因为 Tibco(一种集成工具)无法将 hashmap 视为各种元素。

提前致谢!

【问题讨论】:

标签: java web-services hashmap tibco


【解决方案1】:

附带说明,如果您正在编写 web 服务,您应该考虑使用较新的技术。 jax-rpc 非常 已经过时了,并且使用了难以使用的肥皂编码。考虑使用 jax-ws(这些天内置在 jdk 中)或其他一些使用文档文字编码的 Web 服务实现。

【讨论】:

  • 谢谢!我会考虑使用 jax-ws :D
【解决方案2】:

Web 服务应该可以跨编程语言进行互操作,而 java.util.Map 是特定于 Java 的。您应该为该方法编写一个外观,将 Map 的内容转换为数组。

【讨论】:

    【解决方案3】:

    Map 是一个接口,所以你不能使用它,但你可以使用以下支持的实现类之一:

    有关受支持的实现类,请参阅此链接 - 标题为 JAX-RPC 类型支持的部分

    支持的类型:http://sentex.net/~pkomisar/WS/WS_8_JAX-RPC.html

    【讨论】:

    • 那已经过时了。检查这个新的支持here
    • JAX-RPC 1.1 Specification,第 5.1.3 节指出:Other standard Java classes (for example: classes in the Java Collection Framework) are mapped using pluggable serializers and deserializers. Refer to the chapter 15 (“Extensible Type Mapping”) for more details on the pluggable serializers and deserializers. 其他指向 spec 的链接。
    猜你喜欢
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    相关资源
    最近更新 更多