में ईजेबी विधि के एसिंक इनवोकेशन के परिणामस्वरूप मैं यह समझने के लिए संघर्ष कर रहा हूं कि मेरे ईजेबी में एक @ एसिंक्रोनस विधि वास्तव में असीमित रूप से क्यों नहीं आ रही है। मैं एक जेएसएफ 2 प्रोजेक्ट में सीडीआई (बीन्स.एक्सएमएल के साथ) का उपयोग कर जेबॉस एएस 7 पर चल रहा हूं। मेवेन द्वारा उत्पादित सरल .war पैकेजिंग।@ एसिंक्रोनस के परिणामस्वरूप जेबीएसएसएएस 7
ईजेबी जेएसएफ 2 प्रबंधित बीन्स के साथ एक .war में पैक किया गया है जो इसके साथ बातचीत करता है। यह एक साधारण @ स्टेटलेस ईजेबी है। इसका उपयोग इंजेक्शन करके (इंजेक्ट के माध्यम से) एक जेएसएफ 2 प्रबंधित बीन में किया जाता है जो इसकी @ एसिंक्रोनस विधि का आह्वान करता है।
@ एसिंक्रोनस विधि आमंत्रण के तुरंत बाद भविष्य को वापस लौटने के बजाय, यह सिंक्रनाइज़ रूप से निष्पादित करता है जैसे कि यह एक सामान्य अप्रसन्न प्रत्यक्ष कॉल था। यह सच है कि क्या मैं ईजेबी का आह्वान करने के लिए स्थानीय नो-इंटरफ़ेस दृश्य या स्थानीय व्यापार इंटरफ़ेस का उपयोग करता हूं।
@Asynchronous केवल @Remote सेम के लिए समर्थित है? यदि हां, तो क्या यह .war पैकेजिंग के भीतर काम कर सकता है या क्या मुझे यह एक सुविधा प्राप्त करने के लिए ईएआरबी जार को ईएआर में पैकेज करना है? उदाहरण के लिये
सरलीकृत कोड, एक .war में एक ही पैकेज में प्रत्येक वर्ग के साथ:
public interface SomeEJB {
public Future<Void> doSomething();
}
@Stateless
@Local(SomeEJB.class)
public class SomeEJBImpl implements SomeEJB {
@Asynchronous
@Override
public Future<Void> doSomething() {
// Spend a while doing work
// then:
return new AsyncResult<Void>(null);
}
}
@Named
@RequestScoped
public class JSFBean {
@Inject private transient SomeEJB someEJB;
private Future<Void> progress;
// Called from JSF2, starts work and re-displays page
public String startWorkAction() {
// This call SHOULD return a Future immediately. Instead it blocks
// until doWork() completes.
progress = someEJB.doWork();
}
public Boolean isDone() {
return progress != null && progress.isDone();
}
}
यह दिखने लग रहा है कि @ एसिंक्रोनस जेबॉस एएस 7 (7.0.2 के रूप में) में लागू नहीं किया गया है - फिर भी, जावा ईई 6 कार्यान्वयन अभी भी छोटी हैं और कल्पना के रिलीज के बाद अधूरे साल हैं। आह। चेतावनी जारी करना अच्छा होगा या कुछ भी सशक्त रूप से असफल नहीं होगा। –
आप AS 7.0.2 में स्टैंडअलोन-पूर्वावलोकन कॉन्फ़िगरेशन के साथ कुछ ऑफ-बाय-डिफ़ॉल्ट EJB3.1 सुविधाओं को सक्षम कर सकते हैं। इस प्रकार से जुड़ें: "bin/standalone.sh --server-config = standalone-preview.xml" –