2012-07-13 2 views
10

응용 프로그램이로드 될 때 관리 빈이 JSF 웹 응용 프로그램에서 시작할 때 내부적으로 실행되기를 원합니다. Glassfish에서이 클래스를 작성하고 구성하려면 어떻게해야합니까?시작 관리 Bean을 구성하는 방법은 무엇입니까?

+0

'@ManagedBean (eager = true)'를 사용해 보셨습니까? CDI (@ManagedBean 대신 @Named를 사용하는 경우) 다음과 같이 앱 초기화를 관찰해야합니다. 'public void init (@Observes @Initialized WebApplication webApplication) {//do Something}' (글래스 피시에서는 실제로 이것을 사용하지 않았습니다. jBoss AS 7에서 사용했고 다른 서버에서는 일부 구성이 필요할 수 있습니다.) [this] (http://stackoverflow.com/ 질문/7347516/startup-pojo-on-a-weld-seam3-application) out ... – FMQ

답변

16

CDI가있는 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로 단순화 될 수있다.

now deprecated javax.faces.bean 주석 JSF 2.2-에서
@Named 
@Eager 
@ApplicationScoped 
public class App { 

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

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

는 초기화 eagerly가있는 application scopedmanaged bean 사용.

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

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

    @PreDestroy 
    public void shutdown() { 
     // ... 
    } 
} 
관련 문제