2010-01-27 23 views
12

अपडेट नहीं कर रहा है हम जावा वेबस्टार्ट का उपयोग हमारे इंट्रानेट पर जावा एप्लिकेशन को तैनात करने के लिए करते हैं। आवेदन लगातार अद्यतन प्राप्त करता है। एक बार जब उपयोगकर्ता वेबसर्वर (टाइमस्टैम्प बदल गया) पर JARs/WAR को अपडेट करने के बाद एप्लिकेशन को अपने डेस्कटॉप आइकन से लॉन्च करेगा और जावा वेबस्टार्ट एक नया डाउनलोड करने के बजाय पुराना संस्करण लॉन्च करेगा।जावा वेबस्टार्ट इंटरमीटेंट JAR

यहां हमारे जेएनएलपी का पेस्ट है, जैसा कि आप ऑफलाइन-अनुमति देख सकते हैं, लेकिन हमेशा अद्यतन और नीति अपडेट करें। इसके अलावा, ध्वज डाउनलोड उत्सुक है। मेरी समझ से इन विकल्पों को हमेशा सर्वर पर टाइमस्टैम्प के खिलाफ कैश की जांच और जेएआर फ़ाइल डाउनलोड करने का परिणाम होना चाहिए।

मैं वेबस्टार्ट से निराश होना शुरू कर रहा हूं! क्या किसी ने समान समस्याएं देखी हैं? कोई समाधान? मैं अपने वेबस्टार्ट कैश को मैन्युअल रूप से हर तीसरे या पांचवें अद्यतन को साफ़ करने के माध्यम से लोगों को घूमने में बीमार पड़ रहा हूं।

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE jnlp PUBLIC "-//Sun Microsystems, Inc//DTD JNLP Descriptor 6.0//EN" "http://java.sun.com/dtd/JNLP-6.0.dtd"> 
<jnlp spec="1.0+" codebase="$$codebase" href="$$name"> 
    <information> 
    <title>TITLE</title> 

    <vendor>VENDOR</vendor> 

    <description>Our Utility Application</description> 

    <description kind="short">Our Utility Application PRD</description> 
    <icon href="images/util_icon.png" height="64" width="64"/> 
    <offline-allowed/> 
    <shortcut online="true"> 
     <desktop /> 
     <menu submenu="Utility Apps"/> 
    </shortcut> 
    </information> 

    <security> 
    <all-permissions /> 
    </security> 

    <update check="always" policy="always" /> 

    <resources> 
    <!-- requires 1.6+ --> 
    <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se" java-vm-args="-ea" initial-heap-size="128m" max-heap-size="512m" /> 

    <!-- application code, download jar before we start. --> 
    <jar href="OurUpdatedJarName.jar" main="true" download="eager" /> 

    <property name="configfile" value="updatedJarName.config" /> 
    </resources> 

    <application-desc main-class="main.Client"> 
    <argument>-D</argument> 
    </application-desc> 
</jnlp> 

उत्तर

5

आपने समस्या हल कर दी है - लेकिन jnlp spec = "1.0+" - तत्व केवल jnlp spec 6.0+ के बाद समर्थित है। शायद यह आपके अपडेट विफल होने के कारणों में से एक है।

0

हम दर्जनों देश जावा वेब शुरू अनुप्रयोगों वितरित की है और जब हम ने पाया है कि आवेदन ठीक ढंग से अद्यतन नहीं किया गया था यह काउंटी शुद्ध के एक मिस-विन्यास के लिए किया गया था, या उपयोगकर्ता के नेटवर्क सेटिंग में कंप्यूटर, ज्यादातर प्रॉक्सी। स्पेन के वेब वेब में हमारे केंद्रीय कार्यालयों में सभी तरह से काम ठीक है।

+0

हाय टेलकॉन्टर, हां, हालांकि कोई कॉन्फ़िगरेशन नहीं है, यह अंतःक्रियात्मक रूप से काम करता है .. इसलिए यह प्रॉक्सी कैश के साथ कुछ करने के लिए नेटवर्क समस्या की संभावना नहीं है, लेकिन फिर, वेबस्टार्ट कैश को हटाने पर यह समस्या को ठीक नहीं करेगा। –

