【问题标题】:Get EJB calling module获取 EJB 调用模块
【发布时间】:2017-06-28 14:50:53
【问题描述】:

在我的应用程序中,我需要获取调用 EJB 的模块名称。 例如,我有调用 Ejb_B 的 Ejb_A,EJB_A 属于模块 A,EJB_B 属于模块 B。我想以某种方式在 Ejb_B 中获得调用者是 A。 我用谷歌搜索,但没有找到更多有用的信息。

我正在使用 Jboss eap 7、j2ee7。

【问题讨论】:

标签: java jakarta-ee jboss ejb


【解决方案1】:

如果调用者是远程的,那可能很难做到。即使两者部署在同一个应用程序服务器上,如果您查看当前线程的 StackTrace,您也只能退回到当前工作线程收到传入呼叫时,您可能不会能够退后一步看看来电者是谁。

您可以让自己更轻松,并传递一个参数,该参数是一些唯一标识符字符串,用于标识调用者是谁。如果您的应用了解此信息至关重要,我会查看类似的内容并将其构建到您的 API 中。

【讨论】:

  • 遗憾的是,调用者是远程的。我尝试使用拦截器并在会话上下文中添加一个参数,但如果在 EJB 中读取,则它为空。我不能向调用的方法添加参数,因为这会改变大量的方法签名。所以我需要自动检索它。
  • 既然你在 jboss/wildfly 上,你可以在这里看到我是如何处理这个问题的:stackoverflow.com/questions/25247689/…
  • 我试过这个解决方案,但是ejb本身无法访问上下文数据中的参数。如果我在 ejb 中包含 @Resource SessionContext 并调用 getContextData().get("myParameter") 我得到 null,而它在两个拦截器中可用。
猜你喜欢
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 2013-06-18
  • 2010-11-04
  • 1970-01-01
  • 2011-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多