ここでまたアシッシュ。
着信SOAPリクエストを解析し、リクエストからの情報の一部をログに記録するルートを開発しました。SOAPサービスリクエストから情報を取得するためにヘッダーとXPATHを使用しました。ルートは適切な情報を正常に解析してログに記録します。
ルートは次のとおりです。
<route streamCache="true">
<from uri="<some URI>"/>
<setHeader headerName="SOAPAction">
<constant>http://www.something.com/constant>
</setHeader>
<setHeader headerName="actionId">
<xpath resultType="java.lang.String">//ws:actionId/text()</xpath>
</setHeader>
<choice>
<when>
<xpath>//ws:actionId = '1'</xpath>
<to ref="callService" />
</when>
<otherwise>
<log message="Wrong Action ID : ${in.headers.actionId}"
loggingLevel="ERROR"/>
</otherwise>
</choice>
</route>
ロジックに従って、actionIdが1の場合、ルートはcallService URIにリダイレクトする必要があります。そうでない場合、応答なしで間違ったアクションIDをログに記録する必要があります。
actionIdが1の場合、ロジックは機能し、callServiceにリダイレクトされ、適切な応答を呼び出し元に送信します。actionIdが1以外の場合、アクションIDを含む間違ったアクションIDに関するログを書き込みますが、呼び出し元への応答と同じ要求を送信します。
soapUIとJavaSocketProgrammingを使用してチェックしましたが、出力は同じで、actionIdを正確にログに記録しますが、呼び出し元への応答と同じ要求を送信します。
応答と同じ要求はしたくない。応答は空白にする必要があります。
誰かが私が解決策を見つけるのを手伝ってくれますか?
よろしく、
Ashish