Tôi có một Kho lưu trữ ứng dụng doanh nghiệp (EAR) chứa nhiều mô-đun phụ trợ (EJB) cũng như một số mô-đun web (WAR).Có thể quan sát sự kiện CDI bên trong WAR khi được đóng gói dưới dạng EAR
Các tổ chức sự kiện bị sa thải bên trong một trong các module phụ trợ:
@Inject private Event<MyEvent> myEvent;
...
public void fireEvent() {
myEvent.fire(new MyEvent());
}
...
Nó có thể được quan sát thấy trong bất kỳ các module phụ trợ khác với mã như thế này:
public void listener(@Observes MyEvent myEvent) {
..
}
Nhưng tôi không thể truy xuất sự kiện bên trong các WAR. Đây có phải là do khả năng hiển thị của trình nạp lớp (các lớp từ WAR không hiển thị với các EJB) hay CDI nên xử lý điều này?
Nếu không thể sử dụng CDI cho các sự kiện rộng ứng dụng, các lựa chọn thay thế là gì?
- JMS
- Ổi EventBus
- ...
Có điều gì đó làm việc với CDI? Có lẽ một số phần mở rộng CDI mà cầu các sự kiện vào các cuộc chiến tranh?
----------- EDIT:
Tôi có thể quan sát sự kiện nếu nó được kích hoạt trong cùng một WAR. Ngoài ra, tôi đã cố gắng sử dụng một bean @Stateless làm trình xử lý sự kiện mà không thành công.
Bao bì là như thế này:
- EAR
- WAR (sự kiện nên được quan sát thấy ở đây)
- WAR
- EJB (sự kiện bị sa thải ở đây)
Chắc chắn trong quý vị nộp WAR bạn có một '/ WEB-INF/beans.xml' –
yes .. file beans.xml được đưa ra. – psartini
Bạn có thể vui lòng gửi các trình lắng nghe sự kiện WAR (một cái gì đó để hiểu làm thế nào bạn nhanh chóng và sử dụng chúng, có lẽ CDI không nhận thức được trường hợp đậu của bạn ...). Mô tả đóng gói chi tiết cũng sẽ giúp ích. –