短いバージョン: WebContainer によって実行される Command/JSP によって呼び出される POJO コードから HttpRequest オブジェクトにアクセスするにはどうすればよいですか?
- POJO は CommandContext または HttpRequest (またはそのいとこ) を認識しません。
- POJO は実行スタックのかなり奥深くにあるため、メソッドのシグネチャを変更すると、すべての親メソッドのシグネチャと、これらのメソッドが呼び出される場所が変更されます。
同様の投稿も確認しました(私のPOJOはWebContainerによって呼び出され、このようなフープを経由せずにリクエストにアクセスする方法が必要です):Webコンテナ外のPOJOからWebセッションを取得する
長いバージョン:私は干し草の山でこの針を見つけようとしてきました: 現在の WebContainer スレッド (または、TransactionManager を介してトランザクションを取得するのと同様のその他の手段)。
これらのコンテナ スレッドが単一の実行中のページ/コマンド/etc に結び付けられていることを知っているので、WorkArea、ThredLocal スタイルのあまり望ましくないアプローチを使用せずにこれを行う方法があるかどうか疑問に思っていました。
私たちが直面している問題は、何年にもわたって、storeId や langId を気にせずに書かれた多くのコードがあったことです。したがって、これらすべてのコードを修正するのではなく、何らかの方法で (HttpRequest オブジェクトを使用して) セッション コンテキストにアクセスし、CommandContext やその他の構造を取得して、storeId と langId およびセッションに関連付けられたその他のデータを見つけられるようにしたいと考えています。 .
さらに詳細が必要な場合は、お気軽にお問い合わせください。
擬似コード スニペットの例:
public class MyLittleHelper {
. . .
void unawareMethod() {
// I know it is really bad practice not to pass the actual objects around...
// But hear me out for a sec...
// This could be the easiest way of changing things, however bad it looks.
// my storeId and langId unaware method now needs to access to storeId and langId
}
. . .
} // end of class
どんな助けでも大歓迎です。