第 2 章 启动和停止 JBoss EAP

2.1. 启动 JBoss EAP

JBoss EAP 有两种操作模式:以一个独立服务器运行或位于一个受管域中。它被以下平台支持:Red Hat Enterprise Linux、Windows Server、Oracle Solaris 和 Hewlett-Packard HP-UX。

启动 JBoss EAP 的命令取决于底层的平台和期望的操作模式。

将 JBoss EAP 作为独立服务器启动

$ EAP_HOME/bin/standalone.sh
注意

对于 Windows 服务器,请使用 EAP_HOME\bin\standalone.bat 脚本。

这个启动脚本使用 EAP_HOME/bin/standalone.conf 文件(对于 Windows 服务器,使用 standalone.conf.bat)来设置某些默认首选项,如 JVM 选项。您可以在这个文件里自定义设置。

JBoss EAP 默认使用 standalone.xml 配置文件,但也可以用其他配置启动。关于可用的独立服务器配置文件及如何使用它们的细节,请参考独立服务器的配置文件一节。

如需获得启动脚本参数的完整列表,请使用 --help 参数或参阅服务器运行时参数一节。

在受管域里启动 JBoss EAP

域控制器必须在域中所有服务器组中的服务器之前启动。使用这个脚本首先启动域控制器,然后启动每个关联的主机控制器。

$ EAP_HOME/bin/domain.sh
注意

对于 Windows 服务器,请使用 EAP_HOME\bin\domain.bat 脚本。

这个启动脚本使用 EAP_HOME/bin/domain.conf 文件(对于 Windows 服务器,使用 domain.conf.bat)来设置某些默认首选项,如 JVM 选项。您可以在这个文件里自定义设置。

JBoss EAP 默认使用 host.xml 主机配置文件,但也可以用其他配置启动。关于可用的受管域配置文件及如何使用它们的细节,请参考受管域配置文件一节。

当设立受管域时,也需要将其他参数传入启动脚本。关于可用启动脚本参数和用途的完整列表,请使用 --help 参数或参阅服务器运行时参数一节。

2.2. 停止 JBoss EAP

停止 JBoss EAP 的方式取决于您启动它的方式。

停止交互式的 JBoss EAP 实例

在启动 JBoss EAP 的终端窗口中按 Ctrl+C

停止后台运行的 JBoss EAP 实例

使用管理 CLI 连接至运行实例并关闭服务器。

  1. 启动管理 CLI。

    $ EAP_HOME/bin/jboss-cli.sh --connect
  2. 执行 shutdown 命令。

    shutdown
注意

当运行在受管域时,您必须用 shutdown 命令和 --host 参数指定要关闭的主机名。

2.3. 以 Admin-Only 模式运行 JBoss EAP

JBoss EAP 可以用 admin-only 模式启动。这可以让 JBoss EAP 运行并接受管理请求,而无需启动其他运行时服务或接受最终用户请求。Admin-only 模式对于独立服务器或受管域都可用。在受管域里,如果域控制器以 Admin-only 模式启动,它不会从从主机控制器接受转入连接。

要以 Admin-only 模式启动 JBoss EAP 实例,请使用 --admin-only 运行时参数。

注意

显示的管理 CLI 命令假定您运行的是 JBoss EAP 独立服务器。关于在 JBoss EAP 受管域使用管理 CLI 的更多细节,请参考 JBoss EAP Management CLI Guide

以 Admin-Only 模式启动 JBoss EAP

$ EAP_HOME/bin/standalone.sh --admin-only

检查 JBoss EAP 是否以 Admin-Only 模式运行

检查 JBoss EAP 是否以 Admin-Only 模式运行:

注意

显示的管理 CLI 命令假定您运行的是 JBoss EAP 独立服务器。关于在 JBoss EAP 受管域使用管理 CLI 的更多细节,请参考 JBoss EAP Management CLI Guide

:read-attribute(name=running-mode)

如果 JBoss EAP 是以 Admin-Only 模式运行,结果将是:

{
  "outcome" => "success",
  "result" => "ADMIN_ONLY"
}

否则,结果将是:

{
  "outcome" => "success",
  "result" => "NORMAL"
}

从管理 CLI 里以其他模式重启

除了用不同的运行时参数停止和启动 JBoss EAP 实例之外,管理 CLI 也可以用于重载服务器并以不同的模式启动。要以 admin-only 模式重载 JBoss EAP 实例:

注意

显示的管理 CLI 命令假定您运行的是 JBoss EAP 独立服务器。关于在 JBoss EAP 受管域使用管理 CLI 的更多细节,请参考 JBoss EAP Management CLI Guide

reload --admin-only=true

要重载 JBoss EAP 以普通模式启动:

reload --admin-only=false
注意

除了当前的运行模式,您也可以用下列命令检查初始的运行模式:/core-service=server-environment:read-attribute(name=initial-running-mode)。这个命令和 :read-attribute(name=running-mode) 不同,它显示了 JBoss EAP 启动时的运行模式而不是当前的运行模式。

2.4. 优雅地挂起和关闭 JBoss EAP

