मैं ग्लासफ़िश 3.1
पर प्रोजेक्ट डिप्लोइंग में सभी शेड्यूलर (@ शेड्यूल एनोटेटेड) को कैसे अक्षम कर सकता हूं शायद ऐसा करने के लिए कुछ कॉन्फ़िगरेशन प्रविष्टियां हैं?
मेरे पास मेरे प्रोजेक्ट में शेड्यूलर के साथ लगभग 20 ईजेबी हैं और यदि मैं एक छोटी सी चीज का परीक्षण/ठीक करना चाहता हूं तो मैं नहीं चाहता कि सभी/कुछ टाइमर शुरू हो जाएं।ग्लासफ़िश में सभी शेड्यूल को अक्षम करना 3.1
उत्तर
दुर्भाग्य से मैं अगर वहाँ अपनी समस्या को हल करने के लिए कुछ config प्रविष्टियां हैं पता नहीं है, लेकिन ऐसा करने के लिए एक programatical रास्ता बुला पर टाइमरद्वारा प्रदान की -Objects रद्द() -method से वहाँ है, टाइमर सेवा।
यहां कक्षा मैं बस परियोजनाओं में डाल दिया जब मैं केवल छोटी बातों का परीक्षण करना चाहते का एक उदाहरण है:
@Stateless
public class ScheduleCancellation {
@Resource
private TimerService timerService;
@Schedule(second = "0", minute = "*", hour = "*")
public void cancelTimers() {
System.out.println("cancelTimers()");
for (Timer timer : timerService.getTimers()) {
System.out.println("schedule gone!");
timer.cancel();
}
}
@Schedule(second = "*", minute = "*", hour = "*")
public void tick() {
System.out.println("tick");
}
}
आशा इस मदद करता है! :)
का उपयोग कर रहा हूं GetTimer() विधि केवल इस बीन से जुड़े सक्रिय टाइमर लौटाती है। शायद परियोजना में सभी टाइमर प्राप्त करना और इन्हें निष्क्रिय करना संभव है? – alexblum
TimerService#getTimers()
तक पहुंचने से केवल इस विशेष ईजेबी के लिए टाइमर वापस आ जाएंगे। कंटेनर में सभी टाइमर तक पहुंचने का कोई मानकीकृत तरीका नहीं है (वास्तव में, यहां एक वृद्धि अनुरोध है: http://java.net/jira/browse/EJB_SPEC-47)।
मुझे लगता है कि आपको कुछ आंतरिक ग्लासफ़िश मालिकाना समाधान और उनके आंतरिक (यदि यह भी संभव हो) के साथ बेड़े का उपयोग करना होगा। अगर मैं आप थे तो मैं GlassFish mailing list पर पूछूंगा।
ईजेबी 3.1 (http://docs.oracle.com/javaee/6/api/javax/ejb/Schedule.html#persistent%28%29) में '@ अनुसूची' एनोटेशन जोड़ा नहीं गया था? क्या आप ईजेबी 3.1 या 3.0 का उपयोग कर रहे हैं? –
मैं ईजेबी 3.1 – alexblum