Может ли CDI вводить стандартные библиотеки POJO в EJB?
Я могу добавить свой собственный POJO в управляемый объект, например так:
import javax.ejb.Stateless;
import javax.inject.Inject;
@Stateless
public class SomeEjb {
@Inject
private SomePojo somePojo;
}
И у меня есть это POJO:
// No annotations
public class SomePojo {
}
Это отлично работает. Если я внедряю EJB в бэк-бин JSF, я вижу, что значениеsomePojo
ненулевое значение, как и ожидалось.
Однако, если я попытаюсь ввестиjava.util.Date
вSomeEjb
Я получаю следующее исключение при развертывании:
Severe: Exception while loading the app : WELD-001408 Unsatisfied dependencies for type [Date] with qualifiers [@Default] at injection point [[field] @Inject private SomeEjb.date]
org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Date] with qualifiers [@Default] at injection point [[field] @Inject private SomeEjb.date]
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:311)
SomeEjb сейчас:
// No annotations
public class SomeEjb {
@Inject
private Date date;
}
У Date есть открытый конструктор без аргументов, и я подумал, что это все, что нужно CDI, чтобы "удовлетворить зависимость". Я уверен, что это поведение "по спецификации", но в моем понимании CDI есть большая дыра.
Может кто-нибудь объяснить, почему это не работает? В чем разница междуSomePojo
а такжеjava.util.Date
с точки зрения CDI?
Контекст:
Java EE 6GlassFish 3.1.2.2У меня нет варианта использования для этого. Я знаю что могу просто уточнитьnew Date()
.