gpt4 book ai didi

java - JAXB 中的更改未反射(reflect)在 SOAP 响应中

转载 作者:行者123 更新时间:2023-12-01 11:20:26 28 4
gpt4 key购买 nike

我有一个非常简单的 Web 服务实现,如下所示

package implementation;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public class WhatsMyName {

@WebMethod
public String getMyName(){
return "John Smith";
}

}

我在实现类文件上运行了 wsgen 以生成 JAXB 类和 WSDL(以及 XSD)

当我尝试调用此方法时,SOAP 响应如下

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getMyNameResponse xmlns:ns2="http://implementation/">
<return>John Smith</return>
</ns2:getMyNameResponse>
</S:Body>
</S:Envelope>

如果我想生成如下所示的响应,我该怎么办

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:NameResponse xmlns:ns2="http://implementation/">
<Name>John Smith</Name>
</ns2:NameResponse>
</S:Body>
</S:Envelope>

我确实尝试更改生成的(由wsgen)JAXB响应类以具有@XmlType(name =“NameResponse”,namespace =“http://implementation/”)和@XmlRootElement(name =“NameResponse”,namespace =“http://implementation/”)但是 SOAP 响应 xml 仍然保持不变。

每当我尝试将同一响应类中的 @XmlElement(name = "return", namespace = "") 更改为 @XmlElement(name = "Name", namespace = "") 时,我都会收到以下运行时错误执行发布此 Web 服务实现的发布者。

WebServiceException: class implementation.jaxws.GetMyNameResponse do not have a property of the name return 

我刚刚开始学习 SOAP,我在 google 上搜索了这个异常,但没有找到有效的解决方案。

最佳答案

我认为您正在寻找注释@WebResult

在这种情况下,代码可以是

@WebService
public class WhatsMyName {

@WebMethod
@WebResult(name = "Name")
public String getMyName(){
return "John Smith";
}

关于java - JAXB 中的更改未反射(reflect)在 SOAP 响应中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31309555/

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