如何管理JCA ManagedConnectionFactory的生命周期?

时间:2011-08-05 11:04:07

标签: java java-ee jboss jboss7.x jca

我通过将rar文件放在jboss中的部署文件夹中来部署rar文件为7.稍后部署我的war文件。

此连接器根据standalone.xml中的定义绑定到JNDI位置。

部署时,默认情况下会执行createConnectionFactory(ConnectionManager cm)。

我借助classloader

在这个方法中做了一些家务
  

ClassLoader contextClassLoader = Thread.currentThread()。getContextClassLoader();

当我尝试使用ejb访问适配器时再次执行createConnectionFactory(ConnectionManager cm)方法

问题最初是在部署contextClassLoader时为null。之后它从ejb调用时有一个值。实际上我的家务管理失败了。

问题:

  1. createConnectionFactory(ConnectionManager cm)在部署时执行=>这是正确的行为吗?

  2. 如何配置ironJacamar / jboss在部署时不执行此方法?

  3. 其他信息:Jboss As7,NetBeans 7,Jdk1.7

    编辑: 以上行为是正确的。我使用的适配器要求部署时使用的类加载器必须与运行时使用的类加载器相同。默认情况下,它使用Thread.currentThread()。getContextClassLoader()。我把它改为使用ClassLoader cl = MyManagedConnectionFactory.class.getClassLoader();

1 个答案:

答案 0 :(得分:1)

  

createConnectionFactory(ConnectionManager cm)在部署时执行=>这是正确的行为吗?

如果你有一个ConnectionFactory定义,那么我希望看到这个方法被调用,因为容器在JNDI命名空间中创建并绑定ConnectionFactory定义 - 你正在接受ConnectionManager的调用这一事实表明它正在执行在托管方案中。

JCA规范的第六章详细描述了资源适配器的这个区域,所以我认为有一个确定的答案。编辑:第17章也可能相关。