Sun Java System Application Server 9.1 管理指南

附錄 A 自動重新啟動網域或節點代理程式

如果網域或節點代理程式意外停止 (例如,您需要重新啟動機器),您可以將系統配置為自動重新啟動網域或節點代理程式。

本附錄包含下列主題:

在 Solaris 10 上自動重新啟動

Solaris 10 使用者可使用指令 asadmin create-service,建立會重新啟動節點代理程式或 Domain Administration Server (DAS) 的服務。所建立的服務可使用 Solaris 服務管理功能 (SMF)。

服務啟動的程序則取決於該服務是重新啟動 DAS 還是節點代理程式。

此服務授予此程序的權限,是執行此程序的使用者權限。當您使用指令 asadmin create-service 來建立 SMF 服務,預設使用者是超級使用者。如果需要不同的使用者來執行程序,請在 method_credential 中指定使用者。

如果此程序連結到 Solaris 作業系統的權限連接埠,則此程序需要 net_privaddr 權限。Solaris 作業系統的權限連接埠具有小於 1024 的連接埠號碼。

若要判斷使用者是否具有 net_privaddr 權限,請以該使用者身份登入,然後鍵入指令 ppriv -l | grep net_privaddr

若要執行 asadmin create-service 指令,必須具有 solaris.smf.* 授權。請參閱 useraddusermod 線上手冊來瞭解設定授權的方法。您也必須具有目錄樹的寫入權限:/var/svc/manifest/application/SUNWappserver。超級使用者通常具有這兩種權限。此外 PATH 中必須有 Solaris 10 管理指令 (例如 svccfgsvcsauths)。如需執行此指令的完整資訊,請參閱 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 的服務:

  1. 請執行下列指令:

    asadmin create-service --type das --passwordfile password.txt /appserver/domains/domain1

    此指令會建立服務以自動重新啟動網域 domain1。在背景中,指令會從範本建立清單檔案並驗證檔案,然後將檔案匯入成服務。


    備註 –

    如果特定的 Application Server 網域不應具有預設的使用者權限,請修改服務清單並重新匯入服務。若要判斷使用者權限,請以該使用者的身份登入,然後鍵入指令 ppriv -l


  2. 建立服務後,請使用 svacdm enable 指令啟用服務:

    svacdm enable /appserver/domains/domain1

  3. 啟用後,如果網域中斷,SMF 將予以重新啟動。

管理服務時,下列 Solaris 指令很有用:

如需這些指令的更多資訊,請參閱指令線上手冊。

在 Solaris 9 和 Linux 平台上使用 inittab 自動重新啟動

若要在 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 平台上自動重新啟動

若要在 Microsoft Windows 上自動重新啟動,請建立 Windows 服務,並防止在使用者登出時關閉服務。

建立 Windows 服務

將 Sun Java System Application Server 隨附的 appservService.exeappserverAgentService.exe 可執行檔與 Microsoft 提供的服務控制指令 (sc.exe) 配合使用。

sc.exe 指令隨附於 Windows XP,並位於 Windows 安裝目錄的 system32 子目錄 (通常為 C:\windows\system32C:\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.exeappservAgentService.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 startstop 指令混合使用來進行啟動和停止。否則,將導致伺服器狀態不同步。例如,即使元件沒有執行,該服務可能也會顯示已啟動元件。為避免發生這種情況,請在使用服務時始終使用 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 時,需要管理密碼和主密碼。如果使用開發者設定檔,則不需要密碼

以下列其中一種方式,處理叢集和企業設定檔的密碼和主密碼需求: