在 z/OS 上管理 Liberty
在 z/OS® 平台上,可以使用 MVS™ 操作员命令来启动、停止或修改 Liberty。
开始之前
请确保已按在 Liberty for z/OS 上启用 z/OS 授权服务中所述设置以下安全概要文件。
- 服务器进程和 Angel 进程的 STARTED 概要文件
- 允许访问授权 z/OS 服务的 SERVER 概要文件
![[16.0.0.4 and later]](../ng_v16004plus.gif)
每个 LPAR 都有一个缺省 Angel 进程。如果 Angel 进程在 V16.0.0.4 或更高版本启动,那么可以为其指定名称。此 Angel 进程可变为此 LPAR 上的额外的 Angel 进程。有关 Angle 进程和 LPAR 的更多信息,请参阅指定的 Angel 进程。尽可能确保缺省 Angel 进程正在 LPAR 上以 Liberty 的最新安装级别运行。如果 Liberty 服务器实例连接到正在先前服务级别运行的 Angel 进程,那么服务器的一些功能部件可能不可用。
关于此任务
本主题描述如何使用 MVS 控制台来启动、修改和停止 Liberty。您也可以从 shell 启动和停止服务器,或使用 shell 将服务器作为启动任务启动,请参阅从命令行启动和停止服务器。
启动任务是为响应操作员 START 命令立即运行的 JCL。wlp/templates/zos/procs 目录中提供了两个 JCL 过程模板 (PROC)。一个模板适用于服务器进程,另一个模板适用于 Angel 进程:
- 用于 Liberty 的 bbgzsrv。
- 用于 Angel 进程的 bbgzangl,控制对 z/OS 平台上系统授权服务的访问权时,这是必需项。
注: 应用产品更新时,可能会更新 /templates 目录中的文件。
示例部分提供有关两个 PROC 模板的进一步信息。操作员 STOP 命令的目标是作业或启动任务。
定制 JCL 过程模板后,必须将这些模板放置到系统过程库并置中。过程成员的名称会成为 START 命令的参数。
过程
示例
以下示例显示了服务器进程的过程模板 (bbgzsrv)。此 PROC 在 z/OS proclib 并置内的数据集中。
//BBGZSRV PROC PARMS='defaultServer'
//*------------------------------------------------------------------
//* INSTDIR - the path to the WebSphere Liberty install.
//* This path is used to find the product code and is
//* equivalent to the WLP_INSTALL_DIR environment variable
//* in the Unix shell.
//* USERDIR - the path to the WebSphere Liberty user area.
//* This path is used to store shared and server specific
//* configuration information and is equivalent to the
//* WLP_USER_DIR environment variable in the Unix shell.
//*------------------------------------------------------------------
// SET INSTDIR='/u/MSTONE1/wlp'
// SET USERDIR='/u/MSTONE1/wlp/usr'
//*------------------------------------------------------------------
//* Start the Liberty server
//*
//* WLPUDIR - PATH DD that points to Liberty's "user"
//* directory. If the DD is not allocated, the user
//* directory location defaults to the wlp/usr directory
//* in the install tree.
//* STDOUT - Destination for stdout (System.out)
//* STDERR - Destination for stderr (System.err)
//* MSGLOG - Destination for messages.log (optional)
//* STDENV - Initial Unix environment - read by the system. The
//* installation default and server specific server
//* environment files will be merged into this environment
//* before the JVM is launched.
//*------------------------------------------------------------------
//STEP1 EXEC PGM=BPXBATSL,REGION=0M,
// PARM='PGM &INSTDIR./lib/native/zos/s390x/bbgzsrv &PARMS'
//WLPUDIR DD PATH='&USERDIR.'
//STDOUT DD SYSOUT=*
//STDERR DD SYSOUT=*
//*MSGLOG DD SYSOUT=*
//*STDENV DD PATH='/etc/system.env',PATHOPTS=(ORDONLY)
//*STDOUT DD PATH='&ROOT/std.out',
//* PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
//* PATHMODE=SIRWXU
//*STDERR DD PATH='&ROOT/std.err',
//* PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
//* PATHMODE=SIRWXU
注:
- 启动程序将 STDENV DD 用作初始环境,但此 DD 是可选的。在 PROC 中定义进程的初始环境。它可以指向 Language Environment® 支持的任何类型的数据集,但是格式必须与期望的内容兼容。例如,扩展二进制编码的十进制交换码 (EBCDIC),简单的“键 = 值”,没有扩展。
- 允许指向现有目录(不是文件)的 PATH DD。如果打开该 DD,那么返回的 FILE 流对 fldata 有效,因此可以使用与该 DD 相关联的 HFS 路径。PROC 模板定义用来表示 WLP_USER_DIR 等价项的 WLPUDIR PATH DD。
- WLP_USER_DIR 由下列逻辑确定:
- 如果定义了 WLPUDIR DD,那么会将相关联的路径用作 WLP_USER_DIR。
- 如果未定义 WLPUDIR,但是在初始环境中(通过 STDENV)设置了 WLP_USER_DIR,那么会使用 WLP_USER_DIR。
- 如果未定义 WLPUDIR,并且在初始环境中未设置 WLP_USER_DIR,那么会使用缺省值 $WLP_INSTALL_DIR/usr。
- 环境由下列逻辑确定:
- 如果您定义 STDENV DD,那么 Language Environment 会读取条目作为初始环境。
- 如果 $WLP_INSTALL_DIR/etc/server.env 存在且可读,那么将读取其“键=值”内容并设置到环境中。文件可以是 ASCII 或 EBCDIC。注释以井号 (#) 开头,直到行末。包含空格的值可括在双引号中。在此文件中指定的任何环境条目都将覆盖初始环境中的条目。
- 如果 $WLP_USER_DIR/servers/{serverName}/server.env 存在并可读,那么将读取其“键=值”内容并设置到环境中。此文件也可以是 ASCII 或 EBCDIC,并且支持注释。此处指定的任何条目都会覆盖初始环境和 etc/server.env 中的条目。
- 不管用户指定的环境如何,都会显式设置以下条目: _BPXK_WLM_PROPAGATE=NO, JAVA_THREAD_MODEL=HEAVY 和 JAVA_PROPAGATE=NO。如果未设置 _EDC_PTHREAD_YIELD,那么它设置为 -2。
- 设置环境后,JAVA_HOME 由以下逻辑确定:
- 如果在环境中设置了 JAVA_HOME,那么该环境的位置将用作 JAVA_HOME。
- 如果在环境中未设置 JAVA_HOME,但是存在 $WLP_INSTALL_DIR/../java64,那么会将 $WLP_INSTALL_DIR/../java64 用作 JAVA_HOME。
- 如果在环境中未设置 JAVA_HOME,并且不存在 $WLP_INSTALL_DIR/../java64,那么会将 $WLP_INSTALL_DIR/../java 用作 JAVA_HOME。
- 确定 JAVA_HOME 后,JVM 命令行选项由以下逻辑确定:
- 如果 $WLP_USER_DIR/servers/{serverName}/jvm.options 存在并可读,那么将读取其内容。文件可以是 ASCII 或 EBCDIC,并且文件的每一行都必须是单一 Java 命令行参数。注释以井号 (#) 开头,直到行末。
- 如果 $WLP_USER_DIR/servers/{serverName}/jvm.options 不存在,但是 $WLP_INSTALL_DIR/etc/jvm.options 存在并且可读,那么会读取其内容。文件可以是 ASCII 或 EBCDIC,并且每一行都必须具有一个 Java 命令行参数。支持注释。
- 无论任何 jvm.options 的内容如何,-Dfile.encoding=iso8859-1、-javaagent:$WLP_INSTALL_DIR/lib/bootstrap-agent.jar 和 -classpath $WLP_INSTALL_DIR/lib/server-launcher.jar 都在命令行中。
- 如果要将参数传递至 JVM,请定义 JAVAOPTS DD 语句以便从此 DD 读取 Java™ 命令行参数。以下示例显示了样本输入文件:
-Xmx512m -Xms256m -Daaa.bbb.ccc=something.forsomeone
- 当您通过 z/OS 过程启动 Liberty 服务器时,可以定制服务器进程所使用的 umask。要定制 umask,请采用下列其中一种方式来定义 WLP_SKIP_UMASK 和 _BPX_BATCH_UMASK 环境变量:
- 指定 WLP_SKIP_UMASK 环境变量。可以在 server.env 文件中指定此变量,或者,如果您使用 z/OS 过程来启动服务器,那么可以在 STDENDV DD 条目中指定该变量。在 z/OS 过程中,在 STDENV DD 条目中指定 _BPX_BATCH_UMASK 变量。您无法在 server.env 文件中指定 _BPX_BATCH_UMASK 变量。以下示例说明了样本 umask 值定制:
//STDENV DD * _BPX_BATCH_UMASK=XXXX WLP_SKIP_UMASK=TRUE /*
- 在 EBCDIC 编码的 z/OS UNIX 文件中同时指定 _BPX_BATCH_UMASK=XXXX 和 WLP_SKIP_UMASK=TRUE。在 z/OS 过程中的 STDENV DD 条目中定义路径。以下示例说明了样本 umask 值定制:
//STDENV DD PATH='u/path/to/env/ebcdic/file',PATHOPTS=ORDONLY
- 指定 WLP_SKIP_UMASK 环境变量。可以在 server.env 文件中指定此变量,或者,如果您使用 z/OS 过程来启动服务器,那么可以在 STDENDV DD 条目中指定该变量。在 z/OS 过程中,在 STDENV DD 条目中指定 _BPX_BATCH_UMASK 变量。您无法在 server.env 文件中指定 _BPX_BATCH_UMASK 变量。以下示例说明了样本 umask 值定制:
以下示例显示通过对已配置“defaultServer”使用样本 bbgzsrv 过程来启动 Liberty 的命令:
start bbgzsrv,parms='defaultServer'
以下示例显示了 Angel 进程的过程模板 (bbgzangl):![[16.0.0.4 and later]](../ng_v16004plus.gif)
![[16.0.0.4 and later]](../ng_v16004plus.gif)
//BBGZANGL PROC PARMS='',COLD=N,NAME=''
//*------------------------------------------------------------------
// SET ROOT='/u/MSTONE1/wlp'
//*------------------------------------------------------------------
//* Start the Liberty angel process
//*------------------------------------------------------------------
//STEP1 EXEC PGM=BPXBATA2,REGION=0M,TIME=NOLIMIT,
// PARM='PGM &ROOT./lib/native/zos/s390x/bbgzangl COLD=&COLD NAME=X
// &NAME &PARMS'
//STDOUT DD SYSOUT=*
//STDERR DD SYSOUT=*