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

标签 jakarta-ee jboss ejb-3.0

在我们的企业应用程序中有 服务层 (EJB3.0 包括业务逻辑和数据库访问)和 网络层 (小服务程序/JSP)。
JBoss AS 7 在分布式机器中部署了分离的ear和war。

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

我们有用于方法调用的 EJB 拦截器。对于从 登录的用户网站层用户信息保存在 HttpSession (用户验证只是通过在数据库中查询他的帐户和密码来处理)。

现在性能调优需要知道哪个用户调用了那些 EJB 方法、用户信息、日期信息等。这些将
提取并记录或存储在数据库中以供我们使用。

现在我的问题是:

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

EJB 拦截器可以获取 EJB 方法的参数和调用时间。但我们不知道是谁打来的。

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

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

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

提前致谢。

最佳答案

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

关于jakarta-ee - 如何将调用者的信息从 Web 层传递到 EJB 层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12865733/

相关文章:

java - @Local接口(interface)有很多实现

java - 将 Wicket 与 Wordpress 结合使用

Java 条件配置 (web.xml) - 开发/生产

java - JBoss AS 7.1 中 MySQL 数据库的事务错误

java - Jboss Eap - mod_cluster - 防止 jboss 互相交谈

java - 如何实现Singleton-like EJB3.0 bean?

EJB 离线时的 JavaEE 通知

java - @MultipartForm 如何获取原始文件名?

java - 如何在 Java 应用程序服务器中创建自定义对象池

eclipse - 如何使用jBPM5配合Tomcat开发web项目?