${build.shortName} 可以被挂起或安全关闭。这使得当前的请求可以正常完成,而不再接受任何新的请求。超时值指定了挂起或关机操作需要等待多长时间以使当前的请求可以完成。当服务器被挂起,管理请求仍在处理。

安全关机操作是在一个服务器范围内进行协调的,主要集中在请求进入服务器的入口点。以下子系统支持正常关机:

Undertow
undertow 子系统会等待所有请求完成。
Modcluster
modcluster 子系统会通知负载均衡器服务器正在被挂起,处于 PRE_SUSPEND 阶段。
EJB
ejb3 子系统将等待所有远程EJB请求和MDB消息传递来完成。发送到 MDB 的操作会在 PRE_SUSPEND 阶段停止。EJB 计时器被挂起,错过的计时器会在服务器恢复操作时被激活。
EE Concurrency
服务器将等待所有活跃的任务完成。所有排队的任务将被跳过。当前,因为 EE Concurrency 不具有持久性,所以被跳过的队列中的任务将会丢失。
当服务器处于挂起状态时,已被调度的任务会在计划的时间执行,但会产生一个 java.lang.IllegalStateException。一旦服务器恢复,调度的任务将继续正常执行。在大多数情况下,任务不需要再被重新调度。
Batch
服务器将在超时时间内停止所有运行的任务,并推迟所有预定的任务。
正常关机目前不会拒绝入站的远程分布式交易,或新的入站JMS消息。由 inflight 的操作所调度的 EE 批处理任务和 EE concurrency 任务当前允许执行。但是,已提交的 EE concurrency 任务如果已超过超时窗口,则在执行时出错。

请求由 request-controller 子系统进行跟踪。如果没有这个子系统,暂停和恢复能力是有限的。在挂起或关机前,服务器将不会等待请求完成。但是,如果您不需要这个功能,则可以删除 request-controller 子系统,这可能使性能有一定提高。