Я пытаюсь интегрировать CDI spring-data-jpa в среду Java EE.
Я создал очень простой репозиторий:
public interface SampleRepository extends JpaRepository<Sample, String> {
}
Я также добавил производителя CDI для EntityManager:
@ApplicationScoped
class EntityManagerProducer {
@PersistenceContext
private EntityManager entityManager;
@Produces
@RequestScoped
EntityManager createEntityManager() {
return entityManager;
}
}
Затем я хочу внедрить этот репозиторий в другой компонент CDI:
@ApplicationScoped
public class SampleService {
private SampleRepository sampleRepository;
public SampleService() {
}
@Inject
public SampleService(SampleRepository sampleRepository) {
this.sampleRepository = sampleRepository;
}
}
а также в EJB. Для сервера приложений JBoss EAP 7.1 это прекрасно работает - репозиторий корректно внедряется для компонента CDI или EJB, и я могу выполнять запросы к базе данных. Однако для WebSphere я получаю следующее исключение при запуске, и приложение не может запуститься:
org.jboss.weld.exceptions.DeploymentException: WELD-001408:
Неудовлетворенные зависимости для типа SampleRepository с квалификаторами
@ По умолчанию в точке впрыска [BackedAnnotatedParameter] Параметр 1
[BackedAnnotatedConstructor] @Inject public
com.sample.ejb.SampleEJB (SampleRepository) в
com.sample.ejb.SampleEJB. (SampleEJB.java:0)
в
org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems (Validator.java:362)
в
org.jboss.weld.bootstrap.Validator.validateInjectionPoint (Validator.java:284)
в
org.jboss.weld.bootstrap.Validator.validateGeneralBean (Validator.java:137)
в
org.jboss.weld.bootstrap.Validator.validateRIBean (Validator.java:158)
в
org.jboss.weld.bootstrap.Validator.validateBean (Validator.java:501)
в
org.jboss.weld.bootstrap.ConcurrentValidator $ 1.doWork (ConcurrentValidator.java:61)
в
org.jboss.weld.bootstrap.ConcurrentValidator $ 1.doWork (ConcurrentValidator.java:59)
в
org.jboss.weld.executor.IterativeWorkerTaskFactory $ 1.call (IterativeWorkerTaskFactory.java:62)
в
org.jboss.weld.executor.IterativeWorkerTaskFactory $ 1.call (IterativeWorkerTaskFactory.java:55)
в java.util.concurrent.FutureTask.run (FutureTask.java:277) в
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1160)
в
java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:635)
at java.lang.Thread.run (Thread.java:812)