#java #spring #spring-boot #spring-jms #spring-bean
Вопрос:
Я использую spring boot 2.1.9 и пытаюсь обновить соединение IBM MQ JMS. Возможность обновления компонента UserCredentialsConnectionFactoryAdapter с помощью области обновления и быстрой инициализации после запуска приложения. Но проблема в том, что класс UserCredentialsConnectionFactoryAdapter threadBoundCredentials равен нулю после обновления, поэтому при создании соединения возникает исключение NullPointerException
Я заметил, что после обновления Spring создает 2 экземпляра, и 1 имеет значения, а другой прокси-класс не имеет значения. при создании соединения spring использует прокси-сервер и получает нулевой указатель.
Фактический
org.springframework.jms.подключение.UserCredentialsConnectionФакториЯдаптер@1314ccc1
Прокси-организация.springframework.jms.подключение.UserCredentialsConnectionФакториЯдаптер$$EnhancerBySpringCGLIB$$bbfd1caf
@RefreshScope
@Bean
public UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter() throws Exception {
UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter =
new UserCredentialsConnectionFactoryAdapter();
userCredentialsConnectionFactoryAdapter.setUsername("username");
userCredentialsConnectionFactoryAdapter.setPassword("password");
userCredentialsConnectionFactoryAdapter.setTargetConnectionFactory(connFactory);
return userCredentialsConnectionFactoryAdapter;
}
С Нетерпением Инициализация
for (String beanName : applicationContext.getBeanDefinitionNames()) {
logger.info("Refreshing bean " beanName);
applicationContext.getBean(beanName).getClass();
}
Как получить соединение без каких-либо проблем после обновления ?