Я застрял в печально известном WELD-001408, что все программисты с CDI столкнулись так или иначе. Использование Oracle JDK 1.8.0_25, Wildfly 8.2.0.Final. Мой код выглядит следующим образом:WELD-001408: Невыполненные зависимости для типа Список с квалификаторами
модуль availability-service
(war) зависит от модуля hospital-user
(jar). Former имеет beans.xml
в WEB-INF
, а затем в META-INF
, хотя CDI 1.1 не требует beans.xml
.
В hospital-user
:
@ApplicationScoped
public class Users {
@Produces
@Doctors
public List<Doctor> getDoctors() {
return getUsers("/doctors.json", Doctor.class);
}
@Produces
@Patients
public List<Patient> getPatients() {
return getUsers("/patients.json", Patient.class);
}
}
Врачи аннотаций (Patients
аналогичен кроме названия):
@Qualifier
@Retention(RUNTIME)
@Target({ FIELD, METHOD })
public @interface Doctors {
}
В availability-service
:
@ApplicationScoped
public class AvailabilityService {
@Inject
@Doctors
private List<Doctor> doctors;
}
Ошибка:
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type List<Doctor> with qualifiers @Doctors
at injection point [BackedAnnotatedField] @Inject @Doctors private name.abhijitsarkar.microservices.availability.AvailabilityService.doctors
at name.abhijitsarkar.microservices.availability.AvailabilityService.doctors(AvailabilityService.java:0)
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:372)
Если я закачиваю Users
вместо List
, он работает. Here - образец проекта Maven, который демонстрирует проблему с 4 классами. Просто запустите mvn clean test
.