धागा करने के लिए एक और उत्तर जोड़ा जा रहा है, के बाद से मैं इस के लिए एक समाधान पाया: यह नया मुद्दा (एक नई Jira में) समस्या को संबोधित किया जा रहा है आखिरकार।
मेरा पर्यावरण: WAS 8.5.5, क्वार्ट्ज 1.8.5, कोई वसंत नहीं।
समस्या मैं (ऊपर कहा गया है) किया गया था अप्रबंधित धागा ctx.lookup(myJndiUrl)
से एक NamingException के कारण, कि बजाय सही ढंग से अन्य अनुप्रयोग सर्वर (JBoss, Weblogic) में काम कर रहा था; वास्तव में, Webpshere निम्न संदेश के साथ एक "घटना" फायरिंग की गई थी:
javax.naming.ConfigurationException: एक JNDI आपरेशन एक पर "जावा:" नाम पूरा नहीं किया जा सकता क्योंकि सर्वर क्रम संबद्ध नहीं है किसी भी जे 2 ईई अनुप्रयोग घटक के साथ ऑपरेशन का धागा। यह स्थिति तब हो सकती है जब "java:" नाम का उपयोग करने वाले JNDI क्लाइंट को सर्वर अनुप्रयोग अनुरोध के थ्रेड पर निष्पादित नहीं किया जाता है। सुनिश्चित करें कि एक जे 2 ईई अनुप्रयोग स्थिर कोड ब्लॉक के भीतर या j2EE अनुप्रयोग द्वारा बनाए गए धागे में "जावा:" नामों पर जेएनडीआई संचालन निष्पादित नहीं करता है। ऐसा कोड जरूरी नहीं है कि सर्वर अनुप्रयोग अनुरोध के धागे पर चलें और इसलिए "java:" नामों पर जेएनडीआई संचालन द्वारा समर्थित नहीं है।
निम्न चरणों को समस्या हल:
1) 1.8.6 (कोई कोड में परिवर्तन क्वार्ट्ज अपग्रेड किया गया), बस Maven पोम
2) के लिए निम्न डीईपी जोड़ा क्लासपाथ (मेरे मामले में, ईएआर/lib फ़ोल्डर), नया वर्कमैनेजर थ्रेडएक्सएटर उपलब्ध कराने के लिए
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-commonj</artifactId>
<version>1.8.6</version>
</dependency>
नोट: QTZ-113 या आधिकारिक क्वार्ट्ज दस्तावेज़ीकरण 1.x2.x इस फ़िक्स को सक्रिय करने के तरीके पर कोई उल्लेख नहीं है। > AsynchronousBeans - - सांत्वना था में> WorkManagers)
3) quartz.properties करने के लिए "wm/डिफ़ॉल्ट" मेरा था 8.5.5 में पहले से ही कॉन्फ़िगर DefaultWorkManager की JNDI निम्नलिखित (किया गया था, संसाधन देखने के लिए जोड़ा :
org.quartz.threadExecutor.class=org.quartz.custom.WorkManagerThreadExecutor
org.quartz.threadExecutor.workManagerName=wm/default
नोट: सही वर्ग org.quartz है। कस्टम.WorkManagerThreadExecutor क्वार्ट्ज-शेड्यूलर-1.8.6 (परीक्षण), या org.quartz के लिए। आमज। वर्कमैनेजर थ्रेडएक्सएटर2.1 से।1 पर (परीक्षण नहीं किया है, लेकिन Maven के रेपोस पर वास्तविक quartz-commonj's jars भीतर सत्यापित)
4) क्वार्ट्ज काम के खाली निर्माता में JNDI देखने चले गए (m_klovre's "Thread outside of the J2EE container" करने के लिए धन्यवाद); अर्थात, कन्स्ट्रक्टर को मेरे आवेदन के समान जे 2 ईई संदर्भ से प्रतिबिंब (newInstance()
विधि) द्वारा बुलाया जा रहा था, और java:global
नामस्थान तक पहुंच थी, जबकि execute(JobExecutionContext)
विधि अभी भी एक गरीब संदर्भ में चल रही थी, जिसमें मेरे सभी एप्लिकेशन गायब थे ईजेबी
उम्मीद है कि इससे मदद मिलती है।
Ps। एक संदर्भ के रूप में, आप here को quartz.properties फ़ाइल का एक उदाहरण देख सकते हैं I
"अप्रबंधित धागे फेंकने" का क्या मतलब है? –
यह मेरी डब्ल्यूएएस टीम द्वारा मुझे बताया गया था कि जब हमारा आवेदन चल रहा है वहां एक धागे वाले राज्य में धागे पैदा होते हैं - जो कि किसी भी चीज़ से जुड़ा नहीं है, जीसी उन्हें नहीं मिल सकता है। आईबीएम वेबसाइट से पढ़ने के आधार पर, यह क्वार्ट्ज का उपयोग करते समय हो सकता है। – boyd4715