Почему Wildfly 26 внезапно заставляет Spring идентифицировать инъекционные компоненты?JAVA

Программисты JAVA общаются здесь
Anonymous
Почему Wildfly 26 внезапно заставляет Spring идентифицировать инъекционные компоненты?

Сообщение Anonymous »

Я изучаю возможность переноса большой кодовой базы с развертывания на Wildfly 23.0.1 на 26.1.3.
Один из JAR-файлов, развертываемых в EAR, использует Spring и предоставляет точку входа. к ландшафту CDI, в противном случае исключительно EE/EJB:

Код: Выделить всё

@org.springframework.context.annotation.Configuration
public class MyFooComponentFactory {
@Bean
public MyFooComponent() {
return new JndiTemplate()
.lookup(name(MyFooComponent.class), MyFooComponent.class);
}
}
Реализация интерфейса MyFooComponent использует аннотации EJB на уровне поля, например:

Код: Выделить всё

@Resource
private SessionContext ctx;

@EJB
private OtherComponent other;
При работе в Wildfly 23 сервер запускается без проблем. Но когда я пытаюсь выполнить развертывание в Wildfly 26, Spring выдает исключение NoSuchBeanDefinitionException для OtherComponent.
Это потому, что в Wildfly 23 Spring создает org.springframework. .beans.factory.annotation.InjectionMetadata с пустыми коллекциями для полей InjectElements и CheckElements.
Но для Wildfly 26 эти поля не являются -пусто, что означает, что Spring пытается их внедрить. Но они не определены в контексте приложения Spring, поскольку они уже обрабатываются EJB.
ОБНОВЛЕНИЕ
Теперь я обнаружил, что Причина, по которой InjectionMetadata создается по-разному в версиях 23 и 26, заключается в том, что org.springframework.context.annotation.CommonAnnotationBeanPostProcessor#buildResourceMetadata перемещается вверх по иерархии классов для MyFooComponent (на самом деле это MyFooComponent$$$ view530, который, как я полагаю, является прокси-сервером JBoss?)
Для Wildfly 23 clazz.getSuperclass() возвращает java.lang.Object, но для Wildfly 26 он возвращает класс MyFooComponentImpl.
Поля -Impl отвечают за непустые метаданные.Итак, может кто-нибудь сказать мне, почему это происходит? Загрузчик классов меняется между Wildfly 23 и 26?

Подробнее здесь: https://stackoverflow.com/questions/787 ... components

Вернуться в «JAVA»