こんにちは、最初の応答の ServiceGroupID ノードに埋め込まれている SOAP セッションに基づいて、Apache キャメルでスティッキー負荷分散を実行したいと思います。
次のように小さなルートを書きました:
from(uri)
.loadBalance().sticky(xpath(query).namespaces(env).namespaces(wsa).namespaces(ax))
.to(BE1,BE2);
ここで、URI は要求が渡される文字列で、BE1 と BE2 は 2 つのバックエンド サーバーです。
そして私の質問は
String query = "/soapenv:Envelope/soapenv:Header/wsa:ReplyTo/wsa:ReferenceParameters/axis2:ServiceGroupId/text()";
私が間違っていなければ、このクエリは SOAP ヘッダーから servicegroupID を抽出します。
しかし、バランシングを実行しようとすると、なんらかの理由で、リクエストが同じバックエンド サーバーに渡されません。
私のenv、wsa、およびaxは名前空間であり、次のとおりです。
Namespaces env = new Namespaces("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
Namespaces wsa = new Namespaces("wsa", "http://www.w3.org/2005/08/addressing");
Namespaces ax = new Namespaces("axis2", "http://ws.apache.org/namespaces/axis2");
ここで何か間違ったことをしていますか?もしそうなら何?助けていただければ幸いです。