JBoss EAP 可以优雅地挂起或关闭。这允许活动的请求正常完成而不会接受任何新的请求。超时时间指定了挂起或关闭操作等待活动请求完成的时间。当服务器被挂起时,管理请求仍在被处理。

优雅关闭是在服务器范围里进行协调的,多数集中在请求到达服务器的入口点。下面的子系统支持优雅关闭:

Undertow
undertow 子系统将等待所有请求完成。
mod_cluster
modcluster 子系统将通知负载平衡器服务器在 PRE_SUSPEND 阶段挂起。
EJB
ejb3 子系统将等待所有的远程 EJB 请求和 MDB 消息递送完成。MDB 递送停止在 PRE_SUSPEND 阶段。EJB 定时器被挂起,漏掉的定时器在服务器恢复时被激活。
EE Concurrency

服务器将等待所有活动任务完成。所有队列中的任务将被忽略。目前,因为 EE Concurrency 不具有持久性,所以被忽略的队列中的任务将会丢失。

当服务器处于挂起状态时,已调度的任务会在为它们调度的时间点上继续执行,但会抛出一个 java.lang.IllegalStateException 异常。一旦服务器被重新恢复运行,已调度的任务会继续正常运行,在多数情况下,不需要对它们重新进行调度。

Batch
服务器将在超时时间内停止所有运行的任务并推迟所有预定的任务。
注意

优雅关闭目前不会拒绝转入的远程分布式事务或新转入的 JMS 消息。inflight 活动调度的 EE 批处理任务和 EE 并发任务当前允许继续进行。然而,如果当前提交的 EE 并发任务已超过超时窗口,则会在执行时报错。

request-controller 子系统被用来对请求进行跟踪。如果没有这个子系统,挂起和重新恢复的功能将会受到限制,服务器在进行挂起或关机前将不会等待请求完成。但是,如果您不需要这些功能,则可以不使用 request-controller 子系统,这可以对性能有一点提高。

2.4.1. 挂起服务器

JBoss EAP 7 引入了 suspend 模式,它优雅地挂起服务器操作。这允许所有活动请求正常地完成,但不会接受新的请求。一旦服务器被挂起,它可以关闭、返回运行状态或保持在挂起状态以进行维护。

注意

管理接口不受挂起的服务器影响。

服务器可以用管理控制台或 CLI 挂起或恢复运行。

检查服务器的挂起状态

服务器的挂起状态可以用下列管理 CLI 命令查看。结果将是 RUNNINGPRE_SUSPENDSUSPENDINGSUSPENDED 中的一个。

  • 检查独立服务器的挂起状态

    :read-attribute(name=suspend-state)
  • 查看受管域里服务器的挂起状态。

    /host=master/server=server-one:read-attribute(name=suspend-state)
挂起

使用下列管理 CLI 命令来挂起服务器,指定服务器等待活动请求完成的超时时间(秒)。其默认值是 0,表示将立即挂起。-1 将让服务器无限期地等待直至所有活动请求完成为止。

以下示例中,在挂起前最多等待 60 秒让请求完成。

  • 挂起独立服务器。

    :suspend(timeout=60)
  • 挂起受管域里的所有服务器。

    :suspend-servers(timeout=60)
  • 挂起受管域里的单个服务器。

    /host=master/server-config=server-one:suspend(timeout=60)
  • 挂起服务器组里的所有服务器。

    /server-group=main-server-group:suspend-servers(timeout=60)
恢复

在相应级别(服务器、服务器组、整个域)中执行 resume 命令,服务器可以返回正常的运行状态来接受新的请求。例如:

:resume

2.4.2. 优雅地关闭服务器

在停止服务器时如果指定了合适的超时时间,服务器将被优雅地关闭。一旦执行了这个命令,服务器将被挂起并等待指定的一段时间让所有请求在服务器关闭前完成。

使用下列管理 CLI 命令来关闭服务器,指定服务器等待活动请求完成的超时时间(秒)。其默认值是 0,表示将立即关闭。-1 将让服务器在关闭前将无限期地等待直至所有活动请求完成为止。

以下示例中,服务器在关闭之前最多等待 60 秒让请求完成。

  • 优雅地关闭独立服务器。

    :shutdown(timeout=60)
  • 优雅地停止受管域里的所有服务器。

    :stop-servers(timeout=60)
  • 优雅地停止受管域里的单个服务器。

    /host=master/server-config=server-one:stop(timeout=60)
  • 优雅地停止服务器组里的所有服务器。

    /server-group=main-server-group:stop-servers(timeout=60)

2.5. 启动和停止 JBoss EAP(RPM 安装方式)

对于 RPM 安装和 ZIP 安装,启动和停止 JBoss EAP 是不一样的。

2.5.1. 启动 JBoss EAP(RPM 安装方式)

启动 JBoss EAP 的 RPM 安装的命令取决于您要启动的模式(独立服务器或受管域),以及您运行的 Red Hat Enterprise Linux 的版本。

