JCA 1.6 ResourceAdapter 是否需要 ManagedConnectionFactory?

2022-09-01 16:15:23

我之前写过一个JCA资源适配器

然而,现在我发现自己处于一个位置,只是为了获得访问及其相关,并且没有其他原因。BootstrapContextWorkManager

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

来吧,再读一遍;我会等的。:-)

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

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

例如,第6.10.1节说:

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

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

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

事实果真如此吗?我想一定是这样,但我很好奇听到那些已经组装了1.6资源适配器的人。


答案 1

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

仅使用JCA 1.6注释,简单地定义一个ResourceAdapter实现(基本上)在模块中没有其他东西,这是合法的吗?

是的。这很好。

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

事务管理和安全管理合同。在这三种情况下,我只想表明 - 最好通过省略注释和/或代码 - 我不支持其中任何一个

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

仅仅构建一个实现 ResourceAdapter 的 POJO,用@Connector注释它,然后从那里开始,这是否就足够了?

是的。

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

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

GlassFish 将引导资源适配器。


答案 2

推荐