如果網域或節點代理程式意外停止 (例如,您需要重新啟動機器),您可以將系統配置為自動重新啟動網域或節點代理程式。
本附錄包含下列主題:
Solaris 10 使用者可使用指令 asadmin create-service,建立會重新啟動節點代理程式或 Domain Administration Server (DAS) 的服務。所建立的服務可使用 Solaris 服務管理功能 (SMF)。
服務啟動的程序則取決於該服務是重新啟動 DAS 還是節點代理程式。
如果服務重新啟動 DAS,則程序是 asadmin start-domain。
如果服務重新啟動節點代理程式,則程序是 asadmin start-node-agent。
此服務授予此程序的權限,是執行此程序的使用者權限。當您使用指令 asadmin create-service 來建立 SMF 服務,預設使用者是超級使用者。如果需要不同的使用者來執行程序,請在 method_credential 中指定使用者。
如果此程序連結到 Solaris 作業系統的權限連接埠,則此程序需要 net_privaddr 權限。Solaris 作業系統的權限連接埠具有小於 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 提供的服務控制指令 (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 擷取訊號,這些訊號會指示作業系統正在關閉或使用者正在登出,並會自行正常關閉。此運作方式會導致在使用者登出 Windows 時,Application Server 服務關閉。若要防止在使用者登出時服務關閉,請設定 -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