1

handler.handlResponse() から SOAP ヘッダーを追加すると、ハンドラーに追加されたヘッダーが表示されますが、これらのヘッダーはクライアントに送信されません。

これが私の handleResponse() メソッドです。

    public static final String WEB_SERVICE_NAMESPACE_PREIFX = "dm";
    public static final String WEB_SERVICE_NAMESPACE_URI    = "urn:com.qwest.dms.dto";
    public boolean handleResponse(MessageContext context)
    {
        logger.debug("TransactionLoggerHandler.handleResponse invoked");
        try
        {
            SOAPMessageContext soapContext;
            soapContext = (SOAPMessageContext)context;
            SOAPMessage message = soapContext.getMessage();
            SOAPHeader soapHeader = message.getSOAPHeader();
            String version = "version";
            SOAPHeaderElement header;
            SOAPFactory soapFactory;

            Name name;

            logger.debug("Adding soap header ["+version+"] with value [2.0].");

            soapHeader.addNamespaceDeclaration(Constants.WEB_SERVICE_NAMESPACE_PREIFX, Constants.WEB_SERVICE_NAMESPACE_URI)
            SOAPHeaderElement headerElement
                = (SOAPHeaderElement)message.getSOAPPart().getEnvelope().getHeader().addChildElement(
                    "version",
                    Constants.WEB_SERVICE_NAMESPACE_PREIFX,
                    Constants.WEB_SERVICE_NAMESPACE_URI );
            headerElement.addTextNode("2.0");

            String headerName="protocol";
            String headerValue="2.0.0";
            logger.debug("Adding soap header ["+headerName+"] with value ["+headerValue+"].");
            soapFactory = SOAPFactory.newInstance();
            name = soapFactory.createName(headerName, 
                                        Constants.WEB_SERVICE_NAMESPACE_PREIFX,    
                                        Constants.WEB_SERVICE_NAMESPACE_URI );    
            header = soapHeader.addHeaderElement( name ); 
            header.addTextNode(headerValue);
            message.saveChanges();

            DmsUtil.printSOAPMessage(message);
            logger.debug("Soap header ["+version+"] with value [2.0] added.");                  
        }
        catch (Exception e)
        {
            logger.error(e);
        }

        return true;
    }




I see the output from this method as the following:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header xmlns:dm="urn:com.qwest.dms.dto">
   <dm:version>2.0</dm:version>
   <dm:protocol>2.0.0</dm:protocol>
</env:Header>
<env:Body>

クライアントから私は以下を取得します:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Header/>
  <env:Body>
</env:Envelope>

これらのヘッダーがネットワーク経由で送信されない理由がわかりません。どんな助けでも大歓迎です。ところで、私は jboss4 の下で jax rpc webservices を使用しています (私はこれをアップグレードする必要がありますが、いくつかの制約のためにできません:( )。

4

0 に答える 0