gpt4 book ai didi

xsd - 我应该更改什么才能在自动生成的 JAX-WS 的响应 XSD 上获得不同的元素名称?

转载 作者:行者123 更新时间:2023-12-04 23:04:03 25 4
gpt4 key购买 nike

我用 JAX-WS 用 Ja​​va 创建了一个 Web 服务.这是一个简单的方法,只返回 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

为了实现这一目标,我必须改变什么?

最佳答案

我找到了答案 here .

我加了 @WebResult(name="mod2Result")到我的界面:

@WebService
public interface Mod2 {

@WebMethod
@WebResult(name="mod2Result")
String mod2(String x);

}

然后运行 ​​ wsgen再次。这产生了以下响应:
@XmlRootElement(name = "mod2Response", namespace = "http://mod2/")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "mod2Response", namespace = "http://mod2/")
public class Mod2Response {

@XmlElement(name = "mod2Result", namespace = "")
private String mod2Result;

/**
*
* @return
* returns String
*/
public String getMod2Result() {
return this.mod2Result;
}

/**
*
* @param mod2Result
* the value for the mod2Result property
*/
public void setMod2Result(String mod2Result) {
this.mod2Result = mod2Result;
}

}

其中还有 @XmlElement(name = "mod2Result")正如 Joshi 所说,但它也改变了变量、setter 和 getter 的名称。我在 Response 类中直接尝试使用 @XmlElement ,但没有成功。

关于xsd - 我应该更改什么才能在自动生成的 JAX-WS 的响应 XSD 上获得不同的元素名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16528226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com