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 Web 应用程序(使用 ObjectDB 作为 JPA 持久性提供程序),我体验到 Glassfish4.1.1 的部署时间(超过 10 分钟)比 Glassfish4.1 的部署时间(大约 2 分钟)要长得多。这大约慢了 5 倍。
[编辑:2016-09-13 尝试使用 Payara 163 Full (Payara Server 4.1.1.163),它花了 20 多分钟,甚至比 Glassfish4.1.1 慢,设置几乎相同]
我不可能在这里重现或提供大型网络应用程序的示例。
Q1:有没有人经历过 Glassfish-4.1 和 Glassfish-4.1.1 [编辑:OR Payara Server 4.1.1.163]之间的任何类似差异,我可以在哪里寻找差异点?
(我已经在尝试使用 NetBeans Profiler 进行调查,但要找到原因并不是那么容易。)
[编辑:2016-09-15 计时测试]
我使用截屏录像进行了仔细的并排比较,并与日志中的时间进行了比较。
在 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 日志中会出现类似的警告消息,但不会出现长时间的暂停/阻塞。
Q2:我还能做些什么来找出为什么它会在那里暂停/停滞很久?