12

Java Webstart を使用して、Java アプリケーションをイントラネットにデプロイします。アプリケーションは頻繁に更新されます。Web サーバー上の JAR/WAR を更新した後 (タイムスタンプが変更された後)、ユーザーがデスクトップ アイコンからアプリケーションを起動することがあり、Java Webstart は新しいバージョンをダウンロードする代わりに古いバージョンを起動します。

これは、JNLP の貼り付けです。オフライン許可がオンになっていることがわかりますが、常にチェックを更新し、ポリシーを常に更新します。また、ダウンロードフラグは熱心です。私の理解では、これらのオプションを使用すると、常にサーバーのタイムスタンプに対するキャッシュのチェックと JAR ファイルのダウンロードが行われるはずです。

Webstart に不満を感じ始めています。誰かが同様の問題を見たことがありますか? 解決策はありますか?3 回目または 5 回目の更新ごとに Webstart のキャッシュを手動でクリアするよう人々に説明するのにうんざりしています。

<?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>
4

8 に答える 8

5

問題を解決した可能性があります - ただし、jnlp spec="1.0+" - この要素は、jnlp 仕様 6.0+ 以降でのみサポートされます。おそらくそれが、更新が失敗する理由の 1 つです。

于 2011-01-14T16:47:16.693 に答える
1

私はあなたと同じ問題を抱えていて、次のようにして解決しました:

  1. 変化する

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

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

  2. $VERSION を<a href="foo-$VERSION.jnlp">Run</a>

デプロイメントごとに $VERSION を自動的に更新します。

私はそれが醜い解決策であることを知っていますが、それは私たちにとって常にうまくいくものです.

于 2010-11-29T15:46:47.833 に答える
1

この投稿に関連している可能性があります http://www.coderanch.com/t/528570/JNLP-Web-Start/java/Do-jnlp-file-updates-itself

于 2011-07-14T03:03:04.047 に答える
1

クライアント JRE が最新であると仮定すると、このスレッド<update check="timeout" policy="always"/>で提案され、 JNLP 構文のドキュメントで説明されているように試すことができます。

于 2010-01-27T20:06:56.637 に答える
1

この問題はoffline-allowedタグが原因です。

JNLP 仕様ごと

offline-allowed が指定されている場合、Java Web Start は更新が利用可能かどうかも確認します。ただし、アプリケーションが既にダウンロードされている場合、チェックは数秒後にタイムアウトになり、キャッシュされたアプリケーションが代わりに起動されます。サーバー接続が適度に高速な場合、通常はアプリケーションの最新バージョンが実行されますが、保証はされません。ただし、アプリケーションはオフラインで実行できます。

于 2013-02-22T02:02:55.120 に答える
0

Java Web Start アプリケーションを 10 か国以上に配布してきましたが、アプリケーションが正しく更新されていないことが判明したときは、郡のネットの構成ミス、またはユーザー コンピューターのネットワーク設定 (主にプロキシ) が原因でした。スペインの中央オフィスでは、Java Web Start は常に問題なく動作します。

于 2010-01-27T16:50:32.570 に答える
0

私はJava webstart nextx.jarクローンを使用しています。URLConnection.getLastUpdated() メソッドを使用して、JAR が更新されない問題を突き止めました。HEAD メソッドを使用してファイル名の lastUpdated を取得するため、getLastUpdated() のキャッシュが原因でダウンロードできない場合があるのはこのためです。Webstart に欠陥があるため、アプリケーションを更新する独自の方法を使用することにしました。

于 2014-09-01T04:52:07.303 に答える
0

更新を完了するのに十分な時間をアプリに開かせなかったという理由だけで、この問題が発生しました。

JNLP にupdate check="background" というオプションがある場合は、(バックグラウンドで実行されている) 更新が完了するまでしばらく待ってからアプリケーションを閉じてください。

于 2015-02-05T00:40:14.763 に答える