2.16 Axisメッセージ・ハンドラー

LANSA Integrator

2.16 Axisメッセージ・ハンドラー


「SOAPエージェントメッセージ・ハンドラー」を参照してください。

Apache Axisを使用すると、カスタム・メッセージ・ハンドラーを作成して配布することができます。

これらのハンドラーでは、送信前にSOAP XMLメッセージに追加処理を行うことができます。

サービスの構成名を決めるには、LOG4Jのログを有効にしてSOAPエージェントサービスを一度実行します。

 

log4j.logger.org.apache.axis=DEBUG, FILE

log4j.additivity.org.apache.axis=false

 

LOG4J.TXTファイルでsetTargetService文字列を検索します。括弧内の値が構成サービス名です。

 

[DEBUG] [message.SOAPBody] addBodyElement - Adding body element to message...

[DEBUG] [client.Call] invoke - Enter: Call::invoke()

[DEBUG] [axis.MessageContext] setTargetService - MessageContext: setTargetService(MyServicePort)

 

構成ファイルに配布サービス・エントリーを追加します。

ハンドラー・タイプの値はカスタムJavaハンドラー・クラスです。

ハンドラー・インスタンスに構成パラメータを渡すこともできます。

 

<service name="MyServicePort">

  <requestFlow>

    <handler type="java:com.acme.axis.handler.MyHandler">

      <parameter name="acme.keyword" value="value"/>

    </handler>

  </requestFlow>

</service>

 

カスタム・ハンドラー・クラスでは、org.apache.axis.handlers.BasicHandlerクラスを拡張する必要があります。

 

package com.acme.axis.handler ;

 

import org.apache.axis.AxisFault ;

import org.apache.axis.MessageContext ;

 

import org.apache.axis.message.PrefixedQName ;

 

import org.apache.axis.handlers.BasicHandler ;

 

import org.w3c.dom.Node ;

import org.w3c.dom.NodeList ;

 

import javax.xml.soap.Name ;

import javax.xml.soap.SOAPPart ;

import javax.xml.soap.SOAPBody ;

import javax.xml.soap.SOAPElement ;

import javax.xml.soap.SOAPMessage ;

import javax.xml.soap.SOAPEnvelope ;

import javax.xml.soap.SOAPException ;

 

import javax.xml.rpc.handler.soap.SOAPMessageContext ;

 

public class MyHandler extends BasicHandler

{

    public void invoke ( MessageContext messageContext ) throws AxisFault

    {

         System.out.println ( "MyHandler: invoke" ) ;

 

         String value = (String)getOption ( "acme.keyword" ) ;

 

         modifyMessage ( messageContext ) ;

 

    }

}