2008-10-16 10 views
12

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

मूल रूप से मेरे पास स्थापित होने पर स्थापित उपयोगकर्ताओं को फिर से तैनात किए जाने के लिए अतिरिक्त कार्यक्षमता वाले जार फ़ाइलों का एक गुच्छा मिला है। कुछ भी जटिल नहीं है, बस जांचें कि कोई नया संस्करण जारी किया गया है, उन्हें HTTP पर डाउनलोड करें, और उसके बाद वैकल्पिक रूप से उपयोगकर्ता को ऐप को पुनरारंभ करने की पेशकश करें।

मैंने वेबस्टार्ट पर एक नज़र डाली थी, और यह काम कर सकती थी। लेकिन यह विशेष ऐप क्लासलोडिंग और जीसी मेमोरी सेटिंग्स के साथ कुछ फंकी चीजें करता है जो ऐसा नहीं लगता कि वे वेबस्टार्ट के माध्यम से समर्थित हैं, या कम से कम जटिल मामलों को जटिल करेंगे। (यह जेएमटर का एक tweaked निर्माण है)

मैं इस प्लगइन हैंडलर http://swing-fx.blogspot.com/2008/06/add-auto-update-and-plugins-to-your.html में जोड़ने की सड़क भी नीचे चला गया, लेकिन यह बहुत अल्फा है, और आपको अल्फा सामान के साथ मिलने वाली सामान्य बग के साथ बहुत कुछ करने की कोशिश करता है।

उत्तर

6

मैंने वही काम किया। लेकिन वह बहुत समय पहले था इसलिए आज शायद बेहतर उपकरण हैं।

मुझे पता चला कि मुझे एक लोडर चाहिए था। लोडर मुख्य कार्यक्रम में क्लासपाथ में ऐप जार नहीं थे। यदि आवश्यक हो तो पहले इसे अपडेट डाउनलोड किया गया और फिर क्लास पथ में ऐप जार के साथ कस्टम क्लासलोडर बनाया और एप्लिकेशन मुख्य श्रेणी की मुख्य विधि को बुलाया। यह बहुत जटिल नहीं है। आईआईआरसी मुझे ऐसा करने की ज़रूरत है क्योंकि अगर वे पहले से ही कक्षा में थे तो जारों को विंडोज़ में ओवरराइट नहीं किया जा सका।

उम्मीद है कि इससे मदद मिलती है।

+0

यह पूरे दौर में सबसे आसान तरीका प्रतीत होता था। मैंने सर्वर पर एक एक्सएमएल फ़ाइल रखी, और स्थानीय रूप से सभी फाइलों को अपडेट करने के लिए इसकी एक प्रतिकृति, और एक संस्करण संख्या सूचीबद्ध की। त्वरित और सरल, लेकिन चाल करता है। – madlep

4

हमारे पास 6 साल पहले स्विंग ऐप था जिसने स्वयं अपडेट किया था। जैसा कि आपने सुझाव दिया है,

1) यह http,
2 पर नवीनतम जार डाउनलोड करता है) उन्हें एक फ़ोल्डर में कॉपी किया गया।
3) क्योंकि स्विंग ऐप को बीएटी फ़ाइल का उपयोग करके लॉन्च किया गया है, उपयोगकर्ता ने हाँ कहा है, हम स्विंग ऐप बंद कर देंगे और अपडेट फ़ोल्डर में किसी भी फाइल को देखेंगे। यदि हां, तो नई जेएआर को आवश्यक निर्देशिका में कॉपी करने के लिए एक और बीएटी फ़ाइल लॉन्च करें।
4) फिर स्विंग ऐप लॉन्च करें।

1

मेरा मानना ​​है कि आप जावा WebStart पर फिर से गौर करना चाहिए, या कम से कम विस्तार "फंकी classloading" जो आपको लगता है समस्याओं के कारण (के रूप में यह भी किसी भी समाधान यहाँ प्रस्तावित के साथ समस्याओं के कारण हो सकता) जा रहा है।

आईआईआरसी, आप जावा वेबस्टार्ट (http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html#resources) का उपयोग कर कमांड लाइन पैरामीटर सेट कर सकते हैं।

1

मैं निश्चित रूप से पहले वेबस्टार्ट को आजमाउंगा। हमने वेबस्टार्ट का उपयोग कर शुरुआती ग्रहण आरसीपी ऐप्स को लॉन्च करने में बहुत सफलता हासिल की है, और संभवतः आप ओएसजीआई फ्रेमवर्क (ग्रहण विषुव) के मुकाबले अधिक मजेदार क्लासलोडिंग मुद्दों को नहीं प्राप्त कर सकते हैं।

क्या आप शायद क्लासलोडिंग दृष्टिकोण के बारे में अपने प्रश्न में कुछ और विवरण दे सकते हैं?

जीसी और अन्य वीएम सेटिंग्स के संबंध में: ऐप्स को लॉन्च करने के लिए वेबस्टार्ट द्वारा उपयोग की जाने वाली आपके जेएनएलपी (जावा नेटवर्क लॉन्चिंग प्रोटोकॉल) फ़ाइलों में निर्दिष्ट करना आसान है।

+0

क्या आप आरसीपी ऐप के लिए एक लिंक दे सकते हैं? – Liam

+0

क्या आपका मतलब आरसीपी ऐप है जिसे वेबस्टार्ट किया जा सकता है? जिस पर मैंने काम किया है वह इंट्रानेट प्रकार एंटरप्राइज़ अनुप्रयोगों के लिए है, इसलिए वेब पर उपलब्ध नहीं है। –

4

अपडेट, प्लगइन्स, चिंता का पृथक्करण इत्यादि बिल्कुल OSGi है - आप इसे देखना चाहेंगे।यह नि: शुल्क नहीं आएगा (पढ़ें: एक खड़ी प्रारंभिक सीखने की अवस्था के साथ है, खासकर जब आप वर्तमान में classloading चाल का उपयोग कर रहे) कम से कम वहाँ अच्छा खुला स्रोत कार्यान्वयन हैं (फेलिक्स - felix.apache.org देखते हैं, विषुव - www.eclipse.org देख सकते हैं और अन्य)

इन कार्यान्वयन के लिए ऑटोपॉटर उपलब्ध हैं - यदि आप अपने मॉड्यूल सही तरीके से लिखते हैं तो रनटाइम पर पुनरारंभ किए बिना अपडेट करना संभव है।

1

जावा वेब स्टार्ट अच्छी पसंद है। जीसी सामान महत्वपूर्ण नहीं है। क्लासलोडिंग समस्या हो सकती है। लेकिन जब आप उपयोगकर्ता द्वारा भरोसा करते हैं तो आप सभी प्राधानियों को प्रदान कर सकते हैं और आप कस्टम क्लासलोडिंग करने में सक्षम होंगे। शायद क्लासलोडिंग के साथ फंकी सामान पर पुनर्विचार करना अच्छा होगा। यह वास्तव में जरूरी है? या NetBeans को देखो। ऑटो-अपडेट के लिए प्रेरणा मिलनी चाहिए।

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