編集: これは、JSF 2.0 を使用する ADF アプリケーションです。
リクエスト スコープ Bean のマネージド プロパティで参照しているアプリケーション スコープ マネージド Bean があります。リクエスト スコープ Bean の PostConstruct メソッド内でアプリ スコープ Bean にアクセスしようとすると、NullPointerException が発生します。app スコープの Bean が request スコープの Bean でいつ利用できるかについての基本を理解していないのか、それとも実装に間違いがあるだけなのかはわかりません。
アプリスコープの Bean:
@ManagedBean(eager=true)
@ApplicationScoped
public class SecurityApplication {
public String test() {
return "test result";
}
@PostConstruct
public void init() {
System.out.println("In SecurityApplication.init");
}
}
編集: これは、adfc-config.xml ファイルでリクエスト スコープのマネージド Bean として構成されます。Bean を ADF で管理するように指定しましたが、JSF ManagedProperty アノテーションを使用したため、これが問題のようです。
リクエスト スコープの Bean:
public class UserSecurityCompanies {
@ManagedProperty(value="#{securityApplication}")
private SecurityApplication securityApplication;
@PostConstruct
public void init() {
System.out.println("In UserSecurityCompanies.init");
System.out.println("SecurityApp.Test():" + getSecurityApplication().test());
}
public SecurityApplication getSecurityApplication() {
return securityApplication;
}
public void setSecurityApplication(SecurityApplication securityApplication) {
this.securityApplication = securityApplication;
}
}
アプリ スコープの Bean はアプリのデプロイ中に初期化されますが、getSecurityApplication().test() が呼び出されると NPE がスローされます。
スティーブ