代码之家  ›  专栏  ›  技术社区  ›  Petr Macek

如何在SpringWS中将自定义SOAP头元素添加到生成的WSDL中

  •  1
  • Petr Macek  · 技术社区  · 15 年前

    我们正在从WebLogicWeb服务迁移到SpringWS(1.5.x)。 我们目前面临的一个问题是:

    我们需要将一个上下文对象(在WLS上,它作为SOAP头元素传递)传递给其他仍在从SpringWS-Powered服务运行的WLS上的服务。header元素仍然在客户机端制定,新创建的WS(SpringWS)应该将其传递给其他服务。

    我可以想象自定义元素将如何传递:重写DoWithMessage(WebServiceMessage)方法…

    有没有一种方法可以在defaultwsdl11definition的帮助下生成WSDL来包含该自定义头元素? 参见示例:

    <wsdl:operation name="GetSomeInformation">
        <soap:operation
            soapAction="http://www.dummyservice.com/InformationService/GetSomeInformation" />
        <wsdl:input>
            <soap:body use="literal" />
            <soap:header message="ctx:ServiceContextMessage" part="serviceContext" use="literal" />
        </wsdl:input>
        <wsdl:output>
            <soap:body use="literal" />
        </wsdl:output>
        <wsdl:fault name="Error">
            <soap:fault name="Error" use="literal" />
        </wsdl:fault>
    </wsdl:operation>
    

    谢谢帮助

    1 回复  |  直到 13 年前
        1
  •  2
  •   Daniel Cox    15 年前

    我们在我的项目中遇到了类似的问题。请检查扩展SuffixBasedPortTypesProvider、SuffixBasedMessagesProvider和Soap11Provider。我们使用inliningxsdschematypesprovider导入用于构建WSDL的模式。如果您通过调试器运行WSDL生成,您将了解它的工作方式。Spring代码易于遵循和扩展。