Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以从JAX-WS@WebMethod返回数组吗?_Java_Xml_Web Services_Jaxb_Jax Ws - Fatal编程技术网

Java 可以从JAX-WS@WebMethod返回数组吗?

Java 可以从JAX-WS@WebMethod返回数组吗?,java,xml,web-services,jaxb,jax-ws,Java,Xml,Web Services,Jaxb,Jax Ws,我很确定你可以,但是除了回答标题中的问题外,你能解释一下这样做的利弊和注意事项吗?我知道您不能从WebMethod返回列表、集合、集合、映射或任何接口(我认为这很愚蠢,但我不知道我应该保留判断的设计原因是什么) 谢谢你的建议 -- LES您可以返回数组,我发现它们很有用 集合成为问题的主要原因是某些语言(如C)不理解集合的概念,因此,为了保持可移植性,您需要确保传递可以在大多数语言中表示的结构 此外,我从不喜欢传递集合,因为来自Web服务的内容应该是相当静态的。如果要添加到其中,请将数组转换为集

我很确定你可以,但是除了回答标题中的问题外,你能解释一下这样做的利弊和注意事项吗?我知道您不能从WebMethod返回列表、集合、集合、映射或任何接口(我认为这很愚蠢,但我不知道我应该保留判断的设计原因是什么)

谢谢你的建议

--
LES

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

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


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

James是正确的,您可以返回数组。还可以返回集合类型。wsdl将把类型定义为一个列表。但是,大多数客户机都会将类型转换为数组(至少我发现C#在JAX-WS服务中就是这样做的)

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


我认为这只是Axis2与.NET web服务Interperter的配合不好,但需要注意的是。

此列表是通用列表吗?还是原始列表?(当然,在Java中)否则,您如何与客户机通信,让客户机可以将列表中的每个元素转换为String、Long、MyBean等?@LES2:您应该使用泛型,否则内容将全部转换为客户机上的对象。您需要在客户机上将它们重新转换为正确的类型,该类型应由web服务使用者生成。