Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

詳細は、「2詳細は、「2.17 SOAP Agent メッセージ・ハンドラー」を参照してください。メッセージ・ハンドラー」を参照してください。

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

...

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

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)


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

...

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

Code Block
<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クラスを拡張する必要があります。

...

Code Block
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 ) ;
 
    }
}