web-dev-qa-db-ja.com

Java 1.7.0u40以降、JavaWebStartアプリケーションの起動遅延が長い

Java 1.7.0u45をインストールしてから、WebStartアプリケーションはWindowsシステムでの起動時に大きな遅延を示します(他のプラットフォームは試していません)。

症状は、デスクトップのアプリケーションアイコンをダブルクリックすると、スプラッシュ画面がすぐに表示され、しばらくの間(以前と同じように)表示されて閉じます。この後、約1分の遅延があります。そして最後に、アプリケーションウィンドウが開き、すべてが魅力のように機能します。

私たちのアプリケーションは、Java 1.7.0u25まで問題なく動作しました。 Java 1.7.0u40は、問題が発生した最初のバージョンでした。

私たちのアプリは、単一の(実行可能な)jarファイルから構築されています。最も既存の部分は、jar内にあるシリアルポートアクセス用のいくつかのネイティブクラスです。この投稿の最後にjnlpファイルを追加しました。

遅延の原因を突き止めようとしました。

Java WebStartリリースノートhttp://docs.Oracle.com/javase/7/docs/technotes)で確認しました/guides/jweb/enhancements-7.html 私たちのバージョンの場合。

私たちが言える限り、この動作を引き起こす可能性のあるものは何もありません。新しいマニフェストエントリ(Permissions、Codebase、Application-Name)があることに気づきました。これらが追加されました。

Googleとstackoverflow全体を見ました。

同様の問題を抱えているように見える人もいますが、解決策は見当たりませんでした。多くの場合、jarファイルのダウンロードと繰り返しのダウンロードに問題があります。これは私たちの問題ではないようです。

使用済みのタフなツール

その分、アプリが何をするのか知りたかったのです。そのため、sysinternalsとwiresharkのプロセスエクスプローラーとプロセスモニターを使用しました。待機時間中に、プロセスがIP経由で「vip1.g-anycast1.cachefly.net」(205.234.175.175)および93.184.220.29と通信しようとしていることがわかりました。後者は証明書サーバーのようですが、私はそのcacheflyが何であるかを本当に理解していませんでした。どちらの場合も、TCP synが表示されますが、応答がなく、それ以上の通信はありません。両方のアドレスはping可能です。

IP関連のものとは関係ありません:アプリケーションはダウンロードされませんが、キャッシュから開始され、メインはafter遅延の前ではなく、遅延と呼ばれることは確かです。

これは私たちが立ち往生しているところです

これを解決する方法についてさらにアイデアはありますか?この行動を経験しているのは私たちだけですか?

Jnlp(URLは手動で作り直されていることに注意してください):

<?xml version="1.0" encoding="UTF-8"?>
<jnlp  spec="6.0+" codebase="http://53.48.16.33:8180/jenkins/job/TcuTerm%20-%20Deploy/lastSuccessfulBuild/artifact/5000_Construction/5100_Code_Base/TcuTerm/antlocal" >
    <information>
      <title>TcuTerm</title>
      <vendor>Development</vendor>
      <icon                 href="http://53.48.16.33:8180/jenkins/job/TcuTerm%20-%20Deploy/lastSuccessfulBuild/artifact/5000_Construction/5100_Code_Base/TcuTerm/src/com/x/tcu/app/term/resources/tcu.jpg"/>
      <icon kind="shortcut" href="http://53.48.16.33:8180/jenkins/job/TcuTerm%20-%20Deploy/lastSuccessfulBuild/artifact/5000_Construction/5100_Code_Base/TcuTerm/src/com/x/tcu/app/term/resources/tcu.jpg"/>
      <icon kind="splash"   href="http://53.48.16.33:8180/jenkins/job/TcuTerm%20-%20Deploy/lastSuccessfulBuild/artifact/5000_Construction/5100_Code_Base/TcuTerm/src/com/x/tcu/app/term/resources/splash.jpg"/>
      <homepage href="https://confluence.detss.corpintra.net/display/TCU/TcuTerm"/>
      <offline-allowed/>
      <shortcut>
        <desktop/>
        <menu submenu="TcuTerm"/>
      </shortcut>
    </information>
    <security>
      <all-permissions/>
    </security>
    <resources>
      <j2se version="1.6+" href="http://Java.Sun.com/products/autodl/j2se"/>
      <jar href="TcuTerm.jar" main="true"/>
    </resources>
    <application-desc main-class="com.x.tcu.app.term.TcuTerminal"/>
    <update check="timeout"/>
 </jnlp>
17
Michael B

はい、atulsmの答えは正しいキックを与えました。しかし、読んでください:私はヒントに従おうとしましたが、Javaコントロールパネルでエントリがすでに無効になっている(チェックマークが設定されていない)ため、見栄えがよくありませんでした。設定目盛りが一時的にしか表示されないため(WebStartアプリケーションが実行されて再度終了すると、設定が選択されていない状態に戻ります)、設定が正しくないように見えますJavaの設定ファイルに書き込まれます。

最後に: 展開構成ファイル を確認し、展開プロパティでdeployment.security.revocation.check=NO_CHECKを手動で設定しました。それは問題を解決しました!

13
Michael B

私はこの問題を経験しましたが、これはデフォルトで実施されている証明書失効チェックが原因でした。これを無効にすると([詳細]タブ=> [証明書失効チェックを実行する])、問題ないはずです。

2
Atul Soman