Я не могу найти пример, в котором показан пример использования множественного @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 в качестве условия.
Кажется трудным определить, к какому определению соединения относится ManagedConnectionFactory, так зачем делать это, если вы можете просто иметь отдельную ManagedConnectionFactory для каждой ConnectionFactory?
Пример был бы очень полезен.