@ApplicationException annoted 클래스에서 @Inject 및 @PostConstruct 메서드가 호출되지 않는 문제가 있습니다. 저는 Glassfish 3.0.1을 JPA, CDI 및 서비스 (= ejb) -layer의 EJB와 함께 사용하고 있으며 sessionlanguage에 텍스트가 포함 된 errorMessage를 던집니다. JEE6 - @ApplicationException - @Inject 및 @PostConstruct가 호출되지 않았습니다.
는 I 추상적 ExceptionClasspublic abstract class LocalizedException extends Exception {
private static final long serialVersionUID = 1L;
String localizedMessage;
//This method should be called as @PostConstruct from the concrete classe
protected void setLocalizedMessage(LocaleHandler localeHandler, String key){
this.setLocalizedMessage(localeHandler, key, new Object());
}
protected void setLocalizedMessage(LocaleHandler localeHandler, String key, Object... args){
localizedMessage = ErrorMessages.getErrorMessage(key,localeHandler.getAktuelleLokale(),args);
}
@Override
public String getMessage() {
return localizedMessage;
}
@Override
public String getLocalizedMessage() {
return localizedMessage;
}}
및 콘크리트 클래스 가지고
@ApplicationException
public class ConcreteException extends LocalizedException {
private static final long serialVersionUID = 2615388267911318734L;
private int userId;
public ConcreteException(int userId) {
this.userId=userId;
}
public int getUserId() {
return userId;
}
@PostConstruct
@Inject
public void initText(LocaleHandler localeHandler){
setLocalizedMessage(localeHandler, "msgKey");
}
}를
LocaleHandler (= Sessionscoped)가 사용되는 currentLocale를 제공하도록 주입 될 수 있어야번들에서 오류 메시지를 검색합니다. 문제는 @PostConstruct가 내가 무엇을 시도하든 결코 호출되지 않는다는 것입니다. 나는 심지어 구체적인 클래스를 @Named로 선언하고, 추상 클래스 대신에 @Inject를 사용했지만 아무 것도 작동하지 않는다. 직접 initText()를 호출하면 (디버거에서) LocaleHandler가 삽입되지 않은 것을 볼 수 있습니다.
이제 예외 클래스와 CDI에 관한 제한 사항이 있는지 또는 문제의 원인을 찾지 못했습니까?
답변을 알고 있습니까? 미리
토마스