おそらく私の質問は些細なものですが、これまでアプリケーションスコープBeanを使用したことはありません。データベースで時間のかかるトランザクションを実行する必要があるため、アプリケーションBeanが必要です。私の検索は私の好奇心をまったく満足させませんでした。理由はわかりませんが、Beanを初期化できなかったか(null)、アプリがクラッシュしました。だから私はアプリケーションスコープBeanを持っています
@ManagedBean(eager=true)
@ApplicationScoped
public class ApplicationContainer {
...
}
eager = trueアプリケーションサーバー(私はGlassFishを使用)が起動するたびにBeanを開始するようにJSFに指示することを読みました。
このアノテーションを付けるだけでBeanが初期化されることをいくつかの場所で読みました。私にとってはそうではありません...アプリケーションBeanを別のBeanに注入する場合は、@PostConstuctアノテーションを使用する必要があることを読んだ後
@ManagedBean
@SessionScoped
public class TestsBean implements Serializable {
private static final long serialVersionUID = 1L;
@ManagedProperty(value = "#{container}")
private ApplicationContainer container;
@PostConstruct
public void init() {
container.contructContainer();
}
これにより、TestsBeanを注入した他のBeanでエラーが発生します...
- サーバーの起動時にアプリケーションBeanが初期化された場合、サーバーは必要なアクションを実行するためにアプリケーションBeanの本体でどのメソッドを呼び出しますか?または、注入されたBeanでは、postconstructメソッドで実行されますか?
アプリケーションBeanを処理する適切な方法を教えてください。私は本当に混乱しています...
いつもありがとうございました!