2010-01-02 17 views
7

सर्वलेट 3.0 के बाद से javax.servlet.ServletContext#addServlet के साथ प्रोग्रामेटिक रूप से सर्वलेट उदाहरण पंजीकृत करना संभव है। इस वर्ग में createServlet विधि भी है जो कुछ एनोटेशन का विश्लेषण करती है और निर्भरता इंजेक्शन करती है। मुझे आश्चर्य है कि अगर मुझे एनोटेशन प्रोसेसिंग की आवश्यकता नहीं है तो मुझे इस विधि की ज़रूरत है। मैं निर्भरता इंजेक्शन के माध्यम से आवश्यक निर्भरताओं को सेट करने के लिए एक सामान्य कन्स्ट्रक्टर के साथ एक सर्वलेट रखना चाहता हूं।सर्वलेट 3.0 के साथ कन्स्ट्रक्टर निर्भरता इंजेक्शन?

@Inject 
public MyServlet(SomeDependency sd) { // Constructor 
    ... 
} 

सवाल:

  • यह एक सर्वलेट उदाहरण "हाथ से" createServlet बिना निर्माण करने के लिए संभव है? (new MyServlet())
  • क्या रचनात्मक इंजेक्शन करने के लिए जावा ईई सर्वर की निर्भरता इंजेक्शन तंत्र का उपयोग करना संभव है? यह कैसे करना है? या Guice की तरह एक अलग डी ढांचे की आवश्यकता है?

उत्तर

5

हाल ही में जावा ईई 6 मानक सर्वलेट्स के लिए निर्भरता इंजेक्शन का समर्थन करता है, प्रासंगिक भाग को जेएसआर -29 9 या सीडीआई कहा जाता है। जेएसआर -29 9 संदर्भ कार्यान्वयन, JBoss weld, टोमकैट या जेट्टी जैसे सर्वलेट कंटेनरों में तैनात किया जा सकता है, साथ ही यदि आप एक पूर्ण जावा ईई 6 एप्लिकेशन सर्वर का उपयोग नहीं करना चाहते हैं जैसे ग्लासफ़िश v3 उदा।

वैसे, एक एम्बेडेड जेट्टी सर्वर के साथ आप पूर्व-कॉन्फ़िगर किए गए सर्वलेट उदाहरण जोड़ने के लिए अपने कस्टम एपीआई का उपयोग कर सकते हैं।

+0

धन्यवाद, जेएसआर -29 9 वह है जो मैं ढूंढ रहा हूं। वेल्ड प्रलेखन कहता है: "हम इसे एक बीन के निर्माता, विधि या क्षेत्र में इंजेक्शन करके टेक्स्टट्रांसलेटर का एक उदाहरण प्राप्त कर सकते हैं, या एक क्षेत्र या जावा ईई घटक वर्ग की विधि जैसे सर्वलेट।" http://docs.jboss.org/weld/reference/1.0.0/en-US/html/intro.html ऐसा लगता है जैसे servlets के साथ कन्स्ट्रक्टर इंजेक्शन संभव नहीं है। – deamon

+0

ध्यान दें कि वेल्ड के शुरुआती संस्करण बदले गए थे ... अगर आपको कॉन्फ़िगरेशन 100% सही नहीं मिला तो अनुपयोगी। यह तब से सुधार हो सकता है। –

3

गुइस जावा ईई सर्वर की आवश्यकता के बिना बॉक्स से बाहर करता है।

http://code.google.com/p/google-guice/wiki/ServletModule

+3

गुइस सर्वलेट्स के ऊपर एक परत जोड़ता है। यह जावा ईई 6 से पहले उपयोगी था। आज निर्भरता इंजेक्शन जावा ईई का हिस्सा है और यदि संभव हो तो मैं इसे अतिरिक्त ढांचे के बिना उपयोग करना पसंद करूंगा। – deamon

संबंधित मुद्दे