【发布时间】:2010-12-02 17:26:52
【问题描述】:
我很确定你可以,但除了回答标题中的问题之外,你能否解释一下这样做的利弊、注意事项(如果有的话)?我知道你不能从 WebMethod 中返回 List、Set、Collection、Map 或任何接口(这很愚蠢,IMO,但我不知道我应该保留判断的设计原因是什么)。
感谢您的建议。
-- LES
【问题讨论】:
标签: java xml web-services jaxb jax-ws
我很确定你可以,但除了回答标题中的问题之外,你能否解释一下这样做的利弊、注意事项(如果有的话)?我知道你不能从 WebMethod 中返回 List、Set、Collection、Map 或任何接口(这很愚蠢,IMO,但我不知道我应该保留判断的设计原因是什么)。
感谢您的建议。
-- LES
【问题讨论】:
标签: java xml web-services jaxb jax-ws
你可以返回数组,我发现它们很有用。
集合成为问题的主要原因是某些语言(例如 C)不理解集合的概念,因此,为了保持可移植性,您需要确保传递可以在大多数情况下表示的结构语言。
此外,我从不喜欢传递集合,因为来自 web 服务的内容应该是相当静态的。如果要添加,则将数组转换为集合,然后将数组传回给 webservice 进行更改。
【讨论】:
James 是对的,你可以返回数组。您还可以返回集合类型。 wsdl 将类型定义为列表。但是,大多数客户端会将类型转换为数组(至少这是我发现 C# 对 JAX-WS 服务所做的)。
我使用第 3 方 (Apache Axis2) 来生成 Web 服务,我遇到了一个奇怪的问题,即 wsdl 没有被正确读取,并且消费者无法正确反序列化数组。有必要创建一个装饰器对象,它只包含数组对象并从 web 方法返回。
我认为这只是 Axis2 不能很好地与 .NET Web 服务交互器配合使用,但需要注意一些事情。
【讨论】: