Невозможно внедрить репозиторий данных JPA пружин в EJB-компонент в WebSphere. - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь интегрировать 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)

...