2013-01-16 115 views
15

कृपया जावा वेब एप्लिकेशन के लिए "प्लगइन" आर्किटेक्चर कैसे करें, इस बारे में सलाह दें।जावा वेब एप्लिकेशन "प्लगइन" आर्किटेक्चर

वर्तमान में हम टोमकैट सर्वलेट कंटेनर में काफी सरल और मानक स्प्रिंग + हाइबरनेट + स्ट्रूट 2 का उपयोग कर रहे हैं। (मेवेन के साथ निर्मित)

मुझे Redmine जैसे कुछ चाहिए। जहां कोई मॉड्यूल सक्षम/अक्षम किया जा सकता है, Redmine UI

कृपया ओएसजीआई, पोर्टलेट जैसे भारी विकल्प बहिष्कृत करें।

  • ओएसजीआई बहुत भारी है, वेब के लिए तकनीक का कोई अच्छा गोद लेने नहीं है। मैंने पहले ही Eclipse Germini देखा है;
  • Portlet यह पुराना है, और कभी लोकप्रिय नहीं था।
+0

का पता लगाने के लायक मैंने बाउंटी से सम्मानित किया है, लेकिन सवाल अभी भी बंद है। –

उत्तर

13

मैं कई संभावित समाधान प्रदान करने की कोशिश करूंगा। मैंने जिस परियोजना पर काम कर रहा हूं, उसके लिए मैंने छोटे पीओसी तैयार करने में कुछ समय बिताया है, इसलिए उम्मीद है कि नीचे दिए गए विकल्प प्रासंगिक हैं।

महत्वपूर्ण नोट: कुछ एक्सटेंशन बिंदु को परिभाषित करना वास्तव में आसान है, हल करें और उपलब्ध कार्यान्वयन ढूंढें। उपलब्ध समाधान का एक बहुत उदाहरण भलाई के लिए, कर रहे हैं और सरल एक - JSPF

संसाधन वेब अनुप्रयोगों के लिए मुख्य समस्या

OSGi

OSGi, कि बुरा नहीं है और कर सकते हैं कर रहे हैं उपयोगी होना। ऐसा लगता है कि भारी (और कुछ कार्यान्वयन भारी हैं) लेकिन यह मानकीकृत प्लेटफार्म की कीमत है। मैं Apache Felix जांचने का सुझाव दूंगा। इसका उपयोग "हल्के" मोड में किया जा सकता है। वैसे, यह वेब कंसोल के रूप में शिथिल युग्मित प्लगइन आधारित अनुप्रयोग का निर्माण होता है भी शामिल है, उपयोगी हो सकता है:

enter image description here

कुछ उदाहरण Extending the Apache Felix Web Console

वेब कंसोल एक पंजीकरण से बढ़ाया जा सकता है इंटरफ़ेस javax.servlet के लिए ओएसजीआई सेवा felix.webconsole.label पृष्ठ पर सेट करें (URL में अंतिम खंड) पृष्ठ पर पृष्ठ के लिए सेट करें। संबंधित सेवा को वेब कंसोल प्लगइन या प्लगइन को संक्षिप्त के लिए बुलाया जाता है।

आप eie-manager भी देख सकते हैं जो स्वच्छ और सरल है और प्लगइन प्रबंधित करने के लिए ओएसजीआई का उपयोग करता है। आपके लिए एक अच्छा उदाहरण हो सकता है।

कस्टम प्लगइन ढांचे

मैं Jenkins/Hudson पीछे समाधान की समीक्षा करने के सुझाव है। मैं कहूंगा कि जेनकींस प्लग-इन प्रणाली काफी परिपक्व और भरोसेमंद है। एक अच्छा उदाहरण के रूप में इस्तेमाल किया जा सकता है।

enter image description here

कृपया यह भी Hudson Plugin Architecture

सरल समाधान

जाँच अपने प्रोजेक्ट मैं प्लगइन अमूर्त कस्टम निर्भरता रिसोल्वर के साथ JSPF के आधार पर परत का निर्माण किए हुए हैं।

पेशेवरों:

  • सरल और छोटे
  • स्वच्छ अवधारणा
  • काम करता है अच्छा

कान्स:

  • उचित प्लगइन प्रबंधन के बिना धीमी गति से (पूर्ण classpath खोज हो सकता है)
  • अतिरिक्त ध्यान

आवश्यकता हो सकती है मैं JSPF उपयोग करने के लिए केवल यदि आप वास्तव में कुछ सादगी की जरूरत है और सब कुछ नियंत्रित करना चाहते हैं सुझाव है कि बहुत ही बुनियादी सुविधा प्रदान करता है। JPF उदाहरण के लिए, बॉक्स से बाहर दिलचस्प सुविधाओं की एक बहुत कुछ प्रदान करता है:

प्लग-इन "गर्म पंजीकृत" और आवेदन निष्पादन के दौरान भी de-पंजीकृत हो सकता है। और भी, पंजीकृत प्लग-इन सक्रिय और निष्क्रिय "फ्लाई पर" हो सकते हैं, रनटाइम संसाधन उपयोग को कम कर सकते हैं।

समस्या यह है कि जेपीएफ मर चुका है।

सुझाव

Apache Felix साथ कुछ समय बिताने करें। यह काफी परिपक्व है, इसलिए आपका समय निवेश बहुत अधिक भुगतान कर सकता है।

6

बाहर इस प्रश्न के उत्तरों की जांच: Best way to build a Plugin system with Java

आप प्लगइन कोड पर विश्वास नहीं करते हैं, तो आप सैंडबॉक्सिंग लागू कर सकते हैं, के रूप में यहाँ वर्णित: Sandbox against malicious code in a Java application

खुला स्रोत Java Plug-in Framework परियोजना का समर्थन करता है प्लगइन निष्क्रियता, आप इससे प्रेरित हो सकते हैं भले ही यह आपके उद्देश्यों के लिए बहुत भारी हो।

+0

वेब पार्ट्स पर इसे कैसे लागू करें? क्या आप सभी प्लगइन्स को .war के रूप में बनायेंगे? –

+0

अच्छा, यदि ये प्लगइन्स स्वतंत्र वेबपैप्स हो सकते हैं, तो आपको कुछ भी करने की ज़रूरत नहीं है, उदाहरण के लिए टॉमकैट प्रबंधक वेबपैप आपको सर्वर को बंद और पुनरारंभ किए बिना वेबपैप्स को शुरू/बंद/पुनः लोड करने की अनुमति देता है: http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html – lbalazscs

+0

प्लगइन्स स्वतंत्र वेबैप नहीं होना चाहिए।इस तरह से उन्हें एकीकृत करने के लिए बहुत कुछ काम होगा (क्रॉस लिंक, सुरक्षा, सिग्नल साइन-ऑन इत्यादि) –

2

एटलसियन ओपन ने अपनी प्लगइन सिस्टम here को सोर्स किया। मुझे लगता है कि यह एटलसियन टीम द्वारा भारी काम किया जा रहा है। इसके documentation