Versions Compared

Key

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

...

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

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

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

サービスの構成名を決めるには、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)


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

ハンドラー・タイプの値はカスタム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 ) ;
 
    }
}