【问题标题】:Glassfish: Why are there 2 pools for the same MDB: one in ejb and one in war?Glassfish:为什么同一个 MDB 有 2 个池:一个在 ejb 中,一个在 war 中?
【发布时间】:2014-05-01 18:31:34
【问题描述】:

场景:

我有一个在 GF 3.1.2 上运行的 java maven ear 项目。在那个项目中,我想使用在单个 ejb 模块中定义的 MDB,因此我将其作为依赖项。 所以结构如下:

ProjectEAR:
   - ProjectEJB
        - ProjectWithProblematicMDB
   - ProjectWAR
        - dependency ProjectEJB with scope provided

实际问题:

当它部署到 glassfish 时,在 jconsole 的帮助下,我看到 ProblematicMDB 有两个不同的 MDB 池:一个在 ejb 模块中,一个在 war 模块中。 它们不是同一个池,因为我在 ProjectEJB 上设置了部署描述符以将池大小限制为 1,并且 ProjectEJB 中的池大小不会大于 1,但 ProjectWAR 中的池会增大。

这发生在 ProjectEJB 中称为依赖项的模块中的所有 MDBS=s 上,但不会发生在 ProjectEJB 中的“本机”MDB 上。 我必须提到一个事实,即我不能将 ProjectWithProblematicMDB 排除在战争之外,因为我在那里使用了一些 bean(不是 mdb)。

问题:

为什么同一个 MDB 有两个池? 在这种情况下我怎么能只有一个池?

【问题讨论】:

  • 看起来像是 EE6 的一个副作用,允许在 WAR 中使用 EJB(我已经注意到,虽然从标准中不清楚这是否允许/需要,但 Glassfish 3 选择了打包的 MDB在 WAR 中)——我知道没有办法抑制这种行为,所以拆分你的 EJB 项目可能是最好的解决方案。
  • 感谢您的快速响应。根据您的建议,我已经拆分了我的项目,以便我的 WAR 中不存在任何 bean(只是为了测试)。所以现在我有战争只引用 ProjectEJB 作为提供的依赖项,而 ProjectWithProblematicMDB 作为排除项。但是,这不会阻止 WAR 中的池被创建和使用。非常感谢有关如何在不使用 Glassfish 创建两个池的情况下引用外部 EJB 模块的任何其他想法。 @fvu
  • 这很奇怪 - 你能告诉我你在 jconsole 中查看的是什么项目吗?另外,imqadmin 是否确认您在 jconsole 中看到的队列中的活跃消费者数量总和?
  • 在 MBeans 选项卡下:amx -> bean-pool-mon -> /mon/server-mon[server] -> ProjectEAR/ProjectEJB.jar/RogueMDB/bean-pool -> numbeansinpool 和amx -> bean-pool-mon -> /mon/server-mon[server] -> ProjectEAR/ProjectWAR.war/RogueMDB/bean-pool -> numbeansinpool。使用 imqcmd 查询队列仅返回 2 个活动消费者,但就我一直在使用 glassfish 而言,使用 mdb 时,在查询活动消费者的目的地时看不到实际的 mdb 数量@fvu

标签: java maven jakarta-ee glassfish message-driven-bean


【解决方案1】:

我终于找到了原因和解决方案。

原因:

查看 .ear 存档,我看到“本机”ejb (ProjectEJB) 被放置在存档的根目录中,而“独立”ejb (ProjectWithProblematicMDB) 被打包在 lib 文件夹中。出于某种原因,glassfish 也在 .war 模块中创建了池。

解决方案:

将 ProjectWithProblematicMDB 作为依赖项添加到 ProjectEAR 使 maven 也将其打包到 .ear 存档的根目录中,并且不再位于 lib 文件夹中。在我以这种形式部署应用程序后,不再创建第二个池(来自 .war 的池)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2018-12-16
    相关资源
    最近更新 更多