4

我找不到显示在 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 时,为什么要这样做呢?

一个例子会很有帮助。

4

0 回答 0