2010-05-06 13 views
8

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

किस तकनीक और पुस्तकालय के साथ शुरू करना सबसे आसान है? क्या मुझे इसे सॉकेट का उपयोग करके स्क्रैच से लागू करना चाहिए, या क्या मुझे जावा आरएमआई, या शायद जेएमएस का उपयोग करना चाहिए? या क्या ऐसे अन्य विकल्प हैं जिनसे शुरू करना आसान है?

और क्या कोई सर्वर लाइब्रेरी है जिसका मुझे उपयोग करना चाहिए? जेटी एक विकल्प है?

उत्तर

2

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

http://mina.apache.org/

तुम सच में एक आवेदन सर्वर की जरूरत है तो आप JBoss पर देखने लग सकता है।

http://www.jboss.org/jbossremoting

आप शायद उद्यम जावा बीन्स हालांकि के लिए ज्यादा जरूरत नहीं होगी, जो यह भी (मीना की तरह कुछ के लिए एक विकल्प के रूप में) एक दूरस्थ घटक प्रदान करता है। ज्यादातर मामलों में एक सरल POJO आधारित ढांचे पर्याप्त से अधिक है - आप इस पूरी तरह एक निर्भरता इंजेक्शन ढांचे के साथ इस तरह के Guice के रूप में बाँध सकती:

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

या स्प्रिंग। इसे सरल रखें, जब तक आपको वास्तव में आवश्यकता न हो, एक जे 2 ईई सर्वर का उपयोग न करें। उम्मीद है की वो मदद करदे।

2

यह जे 2 ईई करता है, लेकिन यह एक बिल्कुल नया सीखने की वक्र है क्योंकि उन्होंने कई समस्याओं को पूर्व-हल किया है जिनमें आप भाग लेंगे और आप कई नई तकनीकों को जोड़ सकते हैं।

लेकिन यह सबसे बुनियादी बात है, जे 2 ईई केवल उस प्रश्न का उत्तर देता है।

+0

मुझे लगता है, मैंने पहले कभी जे 2 ईई का उपयोग नहीं किया है। लेकिन मुझे लगता है कि अब यह करने का समय है;) धन्यवाद। यदि कोई हल्का-समाधान नहीं है। – Jonas

+0

बहुत सारे हल्के समाधान हैं, लेकिन आप जे 2 ईई पहले से ही हल हो चुके हैं और हल की गई कई समस्याओं को हल करेंगे। मैं कम से कम एक मुफ्त जे 2 ईई ढांचे के बारे में जानने की सिफारिश करता हूं जो सभी सुविधाओं के बारे में जानने के लिए पर्याप्त है - इस तरह आप संभावित समस्याओं को देख सकते हैं जिन्हें आप चलाएंगे, वे पहले ही हल हो चुके हैं। यदि आप वास्तव में अभी भी सुरक्षित महसूस करते हैं, तो आरएमआई का उपयोग करें। जे 2 ईई (मुफ्त में बहुत अधिक) अनावश्यक सर्वर और गारंटीकृत संदेश वितरण और अन्य सामान के साथ विफलता प्रदान करता है जो आपको यह तय करना मुश्किल हो सकता है कि आप इसे बाद में चाहते हैं या नहीं। –

+0

जावा ईई के साथ समस्या यह है कि आपके पास होने वाली समस्याओं को हल करने के अलावा, यह आपके पास होने वाली समस्याओं का एक टन भी हल करता है, फिर भी आप उन्हें विषय देते हैं। – Ryan

1

मैंने इस तरह की एक परियोजना में काम किया। हमने जे 2 ईई के साथ क्लाइंट-साइड स्विंग और सर्वर की तरफ लागू किया। हमने ईजेबी, स्टेटलेस बीन्स और संदेश संचालित बीन्स का इस्तेमाल किया। मैं भी एक डिवाइस ट्रैकिंग, प्रबंधन परियोजना में रहा हूं। हमारे ग्राहक ट्रकों + स्विंग उपयोगकर्ताओं थे और हमने कनेक्शन को संभालने और रखने के लिए Servets + TCP/UDP, अपाचे मीना फ्रेमवर्क का उपयोग किया है।

3

यह देखते हुए कि आपके पास पहले से ही एप्लिकेशन है, शायद क्लाइंट और सर्वर के बीच आवश्यक इंटरफ़ेस की पहचान करना सबसे आसान बात है, और सबसे पहले आपके एप्लिकेशन को रीफैक्टर करने के लिए उस इंटरफ़ेस का उपयोग बैक- अंत/फ्रंट-एंड उसी प्रक्रिया के भीतर

फिर आप इसे अलग करना शुरू कर सकते हैं। आरएमआई का उपयोग करके इसे अलग करने का एक आसान समाधान होगा (क्योंकि आप जावा ऑब्जेक्ट्स से बात कर रहे हैं और जावा विधि कॉल कर रहे हैं)। वसंत में इंटरफेस के आरएमआई एक्सपोजर को सरल/स्वचालित करने के लिए उपयोगी टूल शामिल हैं।

अधिसूचना आवश्यकता के लिए, एक साधारण यूडीपी मल्टीकास्ट (या प्रसारण) पर्याप्त होगा।

ध्यान दें कि जैसे ही आप अपना आवेदन विभाजित करते हैं, आपको फिर से समस्याएं होती हैं। डेटा के निरंतर विचारों को बनाए रखना, समय पर अपडेट प्रबंधित करना, सर्वर के नीचे होने वाले मामलों को संभालना, जब आप बहुत सारे क्लाइंट प्राप्त करते हैं तो संभावित लोडिंग समस्याएं। एक अर्थ में, क्लाइंट और सर्वर में एप्लिकेशन को विभाजित करना सिर्फ एक नई वास्तुकला की शुरुआत है प्रक्रिया।

0

मैं जावा स्विंग क्लाइंट/सर्वर अनुप्रयोगों में लगभग 3 वर्षों तक काम कर रहा हूं। मैं आपको आरएमआई/ईजेबी के लिए जाने का सुझाव दूंगा। प्रारंभिक एप्लिकेशन जिसे हमने विकसित किया था, क्लाइंट-सर्वर संचार के लिए आरएमआई/ईजेबी का उपयोग कर वेबलॉगिक सर्वर के साथ ऐसा कर रहा था।

लेकिन बाद में हमने पाया कि सत्र-टाइमआउट आदि जैसे एप्लिकेशन में बहुत से "ब्राउज़र जैसी सुविधाएं" शामिल हैं, इसलिए, हमने BrightSide फ्रेमवर्क का उपयोग किया जो HTTP के माध्यम से आरएमआई कॉल को लपेटता है। हमने एक और बढ़ाया है कि हमने वेबलॉगिक को ओपन सोर्स जेबॉस सर्वर से बदल दिया है।

HTTP के साथ कॉल की रैपिंग बहुत आसान हो जाएगी और आप अपने स्विंग अनुप्रयोगों को वास्तव में समृद्ध बना सकते हैं। बाद में, जब स्थिति सख्ती से वेबसाइट का उपयोग करने की मांग करती है, तो आप jnlp का उपयोग करके अपने स्विंग को तैनात कर सकते हैं।

आशा है कि इससे मदद मिलेगी।

+0

लेकिन HTTP का उपयोग करके, मैं अधिसूचनाओं को पुश नहीं कर सकता !? – Jonas

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