Моя текущая работа - перенести приложение Java EE с сервера Jboss 7 на Wildfly 10. У меня проблема с интеграцией CDI и Spring-Data. Я использую ту же конфигурацию, которая работала на Jboss 7. Когда я пытаюсь развернуть мое приложение на сервере Wildfly, я получаю ошибки, связанные с добавлением репозиториев Spring данных в некоторые компоненты CDI и EJB.WELD-001408: Неудовлетворенные зависимости для хранилищ от данных Spring
Ошибки выглядеть следующим образом:
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type StudentExtTrainingRepository with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private pl.mynetwork.mylearning.logic.historyTraining.HistoryTrainingService.studentExtTrainingRepository
at pl.mynetwork.mylearning.logic.historyTraining.HistoryTrainingService.studentExtTrainingRepository(HistoryTrainingService.java:0)
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:359)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:281)
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:134)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:155)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:518)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Я настроил мое приложение в соответствии с пружинным руководством по конфигурации данных, что я нашел здесь https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpd.misc.cdi-integration но wildfly он не работает.
У меня есть класс производителя для Entity менеджера как этот
@Dependent
public class SpringDataConfigurationProducer {
@Produces
@ApplicationScoped
public EntityManagerFactory createEntityManagerFactory() {
return Persistence.createEntityManagerFactory("base-pu");
}
@Produces
@RequestScoped
public EntityManager createEntityManager(EntityManagerFactory entityManagerFactory) {
return entityManagerFactory.createEntityManager();
}
}
Конечно у меня есть файлы beans.xml в своих проектах в директории META-INF.
Repository, что им пытаются придать вид:
@Repository
@Transactional
@Dependent
public interface StudentExtTrainingRepository extends JpaRepository<StudentExtTraining, Long> {
}
Service, где я хочу, чтобы ввести Repository выглядит:
@Service
public class HistoryTrainingService {
@Inject
private StudentExtTrainingRepository studentExtTrainingRepository;
}
У меня есть отдельный проект для хранилищ данных пружинных и отдельных служб/EJBs. Оба упакованы в один EAR. Есть ли у кого-нибудь какие-либо ошибки в том, что случилось? Я провел много часов с этой проблемой, и я не могу найти решение.
Drop Spring полностью и вместо этого использует Apache Deltaspike. Никаких проблем с этим. Существуют внутренние мосты, которые объединяют Spring Data и CDI. И они на самом деле написаны не очень хорошо. Не смешивайте Java EE, а Spring - мой совет. Весна запатентована и не работает с ней. –