Apache CXF Web服务不返回字符串数组

时间:2013-07-29 10:55:08

标签: java web-services soap cxf

我是java web服务编程的新手,这个问题可能看起来非常基本。但我找不到问题。

我使用Eclipse为Tomcat 6.0.37开发了Apache CXF(v 2.7.6)Web服务。 基本上,我创建了一个动态Web项目,创建了webservice类并从该类创建了webservice(eclipse生成了其余的,包括wsdl和xsd)。一切正常,除非我尝试返回String数组。 这是我的方法

@WebMethod(action="getFriends")
    public String[] getFriends(String u, String p){
        return new String[] {"item 1","item 2","item 3"};
    }

响应类型定义

<xs:complexType name="getFriendsResponse">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" minOccurs="0" name="return" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

这是返回的消息

INFO:出站消息

ID:34 编码:UTF-8 内容类型:text / xml 标题:{} 有效负载:

正如你所看到的,甚至没有返回部分。知道什么可能是错的吗?

我在这个项目中使用Windows 7,Eclipse Kepler和JDK6。

1 个答案:

答案 0 :(得分:0)

无论我记得什么,它都行不通,因为你无法在HTTP响应中将数组解析为纯文本。

尝试这两种方法 - 1)将方法的返回类型更改为String,然后返回这样的字符串

 return Arrays.toString(new String[] {"item 1","item 2","item 3"});

2)您可以更改列表的返回类型并返回如下列表 -

return Arrays.asList(new String[] {"item 1","item 2","item 3"});

由于