エンタープライズ アプリケーションには、サービス層(ビジネス ロジックとデータベース アクセスを含む EJB3.0) とWeb 層(サーブレット/JSP) があります。分散マシンの JBoss AS 7 では、分離された ear と war がデプロイされます。
サービス層には、ステートフルEJBとステートレスEJB の両方が含まれます。
メソッド呼び出し用の EJB インターセプターがあります。Web層からログインしたユーザーの場合、ユーザー情報はHttpSessionに保存されます (ユーザーの検証は、DB で自分のアカウントとパスワードをクエリすることで簡単に処理されます)。
パフォーマンス チューニングでは、どのユーザーがそれらの EJB メソッドを呼び出したか、ユーザー情報、日付情報などを知る必要があります。これらは抽出されてログに記録されるか、解析のために DB に保存されます。
今私の質問は:
EJB 層で呼び出し元の情報を区別する方法は?
EJB インターセプターは、EJB メソッドのパラメーターと、それがいつ呼び出されたかを取得できます。しかし、誰がそれを呼んだかはわかりません。
EJB 層と Web 層を組み合わせるのが見苦しいことはわかっています。したがって、Session/Request オブジェクトから必要なものを取得するのに役立つ場合でも、HttpSession/HttpRequest を EJB レイヤーに渡しません。
また、Web からすべての EJB メソッドにパラメータとして TuningInfo (リクエスト情報、ユーザー情報などを含む) を渡すことができないほど多くの EJB メソッドがあります。
EJB層で呼び出し元の情報を取得することは可能ですか?
前もって感謝します。