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

标签 java jboss jboss-4.2.x

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

但是,由于 JBoss 4 现在已经很旧了,我们希望迁移到 JBoss 5+(很可能是 JBoss 6.1)。 在这种情况下,我们的组件会出现问题,其中包含使用 JBoss 特定 @PoolClass 注释进行注释的无状态 session Bean,从 JBoss 5 开始,该注释已重命名为 @Pool。

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

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

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

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

这可能吗?如果可以,如何实现?

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

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

最佳答案

似乎我找到了解决方案:

JBoss 4.2.3.GA 使用的 JBoss AOP 1.5.6 有问题。 尽管没有提交错误,但似乎有一个错误阻止了池定义的范围使用(看起来问题的根源是一个反向的 if 条件:))。 升级到 JBoss AOP 2.1.8 真是太神奇了。

这就是我所做的:

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

关于java - JBoss 4 覆盖每个应用程序的标准池类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7229158/

相关文章:

jboss - 在 jboss 服务器上部署 adempiere 项目 .war 文件

java - 为什么f是:param returning null?

java - jvm堆设置模式

java - 将 Bean 类注入(inject) JBOSS 7.1 中连续运行的 ServletContextListener

Java 7/8 请求参数大小限制

mysql - 如何解决在亚马逊托管 jboss Web 应用程序时数据库连接被拒绝的问题

java - 我如何在 JBoss 中创建全局上下文变量?

java - Groovy/Java 可以隐式转换为子类(或具有自定义隐式转换)吗?

java - 如何使 IntelliJ Idea 仅显示编译器生成的警告并抑制智能检查?

java - 是否可以让 SWT 使用 OS X native 选项卡?