0

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

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

部署时默认执行 createConnectionFactory(ConnectionManager cm)。

我在类加载器的帮助下在这个方法中做了一些家务

类加载器 contextClassLoader = Thread.currentThread().getContextClassLoader();

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

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

问题 :

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

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

其他信息:Jboss As7、NetBeans 7、Jdk1.7

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

4

1 回答 1

1

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

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

JCA 规范的第 6 章非常详细地描述了资源适配器的这一领域,所以我认为那里有一个明确的答案。编辑:第 17 章也可能相关。

于 2011-08-05T11:45:39.427 回答