java - Spring WS强制SOAP端点操作名称

标签 java spring soap

我正在用spring实现SOAP WS,我有XSD,然后在端点上添加如下注释:

@Endpoint
public class StuffRequestEndpoint {

    @PayloadRoot(namespace = "urn:mycomp-com/xyz/ws/msg", localPart = "StuffRequest")
    public
    @ResponsePayload
    StuffResponse requestStuff(@RequestPayload StuffRequest request) {

我的问题是产生的WSDL具有有趣的操作名称:
    <wsdl:operation name="Stuff">
        <soap:operation soapAction=""/>
        <wsdl:input name="StuffRequest">
            <soap:body use="literal"/>
        </wsdl:input>
        <wsdl:output name="StuffResponse">
            <soap:body use="literal"/>
        </wsdl:output>

如何覆盖产生的操作名称?

谢谢。

最佳答案

我看不到您对此事做了任何事情。因此,让我们尝试遵循JavaDocs的DefaultWsdl11Definition:

/**
 * Sets the SOAP Actions for this binding. Keys are {@link javax.wsdl.BindingOperation#getName() binding operation
 * names}; values are {@link javax.wsdl.extensions.soap.SOAPOperation#getSoapActionURI() SOAP Action URIs}.
 *
 * @param soapActions the soap
 */
public void setSoapActions(Properties soapActions) {
    soapProvider.setSoapActions(soapActions);
}

用法类似于(Soap12Provider):
protected void populateSoapOperation(SOAP12Operation soapOperation, BindingOperation bindingOperation)
        throws WSDLException {
    String bindingOperationName = bindingOperation.getName();
    String soapAction = getSoapActions().getProperty(bindingOperationName, "");
    soapOperation.setSoapActionURI(soapAction);
}

这样一来,您会看到一个空字符串。

关于java - Spring WS强制SOAP端点操作名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33649765/

相关文章:

java - Birt 布局中缺少预览选项卡

java - 如何调用我的音乐类并在 while 循环内播放音乐,该循环在调用音乐类的行下执行我的行?

java - 无法让 hibernate 在 Spring Web Flow 项目中工作

java - 从Web服务返回X509证书

c# - 在 ASP.NET 中使用 SOAP Web 服务

java - Weblogic xss漏洞: html character entities getting decoded in jsp

java - 有效的最终/最终限制不是没用吗?

java - spring cron 每小时在第 35 分钟运行

java - 预配置的 netbeans 项目与 NoSuchMethodError hibernate 和 spring 冲突

java - Apache CXF 中未发现加密对象异常