Mac OS X: Yosemite 10.10.5
До недавнего времени я использовал:
NetBeans8.1beta
Glassfish4.1
Mojarra 2.2.7
Недавно я исследовал использование:
NetBeans8.1
Glassfish4.1.1
Mojarra 2.2.12.
С очень большим веб-приложением JSF (с ObjectDB в качестве поставщика сохраняемости JPA) время развертывания для Glassfish4.1.1 значительно больше (более 10 минут), чем для Glassfish4.1 (около 2 минут). Это примерно в 5 раз медленнее.
[EDIT: 2016-09-13 Пробовал с Payara 163 Full (Payara Server 4.1.1.163), и это заняло более 20 минут, даже медленнее, чем на Glassfish 4.1.1, с почти идентичной настройкой]
Я не могу воспроизвести здесь или предоставить примеры большого веб-приложения.
Q1: Кто-нибудь сталкивался с похожими различиями между Glassfish-4.1 и Glassfish-4.1.1 [EDIT: ИЛИ Payara Server 4.1.1.163], и где я мог бы искать точку различия ?
(Я уже пытаюсь исследовать это с помощью профилировщика NetBeans, но найти причину пока не так-то просто.)
[EDIT: временные тесты 15 сентября 2016 г.]
Я провел тщательное параллельное сравнение, используя запись скринкаста и сравнение с таймингами в журнале.
В Payara41 (4.1.1.163) и Glassfish4.1.1 он «зависает», как показано ниже, примерно на 10 минут, и я не нашел ни одного параметра журнала, который дает одну строку вывода здесь, где возникает проблема, и запускает сервер в Режим DEBUG также не дает никакой дополнительной информации.
[2016-09-14T23:02:53.450+1000] [Payara 4.1] [INFO] [NCLS-LOGGING-00009] [javax.enterprise.logging] [tid: _ThreadID=19 _ThreadName=RunLevelControllerThread-1473858173343] [timeMillis: 1473858173450] [levelValue: 800] [[
Running Payara Version: Payara Server 4.1.1.163 #badassfish (build 215)]]
... проходит через все шаги, а затем через десятки этих объявлений имен EJB JNDI:
[2016-09-14T23:03:48.823+1000] [Payara 4.1] [INFO] [AS-EJB-00054] [javax.enterprise.ejb.container] [tid: _ThreadID=74 _ThreadName=admin-thread-pool(2)] [timeMillis: 1473858228823] [levelValue: 800] [[
Portable JNDI names for EJB BeanName: [java:global/app-name/BeanName!com.example.BeanName, java:global/app-name/BeanName]]]
Выдает это сообщение версии WELD:
[2016-09-14T23:03:48.875+1000] [Payara 4.1] [INFO] [] [org.jboss.weld.Version] [tid: _ThreadID=74 _ThreadName=admin-thread-pool(2)] [timeMillis: 1473858228875] [levelValue: 800] [[
WELD-000900: 2.3.5 (Final)]]
... затем проходит около 8 секунд до этого сообщения..
[2016-09-14T23:03:56.666+1000] [Payara 4.1] [INFO] [] [org.jboss.weld.Event] [tid: _ThreadID=74 _ThreadName=admin-thread-pool(2)] [timeMillis: 1473858236666] [levelValue: 800] [[
WELD-000411: Observer method [BackedAnnotatedMethod] private org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider.processAnnotatedType(@Observes ProcessAnnotatedType) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.]]
... Затем подождите много минут (обычно около 10 минут), прежде чем возобновить эти безобидные предупреждения.
[2016-09-14T23:11:33.387+1000] [Payara 4.1] [INFO] [] [org.jboss.weld.Bootstrap] [tid: _ThreadID=74 _ThreadName=admin-thread-pool(2)] [timeMillis: 1473858693387] [levelValue: 800] [[
WELD-001125: Illegal bean type java.util.Comparator<javax.persistence.metamodel.EntityType<?>> ignored on [EnhancedAnnotatedTypeImpl] public static class com.example.ElementManager$EntityTypeSorter]]
[2016-09-14T23:11:59.736+1000] [Payara 4.1] [WARNING] [] [org.glassfish.jersey.internal.Errors] [tid: _ThreadID=74 _ThreadName=admin-thread-pool(2)] [timeMillis: 1473858719736] [levelValue: 900] [[
The following warnings have been detected: WARNING: Parameter 1 of type T from public void com.example.NumberProperty.setDefaultValue(T) is not resolvable to a concrete type.
]]
Подобные предупреждающие сообщения появляются в журнале Glassfish4.1, но нет длительной паузы/задержки.
Вопрос 2. Что еще я могу сделать, чтобы выяснить, почему он приостанавливается/зависает там целую вечность?