के रूप में पैक किए जाने पर एक डब्ल्यूएआर के अंदर एक सीडीआई घटना का निरीक्षण करना संभव है। मेरे पास एंटरप्राइज़ एप्लिकेशन आर्काइव (ईएआर) है जिसमें एकाधिक बैकएंड मॉड्यूल (ईजेबी) और कुछ वेब मॉड्यूल (WAR) शामिल हैं।ईएआर
घटना बैकएंड मॉड्यूल में से एक के अंदर निकाल दिया जाता:
@Inject private Event<MyEvent> myEvent;
...
public void fireEvent() {
myEvent.fire(new MyEvent());
}
...
यह इस तरह के कोड के साथ अन्य बैकएंड मॉड्यूल में से किसी में मनाया जा सकता है:
public void listener(@Observes MyEvent myEvent) {
..
}
लेकिन मैं नहीं कर सकता वार्स के अंदर घटना को पुनः प्राप्त करें। क्या यह क्लासलोडर दृश्यता के कारण है (डब्ल्यूएआर से कक्षाएं ईजेबी को दिखाई नहीं दे रही हैं) या सीडीआई को इसे संभालना चाहिए?
यदि आवेदन व्यापक घटनाओं के लिए सीडीआई का उपयोग नहीं किया जा सकता है, तो विकल्प क्या हैं?
- JMS
- अमरूद EventBus
- ...
कुछ ऐसा है जिसे CDI के साथ काम करता है? शायद कुछ सीडीआई एक्सटेंशन जो घटनाओं को युद्धों में पुल करता है?
----------- संपादित करें:
मैं घटना का निरीक्षण करने के अगर यह एक ही युद्ध के अंदर निकाल दिया जाता है सक्षम हूँ। इसके अलावा मैंने सफलता के बिना ईवेंट श्रोता के रूप में @ स्टेटलेस बीन का उपयोग करने की कोशिश की।
पैकेजिंग इस तरह है:
- EAR
- युद्ध (घटना यहाँ देखा जाना चाहिए)
- युद्ध
- EJB (घटना यहाँ में निकाल दिया जाता)
युद्ध फ़ाइल आप एक '/ वेब-INF/beans.xml' –
हाँ .. beans.xml फ़ाइलों स्थान पर हैं। – psartini
क्या आप कृपया WAR ईवेंट श्रोताओं को पोस्ट कर सकते हैं (कुछ समझने के लिए कि आप कैसे तत्काल हैं और उनका उपयोग करते हैं, शायद सीडीआई आपके बीन उदाहरणों से अवगत नहीं है ...)। एक विस्तृत पैकेजिंग विवरण भी मदद करेगा। –