在AXIS2 Web服务中添加SOAP Header以进行响应

时间:2014-02-18 05:42:54

标签: java web-services soap axis2 soapheader

我想在soap请求的响应中添加soap标头。我google了很多。我发现是添加处理程序并在module.xml中定义它,但我在java Web应用程序中嵌入了AXIS2 Web服务,所以我没有module.xml或axis2.xml。在我的项目中,只有services.xml是由axis2 lib自动生成的,同时生成axis2服务器端代码。

在WSDL中,操作定义如下:

        <operation name="XYZ">
            <soap:operation soapAction="SOAP_HTTP#XYZ" />
            <input>
                <soap:body use="literal" parts="XYZ"
                    namespace="http://www.ecma-international.org/standards...." />
                <soap:header message="wss:header" part="header" use="literal"></soap:header>
            </input>
            <output>
                <soap:body use="literal" parts="XYZResponse"
                    namespace="http://www.ecma-international.org/standards..." />
                <soap:header message="wss:header" part="header" use="literal"></soap:header>
            </output>
            <fault name="FaultName">
                <soap:fault use="literal" name="FaultName"
                    namespace="http://www.ecma-international.org/standards..." />
            </fault>
        </operation>

我能够在请求中成功添加SOAPHeader,并且还可以从请求和响应中读取标头。但是我无法在SOAP响应中添加SOAPHeader“header”。

请提供您如何在SOAP响应中添加soap标头的建议?

感谢。

1 个答案:

答案 0 :(得分:0)

您必须通过Axis2中的新模块添加处理程序

句柄调用方法将获取响应消息上下文,您可以在那里添加标题。

见这里:http://wangxiangblog.blogspot.in/2011/01/develop-web-service-with-axis2-7-add.html

获取请求标题

在处理程序

   invoke(MessageContext msgContext) - This is response message context

    MessageContext reqMsgCtx = MessageContext.getCurrentMessageContext(); - This gives    request message context
    //Get header with following code
    SOAPEnvelope env = reqMsgCtx.getEnvelope();
    SOAPHeader aSoapHeader = env.getHeader();

//将标题块添加到响应邮件标题的代码