Tôi đang tìm một điểm vào trong một EJB được triển khai trên JBoss.Phương thức gọi trong EJB khi khởi động JBoss
Servlets có thẻ load-on-startup
để sử dụng trong web.xml
.
Tôi đang tìm kiếm chức năng tương tự init()
cho EJB.
Tôi đang tìm một điểm vào trong một EJB được triển khai trên JBoss.Phương thức gọi trong EJB khi khởi động JBoss
Servlets có thẻ load-on-startup
để sử dụng trong web.xml
.
Tôi đang tìm kiếm chức năng tương tự init()
cho EJB.
Điều đó không tồn tại đối với EJB cho đến 3.1. Với EJB 3.1, bạn có thể sử dụng một bean singleton để mô phỏng rằng:
Từ Application Startup/Shutdown Callbacks:
@Startup
@Singleton
public class FooBean {
@PostConstruct
void atStartup() { ... }
@PreDestroy
void atShutdown() { ... }
}
Nếu không, bạn sẽ cần phải dựa vào các thủ thuật cũ tốt để sử dụng một ServletContextInitializer
.
Có một số tiện ích mở rộng dành riêng cho ứng dụng, ví dụ: lifecycle listener cho Glassfish. Có thể có một thứ như vậy đối với JBoss.
Nhưng nếu tôi là bạn, tôi sẽ cố gắng dựa vào các tính năng tiêu chuẩn càng nhiều càng tốt. Vấn đề với tiện ích mở rộng không chuẩn là bạn không bao giờ biết chính xác những gì có thể được thực hiện hay không, ví dụ: bạn có thể bắt đầu giao dịch hay không, vv
Đậu được quản lý có thể được sử dụng để thực hiện một số quy trình khi khởi động JBoss, bạn phải thêm mục nhập của bean được quản lý đó vào tệp cấu hình.
Bạn sẽ có thể thêm dòng sau vào phía trên cùng của phương pháp mà bạn muốn chạy lúc khởi động:
@Observer("org.jboss.seam.postInitialization")
Bài viết này mô tả bảy cách khác nhau của cách gọi chức năng lúc khởi động máy chủ. Không phải tất cả sẽ làm việc với JBoss mặc dù.
Seven ways to get things started. Java EE Startup Classes with GlassFish and WebLogic
Nếu bạn đang nhắm mục tiêu JBoss AS 5.1, và bạn không nhớ bằng cách sử dụng JBoss EJB 3.0 Extensions, bạn có thể xây dựng một bean dịch vụ cho bootstrap EJB của bạn. Nếu dịch vụ của bạn triển khai một giao diện được chú thích bằng chú thích @Management
và khai báo một phương thức có chữ ký public void start() throws Exception
, JBoss sẽ gọi phương thức này khi nó bắt đầu dịch vụ. Sau đó bạn có thể gọi một init()
phương pháp chuyên dụng trên EJB bạn muốn khởi tạo:
@Service
public class BeanLauncher implements BeanLauncherManagement
{
@EJB private SessionBeanLocal sessionBean;
@Override
public void start() throws Exception
{
sessionBean.init();
}
}
@Management
public interface BeanLauncherManagement
{
public void start() throws Exception;
}
biết thêm thông tin về vấn đề này, trong đó có thêm các sự kiện cuộc sống-chu kỳ, có thể được tìm thấy here.
Ngoài ra, người ta luôn có thể sử dụng MBean với các phương pháp vòng đời khởi động/dừng. MBean được tiêm EJB cần thiết và gọi bất kỳ phương thức nào từ nó được yêu cầu. –
Cảm ơn. Hai bài đăng tuyệt vời. Tôi đã kết thúc với một "ServletWrapper" thay thế. Nhưng một nhà tái cấu trúc là trong chương trình nghị sự. Chúc mừng! – Elijah
Tôi đang sử dụng jboss 5.1 (không chắc chắn nếu nó hỗ trợ EJB3.1) tôi có thể sử dụng Technic này để gọi phương thức triển khai không? cảm ơn. – rayman