JCA 1.6 ResourceAdapter是否需要ManagedConnectionFactory?

我以前写了一个JCA资源适配器 。

但是,现在我发现自己只能编写一个来访问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资源适配器的人。

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

是否合法,只使用JCA 1.6注释,简单地定义一个ResourceAdapter实现 – 基本上 – 模块中没有别的东西?

是。 这可以。

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

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

如果您不需要出站通信function,则无需定义它们(连接工厂,托管连接工厂等)。

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

是。

我可以使用@Resource注释将这样的POJO注入我的EJB吗?

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

GlassFish将引导资源适配器。