我找不到显示在 ManagedConnectionFactory 实现上使用复数 @ConnectionDefinitions 的用例的示例。让我感到困惑的是,单一的 @ConnectionDefinition 注释不允许您为每个定义提供 @ConfigProperty。您只能使用 @ConfigProperty 为 ManagedConnectionFactory 的所有实例设置默认属性,并且每个连接定义必须使用不同的 ConnectionFactory 接口。所以假设你做了这样的事情:
@ConnectionDefinitions(value = {
@ConnectionDefinition(
connection = com.company.product.connector.MyConnection.class,
connectionFactory = com.company.product.connector.ConnectionFactory1.class,
connectionFactoryImpl = com.company.product.connector.ConnectionFactory1Impl.class,
connectionImpl = com.company.product.connector.MyConnectionImpl.class
)
@ConnectionDefinition(
connection = com.company.product.connector.MyConnection.class,
connectionFactory = com.company.product.connector.ConnectionFactory2.class,
connectionFactoryImpl = com.company.product.connector.ConnectionFactory2Impl.class,
connectionImpl = com.company.product.connector.MyConnectionImpl.class
)
})
public class MyManagedConnectionFactory implements
ManagedConnectionFactory, ResourceAdapterAssociation {
@Override
public Object createConnectionFactory(ConnectionManager connectionManager)
throws ResourceException {
//Return the connection factory.
}
}
createConnectionFactory() 如何知道返回 ConnectionFactory1 还是 ConnectionFactory2?除非有人通过 ra.xml 覆盖了注释,否则我认为没有办法使用配置属性作为条件。
似乎很难确定 ManagedConnectionFactory 是哪个连接定义的一部分,那么当您可以为每个 ConnectionFactory 设置单独的 ManagedConnectionFactory 时,为什么要这样做呢?
一个例子会很有帮助。