你能从JAX-WS @WebMethod返回一个数组吗?

时间:2009-09-30 16:36:49

标签: java xml web-services jaxb jax-ws

我很确定你可以,但除了回答标题中的问题之外,你还可以解释这样做的优点,缺点,警告(如果有的话)吗?我知道你不能从WebMethod(这是愚蠢的,IMO,但我不知道设计原因是什么,我应该拒绝判断)返回List,Set,Collection,Map或任何接口。

感谢您的任何建议。

- LES

2 个答案:

答案 0 :(得分:3)

你可以返回数组,我发现它们很有用。

集合是一个问题的主要原因是某些语言(例如C)不理解集合的概念,因此,为了保持可移植性,您需要确保传递可以在大多数情况下表示的结构语言。

此外,我从不擅长传递集合,因为来自Web服务的内容应该是相当静态的。如果要添加它,则将数组转换为集合,然后将数组传回Web服务以进行更改。

答案 1 :(得分:1)

詹姆斯是对的,你可以返回数组。您还可以返回集合类型。 wsdl将类型定义为列表。但是,大多数客户端会将类型转换为数组(至少这是我发现C#使用JAX-WS服务所做的)。

我使用了第三方(Apache Axis2)来生成Web服务,我遇到了一个奇怪的问题,即wsdl没有被正确读取,并且消费者无法正确地反序列化数组。有必要创建一个装饰器对象,它只包含数组对象,并从web方法返回。

我认为这只是Axis2在.NET网络服务互操作方面表现不佳,但需要注意的事项。