如何避免业务层中与会话相关的参数?

时间:2012-01-28 00:22:19

标签: ejb parameter-passing multi-tier

我有一个Java EE应用程序(简单的Web GUI,一个大型EJB 3业务层,JPA),其大部分功能都依赖于当前登录的用户。

因此,EJB充斥着无所不在的String userName参数。你几乎找不到一个没有它的非平凡方法,它一直下降到最基本的EJB。偶尔会有其他与会话相关的参数补充,例如用户的语言环境。

结果,参数列表增长,代码清晰度受到影响。这可能是一个常见的问题,如何避免它?将更多代码推送到GUI客户端似乎更加疯狂。

1 个答案:

答案 0 :(得分:1)

Java EE支持跨各层的安全上下文传播。对于例如检查EJBContext上与身份验证/授权相关的各种方法,例如getCallerPrincipal()isCallerInRole()。我建议你阅读以下两篇文章

  1. High level introduction to end to end security
  2. Introduction to Security in the Java EE Platform