1

我们正在开发一组可供我们当前在 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 目前具有更高的优先级。

4

1 回答 1

0

好像我找到了解决方案:

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 域扩展并继承所有绑定和定义
  • 在扩展域内覆盖池类定义。
于 2011-08-31T16:10:23.353 回答