【问题标题】:JBoss 4 override standard pool class per applicationJBoss 4 覆盖每个应用程序的标准池类
【发布时间】:2011-08-29 10:55:53
【问题描述】:

我们正在开发一组可供我们当前在 Jboss 4.2.3.GA 上运行的应用程序使用的组件。

但是,由于 JBoss 4 现在已经很老了,我们希望迁移到 JBoss 5+(很可能是 JBoss 6.1)。 在这种情况下,我们的组件包含使用 JBoss 特定的 @PoolClass 注释注释的无状态会话 bean,在 JBoss 5 中已将其重命名为 @Pool。

如您所见,在组件中使用该注释不仅会引入对应用程序服务器的依赖,还会引入对特定版本的依赖。因此,我想摆脱该注释并通过 XML 使用配置。

在这种情况下,我不想为每个会话 bean 定义一个池类,因为几乎所有它们都使用具有相同设置的 StrictMaxPool 类。如果任何会话 bean 需要不同的池或不同的设置,可以提供一个特定的条目,但我不想为大多数人这样做。

默认池类一般定义在 ejb3-interceptors-aop.xl 中。但是,该配置适用于部署在该服务器上的所有应用程序。

我现在想做的是为每个应用程序定义一个默认池类(使用默认设置),如果可能的话,不要在我们的组件中添加任何特定于会话 bean 的东西(比如 JBoss 特定的 @AspectDomain 注释) .

这可能吗?如果可以,怎么做?

我还没有找到任何有用的信息,所以如果有人能指出我正确的方向,我会很高兴。

编辑:如果您有关于如何在 JBoss 5+ 中执行此操作的信息,那也很好,但目前 JBoss 4 的优先级更高。

【问题讨论】:

  • @skaffman,既然问题说明了版本,为什么不直接使用 jboss 标签?我认为只使用 jboss 会更有帮助,因为更多的人正在关注这个:)

标签: java jboss jboss-4.2.x


【解决方案1】:

好像找到了解决办法:

JBoss 4.2.3.GA 使用的 JBoss AOP 1.5.6 存在问题。 虽然没有提交错误,但似乎有一个错误阻止了池定义的范围使用(看起来问题的根源是一个倒置的 if-condition :))。 升级到 JBoss AOP 2.1.8 就像一个魅力。

这是我的工作:

  • 将 jboss-aop.xml 文件放入耳朵中的 ejb jar 的根目录中(我们已经有了一个包含 persistence.xml 的文件)。
  • 在 jboss-aop.xml 中创建一个域 Stateless Bean,该域扩展自默认 Stateless Bean 域并继承所有绑定和定义
  • 在扩展域内覆盖池类定义。

【讨论】:

    猜你喜欢
    • 2016-06-26
    • 2010-11-01
    • 2018-04-08
    • 2011-02-02
    • 1970-01-01
    • 2020-11-23
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多