【发布时间】:2011-05-23 11:21:00
【问题描述】:
我在 Eclipse 中创建了一个示例 jax-ws 项目。
下面是包含Interface、Imp类和Helper类的代码
界面:
@WebService
public interface HelloWorld
{
@WebMethod(operationName="getString")
@WebResult(name="Result")
Helper getHelloWorldAsString(@WebParam(name="input")String str);
}
实施:
@WebService(endpointInterface = "com.test.HelloWorld")
public class HelloWorldImpl implements HelloWorld
{
@Override
public Helper getHelloWorldAsString(String str) {
Helper h = new Helper();
String[] str1 = {"ABC", "DEF", "GHI"};
h.setTempValue(str1);
return h;
}
}
助手:
@XmlRootElement(name = "TypeCode")
@XmlType(name = "TypeCode")
@XmlAccessorType(XmlAccessType.FIELD)
public class Helper
{
@XmlElement(name="value")
private String[] tempValue;
public String[] getTempValue() {
return tempValue;
}
public void setTempValue(String[] tempValue) {
this.tempValue = tempValue;
}
}
当我部署上述代码并发送请求时,我看到的响应如下:
<ns2:getStringResponse xmlns:ns2="http://test.com/">
<Result>
<value>ABC</value>
<value>DEF</value>
<value>GHI</value>
</Result>
</ns2:getStringResponse>
上述响应的根元素为“结果”,但我在 Helper 类中声明了 @XmlRootElement(name = "TypeCode")。我的问题是为什么“TypeCode”作为根元素而不是“结果”没有编组。 jax-ws 是否忽略 @XmlRootElement 并与 @WebResult 一起使用?
【问题讨论】:
-
如果有人对此有解决方案,请告诉我。