अनिवार्य चेतावनी: जावा ईई ऐप सर्वर (यहां तक कि टॉमकैट) में अपने स्वयं के धागे बनाना भी निराश है क्योंकि यह एक बड़ा प्रदर्शन मुद्दा हो सकता है और ज्यादातर मामलों में कंटेनर कार्यक्षमता, जैसे कि जेएनडीआई, काम करने से रोकती है। नए धागे नहीं जानते होंगे कि वे किस एप्लिकेशन से संबंधित हैं, थ्रेड संदर्भ क्लासलोडर सेट नहीं किया जाएगा और कई अन्य छिपे हुए मुद्दे नहीं होंगे।
सौभाग्य से जावा ईई सर्वर जावा ईई 6 @Asynchronous
और इस चालाक डिजाइन पैटर्न के माध्यम से थ्रेड पूल का प्रबंधन करने का एक तरीका है। किसी भी जावा ईई 6 प्रमाणित सर्वर के लिए पोर्टेबल।
अपने आवेदन में यह ईजेबी बनाएं।
package org.superbiz;
import javax.ejb.Asynchronous;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;
@Stateless(name="Executor")
public class ExecutorBean implements Executor {
@Asynchronous
@Override
public void execute(Runnable command) {
command.run();
}
}
तो फिर तुम सादे निर्भरता इंजेक्शन के माध्यम से अपने आवेदन में कहीं और इस सेम (चर्चा करते हुए घटक है अगर एक सर्वलेट, श्रोता, फ़िल्टर, अन्य EJB, JSF प्रबंधित सेम) देख सकते हैं।
@EJB
private Executor executor;
फिर सामान्य की तरह Executor
का उपयोग करें।
घटक एक और जावा EE घटक नहीं है, तो आप के माध्यम से सेम देखने कर सकते हैं:
InitialContext initialContext = new InitialContext();
Executor executor = (Executor) initialContext.lookup("java:module/Executor");
स्रोत
2012-12-19 04:33:10
थोड़ा ओ/टी: यह एक बहुत अच्छा पैटर्न है (हम इसे बहुत उपयोग करते हैं), हालांकि यह तब कम हो जाता है जब आपके एल्गोरिदम को डेडलॉक्स को रोकने के लिए अलग थ्रेड-पूल की आवश्यकता होती है (इस बारे में ईजेबी स्पेक मुद्दे पर चर्चा भी देखें) –
हम अपने आवेदन में एक ही डिज़ाइन का उपयोग करते हैं लेकिन हाल ही में जब हम निष्पादकों का उपयोग करके पृष्ठभूमि में थोक क्रियाएं चला रहे हैं तो हम डेटाबेस में बहुत से डेटा ओवरराइट का सामना कर रहे हैं। कोई विचार अगर यह एक आम/पता मुद्दा हो सकता है। यदि हां, तो हो सकता है कि कोई फिक्स उपलब्ध हो – Adhir
ऐसा करने का सही तरीका प्रबंधित प्रबंधितकर्ता सेवा का उपयोग कर रहा है, मेरा उत्तर [नीचे] (http://stackoverflow.com/questions/13932083/jboss-java-ee-container-and- ए-एक्जिक्यूटर्स सर्विस/1 940460 9 # 1 9 40460 9) –