将 JBoss EAP 作为独立服务器启动(RPM 安装方式)
  • 对于 Red Hat Enterprise Linux 6:

    $ service eap7-standalone start
  • 对于 Red Hat Enterprise Linux 7:

    $ systemctl start eap7-standalone.service

在默认情况下,这将用 standalone.xml 配置文件启动 JBoss EAP。您可以通过RPM 服务配置文件里的属性用不同的独立服务器配置文件启动 JBoss EAP。详情请参考下面的配置 RPM 服务属性

在受管域里启动 JBoss EAP(RPM 安装方式)
  • 对于 Red Hat Enterprise Linux 6:

    $ service eap7-domain start
  • 对于 Red Hat Enterprise Linux 7:

    $ systemctl start eap7-domain.service

在默认情况下,这将用 host.xml 配置文件启动 JBoss EAP。您可以通过RPM 服务配置文件里的属性用不同的受管域配置文件启动 JBoss EAP。详情请参考下面的配置 RPM 服务属性

配置 RPM 服务属性

本节向您展示如何配置 RPM 服务属性和其他的启动选项。请注意,在进行修改之前,我们建议您先备份配置文件。

关于 RPM 安装的所有可用的启动选项,请参考 RPM 服务配置属性章节。

  • 指定服务器配置文件。

    在启动独立服务器时,默认是使用 standalone.xml 文件。当运行在受管域里时,默认使用 host.xml 文件。您可以通过指定合适的 RPM 配置文件里的 WILDFLY_SERVER_CONFIG 属性用不同的配置文件启动 JBoss EAP,例如 eap7-standalone.conf

    WILDFLY_SERVER_CONFIG=standalone-full.xml
  • 绑定到专门的 IP 地址。

    在默认的情况下,JBoss EAP RPM 安装绑定 0.0.0.0。您可以通过合适的 RPM 配置文件里的 WILDFLY_BIND 属性绑定 JBoss EAP 到专门的 IP 地址,例如 eap7-standalone.conf

    WILDFLY_BIND=192.168.0.1
    注意

    如果您想将管理接口绑定到专门的 IP 地址,可以在 JBoss EAP 的启动配置文件里进行配置,如下所示。

  • 设置 JVM 选项或 Java 属性。

    您可以编辑启动配置文件,指定 JVM 选项或 Java 属性来传入 JBoss EAP 启动脚本。这个文件是 EAP_HOME/bin/standalone.conf(独立服务器)或 EAP_HOME/bin/domain.conf(受管域)。下面的例子配置了堆(heap)大小,并将 JBoss EAP 管理接口绑定到专门的 IP 地址。

    JAVA_OPTS="$JAVA_OPTS -Xms2048m -Xmx2048m"
    JAVA_OPTS="$JAVA_OPTS -Djboss.bind.address.management=192.168.0.1"
    注意

    如有需要,您必须用 WILDFLY_BIND 属性而不是这里的 jboss.bind.address 标准属性来配置 JBoss EAP 的绑定地址。

注意

如果某个属性在 RPM 服务配置文件(如 /etc/sysconfig/eap7-standalone)和 JBoss EAP 启动配置文件(如 EAP_HOME/bin/standalone.conf)都有相同的名称,那么 JBoss EAP 启动配置文件里的值将优先使用。JAVA_HOME 就是这类属性中的一个。

2.5.2. 停止 JBoss EAP(RPM 安装方式)

停止 JBoss EAP 的 RPM 安装的命令取决于您启动的操作模式(独立服务器或受管域),以及您运行的 Red Hat Enterprise Linux 的版本。

停止作为独立服务器的 JBoss EAP (RPM 安装方式)
  • 对于 Red Hat Enterprise Linux 6:

    $ service eap7-standalone stop
  • 对于 Red Hat Enterprise Linux 7:

    $ systemctl stop eap7-standalone.service
停止受管域里的 JBoss EAP(RPM 安装方式)
  • 对于 Red Hat Enterprise Linux 6:

    $ service eap7-domain stop
  • 对于 Red Hat Enterprise Linux 7:

    $ systemctl stop eap7-domain.service

关于 RPM 安装的所有可用的启动选项,请参考 RPM 服务配置文件章节。

2.6. PowerShell 脚本

PowerShell 目前只是技术预览且不受支持。PowerShell 脚本的目的是让版本 2 和更高版本能正确运行,因为 Windows Server 2008 R2 Enterprisex86_64 和 Windows Server 2012 R2 Standard x86_64 都支持 JBoss EAP。

  • 在默认情况下,Windows Server 2008 R2 Enterprisex86_64 使用 PowerShell 2。更高的版本也可以被安装。
  • 在默认情况下,Windows Server 2012 R2 Standard x86_64 使用 PowerShell 4。更高的版本也可以被安装。

PowerShell 脚本的路径是 'EAP_HOME/bin',当您希望在 Windows 上使用现代的脚本语言时,您可以使用这些脚本。

注意

脚本的参数应该用引号括起来。例如:

PS C:\Users\Administrator\7.0.0.ER2\jboss-eap-7.0\bin> .\standalone.ps1 "-c=standalone-full.xml"