【问题标题】:Does a JCA 1.6 ResourceAdapter need a ManagedConnectionFactory?JCA 1.6 ResourceAdapter 是否需要 ManagedConnectionFactory?
【发布时间】:2011-05-11 02:14:12
【问题描述】:

我写了JCA resource adapter before

但是,现在我发现自己不得不写一个来访问BootstrapContext 及其关联的WorkManager,而且实际上没有其他原因。

如果我正确阅读规范——这是我的问题——看起来如果我希望有人能够以符合规范的方式使用我的资源适配器,我仍然需要实现ManagedConnectionFactory,因为看起来只有ManagedConnectionFactory实现提供的用户连接工厂才有资格通过@Resource注解进行注入。

继续,再读一遍;我会等。 :-)

在一个完美的世界中,我想编写我的ResourceAdapter 实现,用@Connector 注释它,指定所有@ConfigProperty 位,将它打包到.rar 文件中,然后完成它.

但是,在我看来,规范实际上要求消费者(在我的例子中是无状态 EJB)和资源适配器模块之间的所有通信都应该通过用户连接工厂来完成。

例如,第 6.10.1 节说:

资源适配器必须提供以下接口的实现:

  • javax.resource.spi.ManagedConnectionFactory
  • javax.resource.spi.ManagedConnection
  • javax.resource.spi.ManagedConnectionMetaData

但第 18 节——关于注释的部分——似乎并没有以任何有意义的方式强制执行这一点。

真的是这样吗?我想肯定是这样,但我很想听听那些组装了 1.6 资源适配器的人的意见。

【问题讨论】:

  • 很久以前,2004 年,当我不得不实现 ResourceAdapter 时,ManagedConnectionFactory 是必要的,我几乎不相信从那以后发生了什么变化。

标签: java jakarta-ee java-ee-6 jca


【解决方案1】:

“本节概述了连接管理合同的要求。”

仅使用 JCA 1.6 注释来简单地定义一个 ResourceAdapter 实现是否合法,而模块中基本上没有其他内容?

是的。这很好。

规范在第 19.2 节中指出,出站资源适配器(这将是)必须 {handwave handwave} 使用连接管理,

交易管理和安全管理合同。在所有这三种情况下,我只想表明——最好是通过省略注释和/或代码——我不支持它们中的任何一个

如果您不需要出站通信功能,则不必定义它们(连接工厂、托管连接工厂等)

简单地构建一个实现 ResourceAdapter 的 POJO,用 @Connector 注释它,然后从那里开始就足够了吗?

是的。

然后我可以使用@Resource 注解将这样的 POJO 注入到我的 EJB 中吗?

我不认为可以使用@Resource 注解注入“ResourceAdapter”Java Bean。每当资源适配器部署/启用/服务器启动时,

GlassFish 将引导资源适配器。

【讨论】:

  • 好的,但是上面的问题并没有问是否可以构建无连接的ResourceAdapter。我从您(和其他人)的回答中看到您可以这样做,但是如果您希望最终用户能够使用它,那么我的问题是:是否有必要提供连接工厂?
  • 使用它是什么意思?您需要由 AS 激活它。执行此操作的最明显机制是将 ConnectionFactory 注入@Startup @Stateless EJB。现在,您可以确保您的 JCA 引导程序在部署中被调用。对于通信,如果“消息”的概念不适合您,则 AdministeredObject 可能是另一种控制它的机制。
猜你喜欢
  • 1970-01-01
  • 2011-10-08
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-06
相关资源
最近更新 更多