我用 Java 创建了一个 Web 服务JAX-WS
。这是一个简单的,只返回 a 的大写版本String
:
@WebService(endpointInterface = "mod2.Mod2")
public class Mod2Impl implements Mod2 {
@Override
public String mod2(String x) {
return x.toUpperCase();
}
}
及其界面:
@WebService
public interface Mod2 {
@WebMethod
String mod2(String x);
}
JAX 为我生成了带有相关类的 mod2.jaxws 包。响应是这样的:
@XmlRootElement(name = "mod2Response", namespace = "http://mod2/")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "mod2Response", namespace = "http://mod2/")
public class Mod2Response {
@XmlElement(name = "return", namespace = "")
private String _return;
/**
*
* @return
* returns String
*/
public String getReturn() {
return this._return;
}
/**
*
* @param _return
* the value for the _return property
*/
public void setReturn(String _return) {
this._return = _return;
}
}
部署后,它会生成正确的WSDL
文件并导入XSD
. 这是XSD
:
<xs:schema xmlns:tns="http://mod2/" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://mod2/">
<xs:element name="mod2" type="tns:mod2"/>
<xs:element name="mod2Response" type="tns:mod2Response"/>
<xs:complexType name="mod2">
<xs:sequence>
<xs:element name="arg0" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="mod2Response">
<xs:sequence>
<xs:element name="return" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
现在,我想要的是将 XSD 中名为“return”的元素更改为我想要的任何内容。我尝试更改@XmlElement(name = "return", namespace = "")
Mod2Response 类中的 ,但这会引发以下错误:
GRAVE: WSSERVLET11: failed to parse runtime descriptor: javax.xml.ws.WebServiceException: class mod2.jaxws.Mod2Response do not have a property of the name return
为了实现这一目标,我必须改变什么?