2012-07-13 8 views
10

アプリケーションのロード時に、管理対象BeanをJSF Webアプリケーションの起動時に内部的に実行する必要があります。このクラスを作成してGlassfishで設定するにはどうすればよいですか?スタートアップマネージドBeanの設定方法は?

+0

'@ManagedBean(eager = true)'を試したことがありますか? CDI(@ManagedBeanの代わりに@Named)を使用している場合、アプリの初期化を監視する必要があります。 'public void init(@Observes @Initialized WebApplication webApplication){//do Something} ' (実際に私はglassfishでこれを試していません、jBoss AS 7で使用しました。他のサーバーでいくつかの設定が必要な場合があります... [こちらをチェック] http://stackoverflow.com/質問/ 7347516 /スタートアップ - pojo-on-a-weld-seam3-application)out ... – FMQ

答えて

16

CDFのJSFでは、observeapplication scopeです。

@Named 
@ApplicationScoped 
public class App { 

    public void startup(@Observes @Initialized(ApplicationScoped.class) Object context) { 
     // ... 
    } 

    public void shutdown(@Observes @Destroyed(ApplicationScoped.class) Object context) { 
     // ... 
    } 

} 

手でOmniFacesを有し、これは@Eagerと簡略化することができます。 JSF 2.2-で

@Named 
@Eager 
@ApplicationScoped 
public class App { 

    @PostConstruct 
    public void startup() { 
     // ... 
    } 

    @PreDestroy 
    public void shutdown() { 
     // ... 
    } 
} 
now deprecated

javax.faces.bean注釈と、eagerlyが初期化されるapplication scopedmanaged beanを使用します。

@ManagedBean(eager=true) 
@ApplicationScoped 
public class App { 

    @PostConstruct 
    public void startup() { 
     // ... 
    } 

    @PreDestroy 
    public void shutdown() { 
     // ... 
    } 
} 
関連する問題