【问题标题】:Passing additional parameters from JSF to EJB将附加参数从 JSF 传递到 EJB
【发布时间】:2013-03-22 11:18:44
【问题描述】:

在我的 Java EE 6 应用程序(Weblogic 12c、EJB 3.1、JSF 2)中,我需要知道在 EJB 中谁调用了该方法。

但是从 context.getCallerPrincipal().getName() 获得的调用者登录是不够的,因为登录在我的应用程序中不是唯一的。我需要从 JSF 层(用户组织 ID)传递附加参数,但我不想更改每个方法的签名。

当用户登录应用程序(或通常在 JSF 层)时,有什么方法可以设置自定义参数,这在以后对 EJB 可见?

【问题讨论】:

    标签: java security jsf jakarta-ee ejb


    【解决方案1】:

    有几个选项。

    1. 使用 JASPIC 将用户/调用者主体名称设置为不同于用户登录时使用的名称。

    例如,如果用户使用“joe”登录,那么对于大多数内置模块,“joe”将是从 context.getCallerPrincipal().getName() 返回的内容。

    使用 JASPIC,您可以将其设为任何字符串,例如“joe.theboss::131::9634”。

    1. 使用 CDI 来记住请求范围内的某些内容。 EJB bean 可以使用请求范围的 CDI bean 注入(注意使用 CDI @RequestScoped 而不是 JSF 版本)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-21
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      相关资源
      最近更新 更多