我写了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资源适配器的人。
答案 0 :(得分:3)
“本节概述了连接管理合同的要求。”
仅使用JCA 1.6注释来简单定义ResourceAdapter实现是否合法 - 基本上 - 模块中没有其他内容?
是。这很好。
规范在第19.2节中指出出站资源适配器(这将是{handwave handwave}必须使用连接管理,
交易管理和安全管理合同。在所有这三种情况下,我只想表明 - 最好通过省略注释和/或代码 - 我不支持其中任何一个
如果您不需要出站通信功能,则无需定义它们(连接工厂,托管连接工厂等)。
只需构建一个实现ResourceAdapter的POJO,用@Connector注释它,然后从那里开始就足够了吗?
是
我可以使用@Resource注释将这样的POJO注入我的EJB吗?
我不认为可以使用@Resource注释注入“ResourceAdapter”Java Bean。每当资源适配器被部署/启用/服务器启动时,
GlassFish将引导资源适配器。