Long retard de démarrage pour Java WebStart application depuis Java 1.7.0u40

Depuis que nous avons installé Java 1.7.0u45 notre WebStart application affiche un retard important au démarrage sur les systèmes Windows (nous n'avons pas essayé d'autres plates-formes).

Problème est que après avoir double-cliquant sur l'icône de l'application sur le bureau, l'écran de démarrage s'affiche rapidement, reste pendant un certain temps (comme avant) et se ferme. Après cela, nous avons un retard d'environ 1 minute. Puis, enfin, la fenêtre de l'application s'ouvre et tout fonctionne comme un charme.

Notre application a fonctionné sans problèmes jusqu'à Java 1.7.0u25. Java 1.7.0u40 a été la première version où le problème s'est présenté.

Notre application est construite à partir d'un seul exécutable fichier jar. Le plus passionnant de la partie certaines classes natives pour l'accès au port série qui sont à l'intérieur du bocal. J'ai ajouté le fichier jnlp à la fin de ce post.

Nous avons essayé de trouver quelle est la cause de ce retard pourrait être:

Vérifié la Java WebStart notes de version à http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/enhancements-7.html pour nos versions.

Aussi loin que nous pouvons dire, il n'y a rien qui pourrait causer le comportement. Nous avons remarqué qu'il y a de nouvelles entrées Manifeste (Autorisations, la base de Code, Application-Name). Ils ont été ajoutés.

Cherché partout sur Google et stackoverflow.

Certains semblent avoir un problème similaire, mais nous n'avons jamais vu une solution. Dans de nombreux cas, les gens ont des problèmes avec le téléchargement des fichiers jar et répété le téléchargement. Cela ne semble pas être notre problème.

Utilisé difficiles outils

Nous avons voulu savoir ce que l'application n'en dit la minute de temps. Nous avons donc utilisé l'explorateur de processus et contrôle des processus de sysinternals et wireshark. Nous avons constaté que dans le temps d'attente le processus tente de communiquer via IP avec 'vip1.g-anycast1.cachefly.net' (205.234.175.175) et 93.184.220.29. Ce dernier semble être un certificat de serveur, je n'ai pas vraiment comprendre ce que cachefly chose est. Dans les deux cas, nous voyons un TCP syn, mais pas de réponse, aucune autre communication. Les deux adddresses sont pingable.

Pas liées à la propriété intellectuelle des choses: Nous sommes convaincus que l'Application n'est pas téléchargé, mais a commencé à partir de la mémoire cache et que notre principal s'appelle après retard, pas avant.

C'est là que nous sommes coincés

Toute autre idée comment résoudre ce problème? Sommes nous les seuls à vivre ce comportement?

Jnlp (Notez que les url sont retravaillées manuellement):

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

OriginalL'auteur Michael B | 2013-10-18