2

私の Java EE 6 アプリケーション (Weblogic 12c、EJB 3.1、JSF 2) では、EJB で誰がメソッドを呼び出したかを知る必要があります。

しかし、context.getCallerPrincipal().getName() から取得した発信者のログインは、ログインがアプリ内で一意ではないため、十分ではありません。JSF レイヤー (ユーザー組織 ID) から追加のパラメーターを渡す必要がありますが、各メソッドの署名を変更したくありません。

ユーザーがアプリケーション (または通常は JSF レイヤー) にログインしている間にカスタム パラメータを設定する方法はありますか?

4

1 に答える 1

2

いくつかのオプションがあります。

  1. JASPIC を使用して、ユーザー/呼び出し元のプリンシパル名を、ログインに使用したユーザー以外の名前に設定します。

たとえば、ユーザーが「joe」でログインした場合、ほとんどの組み込みモジュールでは「joe」が context.getCallerPrincipal().getName() から返されます。

JASPIC では、"joe.theboss::131::9634" のように、これを任意の文字列にすることができます。

  1. CDI を使用して、リクエスト スコープなどで何かを記憶します。EJB Bean は、リクエスト スコープの CDI Bean で注入できます (JSF バージョンではなく、CDI @RequestScoped を使用するように注意してください)。
于 2013-03-22T15:30:00.010 に答える