1

क्लाइंट जेआरई मानते हैं कि आप <update check="timeout" policy="always"/> को thread में सुझाए गए अनुसार JNLP syntax दस्तावेज़ में वर्णित हैं।

+0

@trashgod, आपको पता चलेगा कि कोड में पहले से ही <अपडेट चेक = "हमेशा" पॉलिसी = "हमेशा" /> है। –

+0

हां, लेकिन समस्या की अस्थायी प्रकृति टेलीकॉन्टर की परिकल्पना से इंकार नहीं करती है। मैं सोचने में मदद नहीं कर सकता कि "टाइमआउट" या यहां तक ​​कि "पृष्ठभूमि" अपडेट को सफल होने की अनुमति दे सकता है। मुझे यह भी याद है कि नए प्रमाणपत्र में स्विच करते समय .jnlp फ़ाइल को स्वयं स्पर्श करना होगा। – trashgod

1

मैं तुम्हारा के रूप में ही मुद्दों था और निम्न कार्य करके इसे हल:

<jar href="OurUpdatedJarName-$VERSION.jar" ...

  • रखें $ VERSION पर

    1. बदलें

      <jar href="OurUpdatedJarName.jar" ...

      में <a href="foo-$VERSION.jnlp">Run</a>

    हम अपने आप हर तैनाती के लिए $ संस्करण को अद्यतन।

    मुझे पता है कि यह एक बदसूरत समाधान है लेकिन यह वह है जो हर बार हमारे लिए काम करता है।

  • +0

    ऐसा लगता है कि आप अधिक मानक (spec के अनुसार) का उपयोग नहीं कर रहे हैं ... __V {version} .jar और जेडब्ल्यूएस संस्करण का उपयोग कर सक्षम ध्वज? – Joel

    1

    इस समस्या offline-allowed टैग के कारण होता है।

    Per JNLP spec

    ऑफ़लाइन-अनुमति निर्दिष्ट है, तो जावा वेब प्रारंभ भी यदि कोई अद्यतन उपलब्ध है देखने के लिए जाँच करेगा। हालांकि, अगर आवेदन पहले ही डाउनलोड हो चुका है तो चेक कुछ सेकंड के बाद टाइमआउट होगा, इस मामले में कैश किए गए एप्लिकेशन को लॉन्च किया जाएगा। एक उचित तेज़ सर्वर कनेक्शन को देखते हुए, एप्लिकेशन का नवीनतम संस्करण आमतौर पर चलाया जाएगा, लेकिन इसकी गारंटी नहीं है। हालांकि, एप्लिकेशन ऑफ़लाइन चलाया जा सकता है।

    0

    मैं जावा वेबस्टार्ट nextx.jar क्लोन का उपयोग कर रहा हूं। मैंने URLConnection.getLastUpdated() विधि के उपयोग के लिए JAR समस्या को अपडेट नहीं किया है। चूंकि यह फ़ाइल नाम के अंतिम अद्यतन प्राप्त करने के लिए HEAD विधि का उपयोग करता है, इसलिए यही कारण है कि कभी-कभी getLastUpdated() के कैशिंग के कारण डाउनलोड नहीं होता है। हमने वेब एप्लिकेशन को त्रुटिपूर्ण होने के कारण हमारे आवेदन को रीफ्रेश करने की अपनी पद्धति का उपयोग करने का निर्णय लिया है।

    0

    मुझे यह समस्या थी क्योंकि मैंने ऐप को अपडेट को पूरा करने के लिए पर्याप्त समय नहीं खोला था।

    यदि आपके पास यह विकल्प है: अपने जेएनएलपी में चेक = "पृष्ठभूमि" अपडेट करें, अद्यतन (जो पृष्ठभूमि पर चल रहा है) को समाप्त करने के लिए एप्लिकेशन को बंद करने से पहले कुछ समय प्रतीक्षा करें।

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