如果域或节点代理被意外停止(例如,您需要重新启动计算机),您可以将系统配置为自动重新启动域或节点代理。
本附录包括以下主题:
Solaris 10 用户可以使用命令 asadmin create-service 创建一个用于重新启动节点代理或域管理服务器 (Domain Administration Server, DAS) 的服务。所创建的服务使用 Solaris 服务管理工具 (Service Management Facility, SMF)。
服务所启动的进程取决于该服务要重新启动 DAS 还是节点代理。
如果服务要重新启动 DAS,则进程是 asadmin start-domain。
如果服务要重新启动节点代理,则进程是 asadmin start-node-agent。
服务将运行进程的用户的权限授予进程。使用命令 asadmin create-service 创建 SMF 服务时,默认用户是超级用户。如果需要其他用户运行进程,请在 method_credential 中指定用户。
如果进程要绑定到 Solaris OS 的特权端口,则进程需要 net_privaddr 权限。Solaris OS 的特权端口的端口号小于 1024。
要确定用户是否具有 net_privaddr 权限,请以该用户身份登录,然后键入命令 ppriv -l | grep net_privaddr。
要运行 asadmin create-service 命令,必须具有 solaris.smf.* 授权。请参见 useradd 和 usermod 手册页以了解如何设置授权。还必须具有目录树中的写入权限:/var/svc/manifest/application/SUNWappserver。通常,超级用户具有这两种权限。此外,PATH 中必须具有 Solaris 10 管理命令(如 svccfg、svcs 和 auths)。有关运行此命令的完整信息,请参见 create-service(1)。
语法如下:
asadmin create-service [--name service-name] [--type das|node-agent] --passwordfile password-file [--serviceproperties serviceproperties] domain-or-node-agent-configuration-directory |
例如,为 domain1 创建一个名为 domain1 的服务:
运行以下命令:
asadmin create-service --type das --passwordfile password.txt /appserver/domains/domain1
这将创建一个自动重新启动域 domain1 的服务。在后台中,该命令从模板创建清单文件,验证该文件,并将其作为服务导入。
如果特定的 Application Server 域不应该具有默认的用户权限,请修改服务的清单,然后重新导入服务。要确定用户的权限,请以该用户身份登录,然后键入命令 ppriv -l。
创建服务后,使用 svacdm enable 命令启用它:
svacdm enable /appserver/domains/domain1
在启用之后,如果域关闭,则 SMF 将重新启动该域。
在您管理服务时,以下 Solaris 命令是很有用的:
auths
smf_security
svcadm
svccfg
rbac
useradd
usermod
有关这些命令的更多信息,请参见命令手册页。
要在 Solaris 9 或 Linux 平台上重新启动域,请在 /etc/inittab 文件中添加一行文本。
如果使用 /etc/rc.local 或系统的等效文件,请在 /etc/rc.local 中添加一行调用所需 asadmin 命令的文本。
例如,要重新启动安装在 opt/SUNWappserver 目录中的 Application Server 的 domain1,请使用名为 password.txt 的密码文件:
das:3:respawn:/opt/SUNWappserver/bin/asadmin start-domain --user admin --passwordfile/opt/SUNWappserver/password.txt domain1 |
将这些文本放在一行上。前三个字母是进程的唯一指示符,可以进行更改。
重新启动节点代理的语法与此相似。例如,要重新启动安装在 opt/SUNWappserver 目录中的 Application Server 的 agent1,请使用名为 password.txt 的密码文件:
das:3:respawn:/opt/SUNWappserver/bin/asadmin start-node-agent --user admin --passwordfile/opt/SUNWappserver/password.txt agent1 |
要在 Microsoft Windows 上自动重新启动,请创建一个 Windows 服务,并防止该服务在用户注销时关闭。
结合使用 Sun Java System Application Server 附带的 appservService.exe 和 appserverAgentService.exe 可执行文件以及 Microsoft 提供的 Service Control 命令 (sc.exe) 。
sc.exe 命令随 Windows XP 提供,位于 Windows 安装目录的 system32 子目录中(通常为 C:\windows\system32 或 C:\winnt\system32 )。编写本文档时,已经可以从 ftp://ftp.microsoft.com/reskit/win2000/sc.zip 下载 Windows 2000 sc.exe。有关使用 sc.exe 的更多信息,请参见 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndllpro/html/msdn_scmslite.asp。
使用 appservService.exe 和 appservAgentService.exe,如下所示:
C:\winnt\system32\sc.exe create service-name binPath= \"fully-qualified-path-to-appservService.exe \"fully-qualified-path-to-asadmin.bat start-command\" \"fully-qualified-path-to-asadmin.bat stop-command\"" start= auto DisplayName= "display-name"
在 binpath 和等号 (=) 之间没有空格。在等号之后路径之前必须有一个空格。
例如,要创建用于启动和停止域 domain1 的名为 SunJavaSystemAppServer DOMAIN1 的服务,请使用密码文件 C:\Sun\AppServer\password.txt:
C:\windows\system32\sc.exe create domain1 binPath= "C:\Sun\AppServer\lib\appservService.exe \"C:\Sun\AppServer\bin\asadmin.bat start-domain --user admin --passwordfile C:\Sun\AppServer\password.txt domain1\" \"C:\Sun\AppServer\bin\asadmin.bat stop-domain domain1\"" start= auto DisplayName= "SunJavaSystemAppServer DOMAIN1"
要创建用于启动和停止节点代理 agent1 的服务,请使用:
C:\windows\system32\sc.exe create agent1 binPath= "C:\Sun\AppServer\lib\appservAgentService.exe \"C:\Sun\AppServer\bin\asadmin.bat start-node-agent --user admin --passwordfile C:\Sun\AppServer\password.txt agent1\" \"C:\Sun\AppServer\bin\asadmin.bat stop-node-agent agent1\"" start= auto DisplayName= "SunJavaSystemAppServer AGENT1"
作为 binPath= 参数的一部分而输入的启动和停止命令的语法必须正确。要进行测试,请在命令提示符下运行这些命令。如果这些命令不能正确启动或停止域或节点代理,则说明该服务不能正常工作。
请勿混合使用 asadmin start 和 stop 命令与服务启动和停止命令。否则,可能导致服务器状态不同步。例如,即使组件没有运行,服务可能也不会显示已启动组件。为避免发生这种情况,请在使用服务时始终使用 sc.exe 命令来启动和停止组件。
如果 sc.exe create 命令未正确创建服务,请删除服务,然后重试。要删除服务,请使用 sc.exe delete "service-name" 命令。
默认情况下,Java VM 从 Windows 捕捉指示操作系统正在关闭或者用户正在注销的信号,并关闭自身而不报告任何错误。此行为可导致 Application Server 服务在用户从 Windows 注销时关闭。要防止服务在用户注销时关闭,请设置 -Xrs Java VM 选项。
要设置 -Xrs Java VM 选项,请将以下行添加到 as-install\domains\domain-name\config\domain.xml 文件中定义 Java VM 选项的部分:
<jvm-options>-Xrs</jvm-options>
如果 Application Server 服务正在运行,请先停止再重新启动该服务以使更改生效。
在某些 Windows 2003 Server 安装中,将 -Xrs 选项添加到 domain.xml 文件无法防止服务关闭。在这种情况下,请在 as-install\lib\processLauncher.xml 文件中添加该选项,如下所示:
<process name="as-service-name"> ... <sysproperty key="-Xrs"/> ...
如果使用的是群集或企业配置文件,则在自动重新启动 Application Server 时需要管理密码和主密码。如果使用的是开发者配置文件,则不需要密码。
使用以下方法之一处理群集和企业配置文件的密码和主密码要求:
在 Microsoft Windows 上,将服务配置为要求用户输入密码。
在“服务”控制面板中,双击创建的服务。
在“属性”窗口中,单击“登录”选项卡。
选中“允许服务与桌面交互”,以便在启动组件时提示输入所需密码。
必须登录才能看到提示,键入条目时条目不会在屏幕上显示出来。此方法是使用服务选项最安全的方法,但在服务可用之前需要进行用户交互。
如果未设置“与桌面交互”选项,则服务将处于“启动 - 暂挂”状态并显示为挂起。中止服务进程即可从此状态中恢复。
在 Windows 或 UNIX 上,使用 --savemasterpassword=true 选项创建一个域,并创建一个存储管理密码的密码文件。启动组件时,使用 --passwordfile 选项来指向包含密码的文件。
例如:
创建具有已保存的主密码的域。在下面的语法中,系统将提示您输入管理密码和主密码:
asadmin create-domain --adminport 4848 --adminuser admin --savemasterpassword=true --instanceport 8080 domain1 |
在 Windows 上,创建使用密码文件的服务,以输入管理员密码:
C:\windows\system32\sc.exe create domain1 binPath= "C:\Sun\AppServer\lib\appservService.exe \"C:\Sun\AppServer\bin\asadmin.bat start-domain --user admin --passwordfile C:\Sun\AppServer\password.txt domain1\" \"C:\Sun\AppServer\bin\asadmin.bat stop-domain domain1\"" start= auto DisplayName= "SunJavaSystemAppServer DOMAIN1"
密码文件 password.txt 的路径为 C:\Sun\AppServer\password.txt。该文件包含以下格式的密码
AS_ADMIN_password=password
例如,密码 adminadmin 在该文件中的格式为:
AS_ADMIN_password=adminadmin
在 UNIX 上,请使用添加到 inittab 文件的行中的 --passwordfile 选项:
das:3:respawn:/opt/SUNWappserver/bin/asadmin start-domain --user admin --passwordfile/opt/SUNWappserver/password.txt domain1 |
密码文件 password.txt 的路径为 /opt/SUNWappserver/password.txt。该文件包含以下格式的密码
AS_ADMIN_password=password
例如,密码 adminadmin 在该文件中的格式为:
AS_ADMIN_password=adminadmin