Page History
詳細は、「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 ) ; } } |