Java 将附加参数从JSF传递到EJB

Java 将附加参数从JSF传递到EJB,java,security,jsf,jakarta-ee,ejb,Java,Security,Jsf,Jakarta Ee,Ejb,在我的JavaEE6应用程序(WebLogic12c、EJB3.1、JSF2)中,我需要知道是谁在EJB中调用了该方法 但是调用方从context.getCallerPrincipal().getName()获取的登录名是不够的,因为在我的应用程序中,登录名不是唯一的。我需要从JSF层(用户组织id)传递额外的参数,但我不想更改每个方法的签名 当用户登录到应用程序(或通常在JSF层)时,是否有任何方法可以设置自定义参数,这些参数稍后对EJB可见 有两种选择 使用JASPIC将用户/调用方主体名称

在我的JavaEE6应用程序(WebLogic12c、EJB3.1、JSF2)中,我需要知道是谁在EJB中调用了该方法

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


当用户登录到应用程序(或通常在JSF层)时,是否有任何方法可以设置自定义参数,这些参数稍后对EJB可见

有两种选择

  • 使用JASPIC将用户/调用方主体名称设置为用于登录的用户以外的其他名称
  • 例如,如果用户使用“joe”登录,那么对于大多数烘焙模块,“joe”将是从context.getCallerPrincipal().getName()返回的内容

    有了JASPIC,你可以制作任何字符串,例如“joe.theboss::131::9634”

  • 使用CDI记住eg请求范围中的内容。ejbbean可以注入请求范围的cdibean(注意使用CDI@RequestScoped,而不是JSF版本)