Tôi muốn một bean được quản lý chạy trong nội bộ khi khởi động trong ứng dụng web JSF của tôi khi ứng dụng tải. Làm thế nào tôi có thể viết lớp này và cấu hình trong Glassfish?Cách định cấu hình bean được quản lý khởi động?
10
A
Trả lời
16
Trong JSF với CDI, observe số initialization của số application scope.
@Named
@ApplicationScoped
public class App {
public void startup(@Observes @Initialized(ApplicationScoped.class) Object context) {
// ...
}
public void shutdown(@Observes @Destroyed(ApplicationScoped.class) Object context) {
// ...
}
}
Khi có OmniFaces ở bàn tay, điều này có thể được đơn giản hóa với @Eager
.
@Named
@Eager
@ApplicationScoped
public class App {
@PostConstruct
public void startup() {
// ...
}
@PreDestroy
public void shutdown() {
// ...
}
}
Trong JSF 2.2- với now deprecatedjavax.faces.bean
chú thích, sử dụng một application scopedmanaged bean đó là eagerly khởi tạo.
@ManagedBean(eager=true)
@ApplicationScoped
public class App {
@PostConstruct
public void startup() {
// ...
}
@PreDestroy
public void shutdown() {
// ...
}
}
Bạn đã thử '@ManagedBean (eager = true)'? Nếu bạn đang sử dụng CDI (@Nam thay vì @ManagedBean) thì bạn sẽ phải "Quan sát" khởi tạo ứng dụng ... với một cái gì đó như thế này ... 'public void init (@Observes @Initialized WebApplication webApplication) {//do Something} ' (thực ra tôi chưa thử điều này trong glassfish, tôi đã sử dụng nó trong jBoss AS 7 và bạn có thể cần một số cấu hình trên các máy chủ khác ... kiểm tra [this] (http://stackoverflow.com/ câu hỏi/7347516/khởi động-pojo-on-a-hàn-seam3-ứng dụng) ra ... – FMQ