JBoss 4覆盖每个应用程序的标准池类

时间:2011-08-29 10:55:54

标签: java jboss jboss-4.2.x

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

然而,由于JBoss 4现在很老了,我们想迁移到JBoss 5+(很可能是JBoss 6.1)。 在这种情况下,我们的组件存在问题,其中包含使用JBoss特定的@PoolClass注释注释的无状态会话bean,从JBoss 5开始,该注释已重命名为@Pool。

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

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

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

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

这是可能的,如果可以,怎么样?

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

编辑:如果你有关于如何在JBoss 5+中做到这一点的信息,那也会很棒,但JBoss 4目前具有更高的优先级。

1 个答案:

答案 0 :(得分:0)

好像我找到了一个解决方案:

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

这就是我的所作所为:

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