Da quando abbiamo installato Java 1.7.0u45 la nostra applicazione WebStart mostra un notevole ritardo all'avvio su sistemi Windows (non abbiamo provato altre piattaforme).Ritardo di avvio lungo per l'applicazione Java WebStart da Java 1.7.0u40
Sintomo: dopo aver fatto doppio clic sull'icona dell'applicazione sul desktop, la schermata iniziale viene visualizzata rapidamente, rimane per un po 'di tempo (come in precedenza) e si chiude. Dopo questo abbiamo un ritardo di circa 1 minuto. Quindi, finalmente, la finestra dell'applicazione si apre e tutto funziona come un incantesimo.
La nostra applicazione ha funzionato senza problemi fino a Java 1.7.0u25. Java 1.7.0u40 era la prima versione in cui il problema si presentava.
La nostra app è costituita da un singolo file jar (eseguibile). La parte più interessante sono alcune classi native per l'accesso alle porte seriali che si trovano all'interno del jar. Ho aggiunto il file jnlp alla fine di questo post.
abbiamo cercato di scoprire quale sia la causa del ritardo potrebbe essere:
Controllato il rilascio di Java WebStart note a http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/enhancements-7.html per le nostre versioni.
Per quanto possiamo dire, non c'è nulla che possa causare il comportamento. Abbiamo notato che ci sono nuove voci manifest (permessi, codebase, nome-applicazione). Questi sono stati aggiunti.
Cerca su Google e StackOverflow.
Alcuni sembrano avere un problema simile, ma non abbiamo mai visto una soluzione. In molti casi le persone hanno problemi con il download di file jar e download ripetuti. Questo sembra non essere il nostro problema.
usati strumenti difficili
abbiamo voluto sapere ciò che l'applicazione fa in detto minuto di tempo. Quindi abbiamo usato process explorer e process monitor da sysinternals e wireshark. Abbiamo scoperto che durante il tempo di attesa il processo tenta di comunicare via IP con 'vip1.g-anycast1.cachefly.net' (205.234.175.175) e 93.184.220.29. Quest'ultimo sembra essere un server di certificati, non ho davvero capito cosa sia questa cosa di cachefly. In entrambi i casi vediamo un syn TCP, ma nessuna risposta, nessuna ulteriore comunicazione. Entrambi gli adddresses sono pingable.
Non correlato a IP-roba: siamo sicuri che l'applicazione non è stata scaricata, ma è stata avviata dalla cache e che il nostro principale è chiamato dopo il il ritardo, non prima.
Questo è dove siamo bloccati
Eventuali ulteriori idee su come risolvere questo problema? Siamo gli unici a sperimentare questo comportamento?
jnlp (Nota che gli URL vengono rielaborate manualmente):
<?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>
Grazie anche a me. – Blackvault