Page History
詳細は、「2.17 SOAP Agent メッセージ・ハンドラー」を参照してください。
Apache Axisを使用すると、カスタム・メッセージ・ハンドラーを作成して配布することができます。
これらのハンドラーでは、送信前にSOAP XMLメッセージに追加処理を行うことができます。
サービスの構成名を決めるには、LOG4Jのログを有効にしてSOAP Agentサービスを一度実行します。
...
詳細は、「2.17 SOAP Agent メッセージ・ハンドラー」を参照してください。
Apache Axisを使用すると、カスタム・メッセージ・ハンドラーを作成して配布することができます。
これらのハンドラーでは、送信前にSOAP XMLメッセージに追加処理を行うことができます。
サービスの構成名を決めるには、LOG4Jのログを有効にしてSOAP Agentサービスを一度実行します。
Wiki Markup log4j.logger.org.apache.axis=DEBUG, FILE
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ハンドラー・クラスです。
ハンドラー・インスタンスに構成パラメータを渡すこともできます。
| 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クラスを拡張する必要があります。 package com
| 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 ) ; |
...
} |
...
} |
...