Поскольку мы установили Java 1.7.0u45, наше приложение WebStart показывает большую задержку при запуске в системах Windows (мы еще не пробовали другие платформы).
Признак состоит в том, что после двойного щелчка на значке приложения на рабочем столе всплывающий экран появляется быстро, остается на некоторое время (как и раньше) и закрывается. После этого у нас есть отсрочка около 1 минуты. Затем, наконец, открывается окно приложения, и все работает как шарм.
Наше приложение работало без проблем до Java 1.7.0u25. Java 1.7.0u40 была первой версией, в которой возникла проблема.
Наше приложение построено из одного (исполняемого) файла jar. Самой последней частью являются некоторые родные классы для доступа к последовательному порту, которые находятся внутри банки. Я добавил файл jnlp в конце этого сообщения.
Мы попытались выяснить причину задержки:
Проверено примечания по выпуску Java WebStart на http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/enhancements-7.html для наших версий.
Насколько мы можем сказать, нет ничего, что могло бы привести к поведению. Мы заметили, что есть новые записи Manifest (Разрешения, Codebase, Application-Name). Они были добавлены.
Посмотрел по всему Google и stackoverflow.
У некоторых, похоже, есть аналогичная проблема, но мы никогда не видели решения. Во многих случаях у людей возникают проблемы с загрузкой файлов jar и повторной загрузкой. Это, похоже, не наша проблема.
Используемые жесткие инструменты
Мы хотели узнать, что делает приложение в указанную минуту. Таким образом, мы использовали анализатор процессов и монитор процессов из sysinternals и wirehark. Мы выяснили, что в ожидаемое время процесс пытается связываться через IP с помощью "vip1.g-anycast1.cachefly.net" (205.234.175.175) и 93.184.220.29. Последний, кажется, сервер сертификатов, я действительно не понимал, что это за кеширование. В обоих случаях мы видим TCP syn, но ответа нет, нет дальнейших сообщений. Оба аддресса являются pingable.
Не относится к IP-материалам: мы уверены, что приложение не загружено, а запущено из кеша и что наша основная функция вызывается после задержки, а не раньше.
Здесь мы застреваем
Любые дальнейшие идеи, как это решить? Мы единственные, кто испытывает такое поведение?
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="#" onclick="location.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'; return false;"/>
<icon kind="shortcut" href="#" onclick="location.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'; return false;"/>
<icon kind="splash" href="#" onclick="location.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'; return false;"/>
<homepage href="#" onclick="location.href='https://confluence.detss.corpintra.net/display/TCU/TcuTerm'; return false;"/>
<offline-allowed/>
<shortcut>
<desktop/>
<menu submenu="TcuTerm"/>
</shortcut>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.6+" href="#" onclick="location.href='http://java.sun.com/products/autodl/j2se'; return false;"/>
<jar href="TcuTerm.jar" main="true"/>
</resources>
<application-desc main-class="com.x.tcu.app.term.TcuTerminal"/>
<update check="timeout"/>
</jnlp>