WebSphere Liberty 启动时间过长
WebSphere Liberty excessive startup time
我正在尝试配置 IBM WebSphere Liberty 服务器 (16.0.0.3),以便我们的一个应用程序在那里运行,但是,除了明显的不可靠性之外,该服务器需要很长时间才能启动。
这在日志文件中很清楚:
[17-11-2016 15:54:16:231 GMT] 0000001c com.ibm.ws.webcontainer.security.ServletStartedListener I CWWKS9122I: For URL /* in application com.ibm.ws.jmx.connector.server.rest, the following HTTP methods are uncovered, and accessible: HEAD OPTIONS TRACE
[17-11-2016 15:56:18:349 GMT] 0000001b org.jboss.weld.Event I WELD-000411: Observer method [BackedAnnotatedMethod] public org.omnifaces.VetoAnnotatedTypeExtension.processAnnotatedType(@Observes ProcessAnnotatedType<T>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
[17-11-2016 15:56:19:798 GMT] 0000001b com.ibm.ws.ejbcontainer.osgi.internal.EJBRuntimeImpl I CNTR4000I: The ALLPLEXEJBeans-v2.jar EJB module in the ECC application is starting.
如您所见,前两行间隔了 2 分钟多,这很荒谬,尤其是考虑到它是一个非常小的应用程序。
在放弃 Liberty 配置文件之前,我可以做些什么来加快速度?
CDI 是一种非常有用的横切技术,但作为其中的一部分,CDI 引擎可能需要扫描应用程序中的每个 class 以查看什么是 CDI bean 和什么不是 CDI bean 以及解释其他注释等
通过限制 CDI 扫描来缩短 Liberty 启动时间
两种方法:
1。如果您希望在某些应用程序中使用 CDI,但不希望在其他应用程序中使用 CDI
告诉 CDI 只扫描包含 beans.xml 文件的应用程序。通过将此包含在您的服务器配置中来禁用 Liberty 中的 "implicit" bean 存档 (server.xml)
<cdi12 enableImplicitBeanArchives="false"/>
有关更多讨论,请参阅 here。
2。如果您根本不想使用 CDI,请从服务器配置中删除 CDI 功能。
正如 Brett Kail 指出的那样,如果这是服务器 and/or 中唯一的应用程序,您根本不需要或不需要 CDI,您可以从 <featureManager>
。正如他还指出的那样,请注意 webProfile-7.0
或 javaee-7.0
等功能,其中包括 cdi-1.2
功能。
我正在尝试配置 IBM WebSphere Liberty 服务器 (16.0.0.3),以便我们的一个应用程序在那里运行,但是,除了明显的不可靠性之外,该服务器需要很长时间才能启动。 这在日志文件中很清楚:
[17-11-2016 15:54:16:231 GMT] 0000001c com.ibm.ws.webcontainer.security.ServletStartedListener I CWWKS9122I: For URL /* in application com.ibm.ws.jmx.connector.server.rest, the following HTTP methods are uncovered, and accessible: HEAD OPTIONS TRACE
[17-11-2016 15:56:18:349 GMT] 0000001b org.jboss.weld.Event I WELD-000411: Observer method [BackedAnnotatedMethod] public org.omnifaces.VetoAnnotatedTypeExtension.processAnnotatedType(@Observes ProcessAnnotatedType<T>) receives events for all annotated types. Consider restricting events using @WithAnnotations or a generic type with bounds.
[17-11-2016 15:56:19:798 GMT] 0000001b com.ibm.ws.ejbcontainer.osgi.internal.EJBRuntimeImpl I CNTR4000I: The ALLPLEXEJBeans-v2.jar EJB module in the ECC application is starting.
如您所见,前两行间隔了 2 分钟多,这很荒谬,尤其是考虑到它是一个非常小的应用程序。
在放弃 Liberty 配置文件之前,我可以做些什么来加快速度?
CDI 是一种非常有用的横切技术,但作为其中的一部分,CDI 引擎可能需要扫描应用程序中的每个 class 以查看什么是 CDI bean 和什么不是 CDI bean 以及解释其他注释等
通过限制 CDI 扫描来缩短 Liberty 启动时间
两种方法:
1。如果您希望在某些应用程序中使用 CDI,但不希望在其他应用程序中使用 CDI
告诉 CDI 只扫描包含 beans.xml 文件的应用程序。通过将此包含在您的服务器配置中来禁用 Liberty 中的 "implicit" bean 存档 (server.xml)
<cdi12 enableImplicitBeanArchives="false"/>
有关更多讨论,请参阅 here。
2。如果您根本不想使用 CDI,请从服务器配置中删除 CDI 功能。
正如 Brett Kail 指出的那样,如果这是服务器 and/or 中唯一的应用程序,您根本不需要或不需要 CDI,您可以从 <featureManager>
。正如他还指出的那样,请注意 webProfile-7.0
或 javaee-7.0
等功能,其中包括 cdi-1.2
功能。