在我们的企业应用程序中,有服务层(EJB3.0,包括业务逻辑和数据库访问)和Web 层(Servlet/JSP)。JBoss AS 7 在分布式机器中部署了分离的耳朵和战争。
服务层包含有状态和无状态EJB。
我们有用于方法调用的 EJB 拦截器。对于从Web层登录的用户,用户信息保存在HttpSession中(用户验证只需通过在 DB 中查询他的帐户和密码来处理)。
现在性能调优需要知道哪个用户调用了这些 EJB 方法、用户信息、日期信息等。这些将被提取并记录或存储在数据库中以供我们使用。
现在我的问题是:
如何区分 EJB 层的调用者信息?
EJB 拦截器可以获取 EJB 方法的参数以及何时调用它。但我们不知道是谁打电话给它的。
我们知道将 EJB 层与 Web 层结合起来很难看。所以我们不会将 HttpSession/HttpRequest 传递给 EJB 层,即使这可能有助于从 Session/Request 对象中获取我们需要的内容。
而且有太多的 EJB 方法,我们无法将 TuningInfo(包括请求信息、用户信息等)作为参数从 Web 传递给每个 EJB 方法。
是否可以在 EJB 层中获取调用者的信息?
提前致谢。