Понимание аннотации @ConnectionDefinitions в jca 1.6

#java #jakarta-ee #annotations #integration #jca

#java #джакарта-ee #аннотации #интеграция #jca

Вопрос:

Я не могу найти пример, показывающий вариант использования множественного числа @ConnectionDefinitions в реализации ManagedConnectionFactory. Что меня смущает, так это то, что единственная аннотация @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 Я не вижу способа использовать config-property в качестве условия.

Кажется трудным определить, частью какого определения соединения является ManagedConnectionFactory, так зачем это делать, когда вы можете просто иметь отдельный ManagedConnectionFactory для каждого ConnectionFactory?

Пример был бы очень полезен.