Я создал пример проекта jax-ws в моем затмении.
ниже приведен код, который имеет интерфейс, класс Imp и класс помощника
интерфейс:
@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>
В ответе выше есть корневой элемент как «Результат», но я объявил @XmlRootElement(name = "TypeCode")
в классе Helper.Мой вопрос заключается в том, почему нет маршалинга для «TypeCode» в качестве корневого элемента вместо «Result».Jax-ws игнорирует @XmlRootElement
и идет с @WebResult
?