Defensively unwrap CacheConnectionFactory
This commit refines the optimization introduced in gh-39816 to only unwrap our own caching connection factory. The more advanced unwrap algorithm is still available, but opt-in only. Unwrapping more aggressively may break use cases where the wrapped ConnectionFactory is required, i.e. for transactional purposes. Closes gh-43277
This commit is contained in:
@@ -31,7 +31,7 @@ public class MyJmsConfiguration {
|
||||
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(ConnectionFactory connectionFactory,
|
||||
DefaultJmsListenerContainerFactoryConfigurer configurer) {
|
||||
DefaultJmsListenerContainerFactory listenerFactory = new DefaultJmsListenerContainerFactory();
|
||||
configurer.configure(listenerFactory, ConnectionFactoryUnwrapper.unwrap(connectionFactory));
|
||||
configurer.configure(listenerFactory, ConnectionFactoryUnwrapper.unwrapCaching(connectionFactory));
|
||||
listenerFactory.setTransactionManager(null);
|
||||
listenerFactory.setSessionTransacted(false);
|
||||
return listenerFactory;
|
||||
|
||||
@@ -31,7 +31,7 @@ public class MyJmsConfiguration {
|
||||
public DefaultJmsListenerContainerFactory myFactory(DefaultJmsListenerContainerFactoryConfigurer configurer,
|
||||
ConnectionFactory connectionFactory) {
|
||||
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
|
||||
configurer.configure(factory, ConnectionFactoryUnwrapper.unwrap(connectionFactory));
|
||||
configurer.configure(factory, ConnectionFactoryUnwrapper.unwrapCaching(connectionFactory));
|
||||
factory.setMessageConverter(new MyMessageConverter());
|
||||
return factory;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ class MyJmsConfiguration {
|
||||
fun jmsListenerContainerFactory(connectionFactory: ConnectionFactory?,
|
||||
configurer: DefaultJmsListenerContainerFactoryConfigurer): DefaultJmsListenerContainerFactory {
|
||||
val listenerFactory = DefaultJmsListenerContainerFactory()
|
||||
configurer.configure(listenerFactory, ConnectionFactoryUnwrapper.unwrap(connectionFactory))
|
||||
configurer.configure(listenerFactory, ConnectionFactoryUnwrapper.unwrapCaching(connectionFactory))
|
||||
listenerFactory.setTransactionManager(null)
|
||||
listenerFactory.setSessionTransacted(false)
|
||||
return listenerFactory
|
||||
|
||||
@@ -30,7 +30,7 @@ class MyJmsConfiguration {
|
||||
fun myFactory(configurer: DefaultJmsListenerContainerFactoryConfigurer,
|
||||
connectionFactory: ConnectionFactory): DefaultJmsListenerContainerFactory {
|
||||
val factory = DefaultJmsListenerContainerFactory()
|
||||
configurer.configure(factory, ConnectionFactoryUnwrapper.unwrap(connectionFactory))
|
||||
configurer.configure(factory, ConnectionFactoryUnwrapper.unwrapCaching(connectionFactory))
|
||||
factory.setMessageConverter(MyMessageConverter())
|
||||
return factory
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user