2012-09-26 8 views
5

मैं "प्रकाश" घटकों का उपयोग करके एक नया वेब अनुप्रयोग विकसित करने के बारे में सोच रहा हूं, न कि पूर्ण ढेर ढांचे।लाइइस जावा वेब स्टैक गुइस-सर्वलेट/जेट्टी/जर्सी का उपयोग करके - कुछ प्रश्न

This article मेरी मुख्य प्रेरणा है!

जेटी: वेब सर्वर। मैं शायद विकास के लिए एक एम्बेडेबल संस्करण का उपयोग करूंगा लेकिन एप्लिकेशन को .war के रूप में निर्यात करने के विकल्प के साथ और उत्पादन वातावरण के लिए बाहरी जेटी सर्वर का उपयोग करूंगा।

गुइस/गुइस-सर्वलेट: निर्भरता इंजेक्शन और सर्वलेट मैपिंग + फ़िल्टर के लिए।

जर्सी: रूटिंग + अनुरोध/प्रतिक्रिया जेसन (डी) क्रमशः जब आवश्यक हो।

एक महत्वपूर्ण नोट: मुझे पता है कि कुछ लोग एक वेब सेवाओं परत केवल के रूप में जर्सी के साथ ढेर के इस प्रकार का उपयोग करेगा कर रहा हूँ, और उन सेवाओं का उपभोग करने के Javascript फ़्रेमवर्क (बैकबोन, AngularJS, आदि) का उपयोग करेगा और जावास्क्रिप्ट में प्रस्तुति तर्क का अधिकांश करें। मैं अभी तक इस तरह के ग्राहक सामान के लिए तैयार नहीं हूँ। मैं अभी भी जेएसपी का उपयोग करने के लिए prefere और जावास्क्रिप्ट अक्षम ग्राहकों के लिए सादे HTML भेजने में सक्षम था।

तो, मेरे सवालों का:

  • जर्सी का उपयोग कर रूपों प्रबंधन करने के लिए सबसे अच्छा तरीका क्या है? स्प्रिंग एमवीसी (जिसे मैंने अन्य प्रोजेक्ट्स पर इस्तेमाल किया) के साथ "बैकिंग ऑब्जेक्ट्स" की यह अवधारणा है जहां सबमिट किया गया POST डेटा स्वचालित रूप से बैकिंग ऑब्जेक्ट से जुड़ा होता है जो तब खेलना आसान होता है। क्या जर्सी के साथ कुछ समान है?

  • मुझे में एक विशिष्ट मार्ग फ़ाइल में परिभाषित करने के लिए मेरे सभी मार्ग पसंद हैं, हर जगह @ पैथ एनोटेशन के रूप में नहीं, जो मेरी राय में, प्रबंधन के लिए कठिन है। मुझे पूरा यकीन है कि जर्सी को उन हार्डकोडेड जेएक्स-आरएस की @ पैथ एनोटेशन के उपयोग की आवश्यकता है और बाहरी मार्ग कॉन्फ़िगरेशन सिस्टम की अनुमति नहीं है, क्या यह सही है? क्या आप किसी भी तरह से जर्सी के साथ सभी मार्गों को केंद्रीकृत कर सकते हैं?

  • मुझे रिवर्स रूटिंग (उदाहरण के लिए प्ले फ्रेमवर्क प्रदान करता है) की अवधारणा पसंद है। और, फिर से, मुझे नहीं लगता कि जर्सी उस कार्यक्षमता प्रदान कर सकता है, क्या यह सही है?

  • मेरे पिछले प्रश्नों को ध्यान में रखते हुए, शायद जर्सी उपयोग करने के लिए सही तकनीक नहीं है? क्या आप अन्य पुस्तकालयों के बारे में जानते हैं जो मैं अपने ढेर में रूटिंग भाग के लिए उपयोग कर सकता हूं?

  • इस तरह के प्रकाश जावा वेब स्टैक के लिए कोई अन्य सुझाव/टिप्स?

अद्यतन:

मैं वर्तमान मार्ग भाग के लिए UrlRewriteFilter को देख रहा हूँ।

मैं ActiveWeb framework पर भी देख रहा हूं, जो एक "पूर्ण ढेर" ढांचा है, लेकिन हल्का लगता है और यह भी कुछ कार्यक्षमताओं को प्रदान करता है जो मैं ढूंढ रहा हूं: केंद्रीकृत रूटिंग कॉन्फ़िगरेशन और रिवर्स-रूटिंग।

+3

आपको ड्रॉपविज़ार्ड दिलचस्प मिल सकता है: http://dropwizard.codahale.com/getting-started/ –

+0

हां, मैंने देखा है (और बुकमार्क किया गया है!) ड्रॉपविज़ार्ड और वास्तव में यह दिलचस्प है। यह बहुत अधिक प्रकार का ढेर है जिसका मैं उपयोग करना चाहता हूं। लेकिन जिन प्रश्नों से मैं यहां पूछता हूं वे अभी भी ड्रॉपवार्ड के साथ या बिना मान्य हैं! इसके अलावा, ड्रॉपविज़ार्ड बॉक्स के बाहर एक निर्भरता इंजेक्शन लाइब्रेरी को एकीकृत नहीं करता है (मुझे लगता है कि एक [ऐस-ऑन गिसिस] है (https://github.com/jaredstehler/dropwizard-guice) हालांकि)? – electrotype

+0

आपको गुइस की आवश्यकता क्यों है? सर्वलेट 3.0 पर्याप्त नहीं है? – keuleJ

उत्तर

0

कुछ शर्तों को समझाने के लिए। गुइस और स्प्रिंग एक ही समस्या डोमेन को हल करते हैं, जो निर्भरता इंजेक्शन है। तो, एक ही समय में Guice और SpringMVC का उपयोग करना संभव नहीं है या कम से कम विपरीत है।

Guice और स्प्रिंग के बीच अंतर करने के लिए, अच्छी तरह से कहा:

खड़ी! खूनी असंभव के करीब। मुझे लगता है कि गुइस रात के लिए लड़की घर लेना पसंद है। वसंत निश्चित शादी है, और यदि सावधान, दर्दनाक तलाक नहीं है। - स्पाइडर अक्टूबर 7 '11 16:25

गुइस वास्तव में बहुत हल्का डी ढांचा है। लेकिन रूटिंग और टेम्पलेटिंग के लिए समर्थन नहीं है। आपको इसे अपने आप से कठिन बाध्यकारी सर्लेट और अपने आप से tempaltes इंजन का उपयोग करना है। या आप Sitebricks का उपयोग कर सकते हैं। आप सभी इस तरह SitebrickModule विन्यास विधि में मार्ग रख सकते हैं:

public class MyAppConfig extends SitebricksModule { 
@Override 
protected void configureSitebricks() { 
    at("/movies").show(MoviesPage.class); // basic page 
    at("/actors").serve(ActorsPage.class); // service 
    embed(SoundtrackPage.class).as("Soundtrack"); // brick 
} 

}

Sitebricks भी कई tempalting प्रणाली का समर्थन: MVEL, Freemarker, ...

इसके अलावा, आप आसानी से बन सकती अपने जावास्क्रिप्ट उपयोग के लिए आरईएसटी सेवाएं:

Reply<Product> view() { 
    return Reply.with(new Product("Anti-ageing cure")) 
       .as(Json.class); 
} 

इसे आज़माएं।

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