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将引导资源适配器。