1. 程式人生 > >Glassfish 安裝為windows 系統服務

Glassfish 安裝為windows 系統服務

(文件來源官方)

http://wiki.glassfish.java.net/Wiki.jsp?page=FaqRunAsWindowsServiceZh

如何將 GlassFish 作為 Windows 服務執行?

Glassfish 附帶一個名為 appservService.exe 的 Windows 可執行檔案,它可與 Windows 服務控制器通訊。其工作方式類似於 Java Service Wrapper 等程式。您為 Glassfish 建立的 Windows 服務使用幾個引數來啟動 appservService.exe,這些引數告知它在啟動和停止時要執行哪些 asadmin 命令。

Glassfish 並未附帶可為 appservService.exe 輕鬆建立 Windows 服務的工具,但是 Sun Java Application Server 9.x 的安裝程式有一個 "Install as a Windows service" 複選框。如果您要為 Glassfish 建立 Windows 服務,則該說明中給出了可從命令提示符執行的一個相當大的命令。如果 Glassfish 安裝路徑包含空格,例如 C:\Program Files\Sun\GlassfishV2
uff0c那麼查詢正確方法對轉義字元進行轉義就變得複雜而不是快速了。

GlassfishSvc.jar

Ryan de Laplante 提供了一個簡單的命令列工具,通過它可以輕而易舉地建立 Windows 服務。下載 GlassfishSvc.jar(原始碼),並將其複製到 Glassfish 安裝路徑(例如 C:\Program Files\Sun\GlassfishV2
uff09,然後從命令列執行以下命令:

C:\Program Files\Sun\GlassfishV2>java -jar GlassfishSvc.jar -i 

glassfishsvc v1.0 (Aug 19 2007) 

Service name : GlassfishAppServer 
Glassfish installation path : C:\Program Files\Sun\GlassfishV2
Glassfish domain : domain1 
Glassfish admin username : admin 

Installing service... Done.

-i 引數將使用預設選項安裝服務。命令列引數的完整列表如下:

glassfishsvc v1.0 (Aug 19 2007)

DESCRIPTION:
    Installs and uninstalls a Windows service for Glassfish

USAGE:
    java -jar glassfishsvc.jar [-i | -u] [OPTIONS]

    -i        Installs a Windows service for Glassfish.
    -u        Uninstalls a Windows service for Glassfish.
    -n name   Name for the Windows service. Use double quotes around names
              that contain spaces.  Defaults to GlassfishAppServer.
    -d path   Directory where Glassfish is installed. Use double
              quotes around paths with spaces, and escape back slashes.
              Defaults to current directory.
    -m domain Name of the Glassfish domain to start and stop. Defaults to
              domain1.
    -a user   Glassfish admin user name.  Defaults to admin.
    -p pwd    Glassfish admin password.  A password.txt file will be created
              in the Glassfish install directory containing the password in
              plain text, and the Windows service will be configured to read
              from it. This is usually not necessary. If no password is passed
              in, the password.txt file will not be created.

EXAMPLES:
    java -jar glassfishsvc.jar -i
    java -jar glassfishsvc.jar -i -p adminadmin
    java -jar glassfishsvc.jar -i -n MyServiceName -d "C:\\Program Files\\Sun\\Glassfish" -m myDomain -a admin5 -p secretpwd
    java -jar glassfishsvc.jar -u
    java -jar glassfishsvc.jar -u -n MyServiceName

AUTHOR:
    Ryan de Laplante <ryan at ijws dot com>

群集配置檔案

如果您安裝了 Glassfish 群集配置檔案,則 Glassfish 會在服務啟動時詢問管理員密碼。要避免詢問此問題,請在安裝服務時使用 -p 選項。在 Glassfish 根目錄中將建立 password.txt 檔案,其中包含純文字形式的密碼。Windows 服務將配置為使用此檔案,以便它可以在無人蔘與的情況下啟動。您應該確保在此檔案建立後對其配置相應的 NTFS 安全性,以便未授權使用者對它沒有讀取或寫入訪問許可權。

Windows 使用者登出

預設情況下,JVM 可以捕獲來自 Windows 的指示 OS 正在關閉或使用者正在登出的訊號,並正常地自行關閉。這意味著,一旦使用者從 Windows 中登出,Glassfish 服務便會關閉。這有違於使用 Windows 服務的初衷,因此需要使用 -Xrs JVM 選項關閉此 JVM 功能。

開啟 <GF_HOME>\domains\domain1\config\domain.xml 檔案,並查詢含有大量 <jvm-options>某個 JVM 選項</jvm-options> 行的部分。在該部分中新增以下行:

<jvm-options>-Xrs</jvm-options>

儲存並關閉 domain.xml。如果 Glassfish 服務已在執行,請重新啟動它以使更改生效。

注意:有報告指出,在某些 Windows 2003 Server 安裝中將 -Xrs jvm-option 新增到 domain.xml 無法解決此問題。所報告的解決方案是將 jvm 選項新增到 <GF_HOME>\lib\processLauncher.xml:

<process name="as9-server">
   ...
   <sysproperty key="-Xrs"/>
   ...