Spring Integration を使用してメッセージをルーティングする Web アプリを開発していますが、ヘッダー値の受け渡しに問題があります。メッセージはルーターとサービス アクティベーターを通過します。
ヘッダー値は私のルーターのルーティング方法で利用できるので問題ないようです。これは問題ではないと仮定しましょう (サービス アクティベーターを無効にして確認しました)。
私のサービス アクティベーター メソッドに関しては、次のエラーがスローされます。
my-spring-integration.xml
<channel id="route" />
<service-activator method="process" input-channel="route" ref="myService" output-channel="myOutputChannel" />
MyRouter.java
@Component
public class MyRouter {
public String router(String message, @Header("isValid") boolean isValid) {
// isValid is "true"
return "route";
}
}
MyService.java
@MessageEndpoint
@Transactional
public class MyService {
public void process(String message, @Header("isValid") boolean isValid) {
...
}
}
何故ですか?ルーティング後にヘッダー値は消去されますか? それとも私の設定が間違っていますか?プロセス メソッドに @ServiceActivator アノテーションを追加しようとしましたが、役に立ちませんでした。どんな助けでも大歓迎です。