如何将调用者的信息从Web层传递到EJB层?

时间:2012-10-12 19:22:21

标签: java-ee jboss ejb-3.0

在我们的企业应用程序中,有服务层(EJB3.0包括业务逻辑和数据库访问)和 Web层(Servlet / JSP)。 在分布式机器中,JBoss AS 7中部署了分离的耳朵和战争。

服务层包含有状态无状态 EJB。

我们有方法调用的EJB拦截器。对于从 Web 层登录的用户,用户信息保存在 HttpSession 中(用户验证只需通过查询他的帐户和DB中的密码进行处理)。

现在,性能调优需要知道哪个用户调用了这些EJB方法,用户信息,日期信息等等 被提取并记录或存储在DB中以用于我们的任何大小。

现在我的问题是:

如何区分EJB层中的调用者信息

EJB拦截器可以获取EJB方法的参数以及何时调用它。但我们不知道是谁打过电话。

我们知道将EJB层与Web层结合起来很难看。所以我们不会将HttpSession / HttpRequest传递给EJB层,即使这可能有助于从Session / Request对象中获取我们需要的东西。

有很多EJB方法我们无法将TuningInfo(包括请求信息,用户信息等)作为参数从web传递到每个EJB方法。

是否可以在EJB层中获取调用者的信息?

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果Web层和EJB层位于同一JVM上,则可以通过本地线程传递用户信息。 http://javacodesamples.wordpress.com/2012/07/11/understanding-the-concept-behind-threadlocal/