第 8 章 Jsvc

8.1. 介绍

8.1.1. 关于 Jsvc

Jsvc 是一系列允许 Java 应用程序作为后台服务运行在 Unix 或类 Unix 平台里的库和应用程序。它允许应用程序作为特权用户执行操作,然后将其身份切换到非特权用户。
Jsvc 使用三个进程:launcher、controller 和 controlled 进程。controlled 进程也是主 Java 线程。如果 JVM 崩溃,controller 进程将在 60 秒内重启它。Jsvc 是 JBoss EAP 的守护进程,它只能由特权用户启动。

注意

Jsvc 仅用在 Red Hat Enterprise Linux、Solaris 和 HP-UX 里。关于 Microsoft Windows 上的类似功能,请使用 Red Hat 客户门户里 Native Utilities for Windows Serverprunsrv.exe

8.1.2. 用 Jsvc 启动和停止 JBoss EAP

根据操作模式的不同,用 Jsvc 启动和停止 JBoss EAP 的说明也会不同。请注意如果 JBoss EAP 运行在域模式里,Jsvc 只会负责域控制器的处理过程。不管您使用哪个命令通过 Jsvc 启动 JBoss EAP,它都必须用特权用户来运行。

必须具备的条件

  • 如果 JBoss EAP 6 是用 ZIP 方式安装的:
    • 从 Red Hat 客户门户下载并安装 Native Utilities 软件包。请参考《安装指南》里的『安装 Native 组件和 Native 工具(ZIP/安装程序)』章节。
    • 创建将运行JBoss EAP 6 实例的用户帐号。用来启动和停止服务器的帐号必须拥有读取和写入安装 JBoss EAP 的目录的权限。
  • 如果 JBoss EAP 是用 RPM 模式安装的,请安装 apache-commons-daemon-jsvc-eap6 软件包。请参考《安装指南》里的『安装 Native 组件和 Native 工具(RPM 安装)』章节。
下面的命令是在独立或域模式下启动和停止 JBoss EAP。请注意,根据安装 Jsvc 的方法的不同,文件的位置也会不同。请用下表来确定使用哪些文件来解析命令里的变量。
独立模式

下面的说明是关于在独立模式下启动和停止 JBoss EAP 的。

表 8.1. ZIP 安装模式下的 Jsvc 文件位置 - 独立模式

参考文件说明 文件位置
EAP-HOME
${eap-installation-location}/jboss-eap-${version}
JSVC-BIN
EAP_HOME/modules/system/layers/base/native/sbin/jsvc
JSVC-JAR
EAP_HOME/modules/system/layers/base/native/sbin/commons-daemon.jar
CONF-DIR
EAP_HOME/standalone/configuration
LOG-DIR
EAP_HOME/standalone/log

表 8.2. RPM 安装模式下的 Jsvc 文件位置 - 独立模式

参考文件说明 文件位置
EAP-HOME
/usr/share/jbossas
JSVC-BIN
/usr/bin/jsvc-eap6/jsvc
JSVC-JAR
EAP_HOME/modules/system/layers/base/native/sbin/commons-daemon.jar
CONF-DIR
/etc/jbossas/standalone
LOG-DIR
/var/log/jbossas/standalone

以独立模式启动 JBoss EAP

  • JSVC_BIN \
     -outfile LOG_DIR/jsvc.out.log   \
     -errfile LOG_DIR/jsvc.err.log   \
     -pidfile LOG_DIR/jsvc.pid  \
     -user jboss \
     -D[Standalone] -XX:+UseCompressedOops -Xms1303m \
     -Xmx1303m -XX:MaxPermSize=256m \
     -Djava.net.preferIPv4Stack=true 
     -Djboss.modules.system.pkgs=org.jboss.byteman \
     -Djava.awt.headless=true \
     -Dorg.jboss.boot.log.file=LOG_DIR/server.log \
     -Dlogging.configuration=file:CONF_DIR/logging.properties \
     -Djboss.modules.policy-permissions \
     -cp EAP_HOME/jboss-modules.jar:JSVC_JAR \
     -Djboss.home.dir=EAP_HOME \
     -Djboss.server.base.dir=EAP_HOME/standalone   \
     @org.jboss.modules.Main -start-method main \
     -mp EAP_HOME/modules \
     -jaxpmodule javax.xml.jaxp-provider \
     org.jboss.as.standalone

停止以独立模式运行的 JBoss EAP

  • JSVC_BIN \
     -stop \
     -outfile LOG_DIR/jsvc.out.log   \
     -errfile LOG_DIR/jsvc.err.log   \
     -pidfile LOG_DIR/jsvc.pid  \
     -user jboss \
     -D[Standalone] -XX:+UseCompressedOops -Xms1303m \
     -Xmx1303m -XX:MaxPermSize=256m \
     -Djava.net.preferIPv4Stack=true \
     -Djboss.modules.system.pkgs=org.jboss.byteman \
     -Djava.awt.headless=true \
     -Dorg.jboss.boot.log.file=LOG_DIR/server.log \
     -Dlogging.configuration=file:CONF_DIR/logging.properties \
     -Djboss.modules.policy-permissions \
     -cp EAP_HOME/jboss-modules.jar:JSVC_JAR \
     -Djboss.home.dir=EAP_HOME \
     -Djboss.server.base.dir=EAP_HOME/standalone   \
     @org.jboss.modules.Main -start-method main \
     -mp EAP_HOME/modules \
     -jaxpmodule javax.xml.jaxp-provider \
     org.jboss.as.standalone
域模式

下面的说明是关于在域模式下启动和停止 JBoss EAP 的。请注意对于域模式,您必须用 Java 主目录替换 JAVA_HOME 变量。

表 8.3. ZIP 安装模式下的 Jsvc 文件位置 - 域模式

参考文件说明 文件位置
EAP-HOME
${eap-installation-location}/jboss-eap-${version}
JSVC-BIN
EAP_HOME/modules/system/layers/base/native/sbin/jsvc
JSVC-JAR
EAP_HOME/modules/system/layers/base/native/sbin/commons-daemon.jar
CONF-DIR
EAP_HOME/domain/configuration
LOG-DIR
EAP_HOME/domain/log

表 8.4. RPM 安装模式下的 Jsvc 文件位置 - 域模式

参考文件说明 文件位置
EAP-HOME
/usr/share/jbossas
JSVC-BIN
/usr/bin/jsvc-eap6/jsvc
JSVC-JAR
EAP_HOME/modules/system/layers/base/native/sbin/commons-daemon.jar
CONF-DIR
/etc/jbossas/domain
LOG-DIR
/var/log/jbossas/domain

以域模式启动 JBoss EAP

  • JSVC_BIN \
     -outfile LOG_DIR/jsvc.out.log   \
     -errfile LOG_DIR/jsvc.err.log   \
     -pidfile LOG_DIR/jsvc.pid  \
     -user jboss \
     -nodetach -D"[Process Controller]" -server -Xms64m \
     -Xmx512m -XX:MaxPermSize=256m \
     -Djava.net.preferIPv4Stack=true  \
     -Djboss.modules.system.pkgs=org.jboss.byteman \
     -Djava.awt.headless=true  \
     -Dorg.jboss.boot.log.file=LOG_DIR/process-controller.log \
     -Dlogging.configuration=file:CONF_DIR/logging.properties \
     -Djboss.modules.policy-permissions \
     -cp "EAP_HOME/jboss-modules.jar:JSVC_JAR" \
     org.apache.commons.daemon.support.DaemonWrapper \
     -start org.jboss.modules.Main -start-method main \
     -mp EAP_HOME/modules org.jboss.as.process-controller \
     -jboss-home EAP_HOME -jvm $JAVA_HOME/bin/java \
     -mp EAP_HOME/modules -- \
     -Dorg.jboss.boot.log.file=LOG_DIR/host-controller.log \
     -Dlogging.configuration=file:CONF_DIR/logging.properties \
     -Djboss.modules.policy-permissions \
     -server -Xms64m -Xmx512m -XX:MaxPermSize=256m \
     -Djava.net.preferIPv4Stack=true \
     -Djboss.modules.system.pkgs=org.jboss.byteman \
     -Djava.awt.headless=true -- -default-jvm $JAVA_HOME/bin/java

停止以域模式运行的 JBoss EAP

  • JSVC_BIN \
     -stop \
     -outfile LOG_DIR/jsvc.out.log   \
     -errfile LOG_DIR/jsvc.err.log   \
     -pidfile LOG_DIR/jsvc.pid  \
     -user jboss \
     -nodetach -D"[Process Controller]" -server -Xms64m \
     -Xmx512m -XX:MaxPermSize=256m \
     -Djava.net.preferIPv4Stack=true  \
     -Djboss.modules.system.pkgs=org.jboss.byteman \
     -Djava.awt.headless=true  \
     -Dorg.jboss.boot.log.file=LOG_DIR/process-controller.log \
     -Dlogging.configuration=file:CONF_DIR/logging.properties \
     -Djboss.modules.policy-permissions \
     -cp "EAP_HOME/jboss-modules.jar:JSVC_JAR" \
     org.apache.commons.daemon.support.DaemonWrapper \
     -start org.jboss.modules.Main -start-method main \
     -mp EAP_HOME/modules org.jboss.as.process-controller \
     -jboss-home EAP_HOME -jvm $JAVA_HOME/bin/java \
     -mp EAP_HOME/modules -- \
     -Dorg.jboss.boot.log.file=LOG_DIR/host-controller.log \
     -Dlogging.configuration=file:CONF_DIR/logging.properties \
     -Djboss.modules.policy-permissions \
     -server -Xms64m -Xmx512m -XX:MaxPermSize=256m \
     -Djava.net.preferIPv4Stack=true \
     -Djboss.modules.system.pkgs=org.jboss.byteman \
     -Djava.awt.headless=true -- -default-jvm $JAVA_HOME/bin/java

注意

如果 JBoss EAP 6 异常终止,如 JMV 崩溃,Jsvc 将自动重启它。如果 JBoss EAP 6 是正常终止的,Jsvc 也会随之停止。