在此處有一個奇怪的Glassfish問題。以下是如何重現它:如何在腳本內更改Glassfish上的管理端口
(1)安裝GlassFish v3的
(2)啓動默認域:
$GLASSFISH_HOME/bin/asadmin start-domain domain1
(3)變更管理端口(您需要輸入管理員UID &密碼,在我們的腳本中,我們使用-u & -W參數):
$GLASSFISH_HOME/bin/asadmin set configs.config.server-config.network-config.network-listeners.network-listener.admin-listener.port=34848
(4)關閉域:
$GLASSFISH_HOME/bin/asadmin stop-domain domain1
你會看到這是行不通的。你得到:
CLI306 Warning - server is not running.
Command stop-domain executed successfully.
但是你的Glassfish進程仍在運行。更糟糕的是,當您嘗試啓動該過程時,您會收到警告,表明您的一些端口已被使用。當然,他們是,舊的過程仍然有他們的!你唯一的出路就是killall -9 java
雖然一些配置的變化是動態的,看來這個人是不是,但域停止假定它是動態,並使用新的端口,試圖執行命令。
可能的解決方案是:
(1)使用sed
上domain.xml
- 寧願不要,因爲它很複雜&風險grepping通過XML的代碼。我已經看到Glassfish在這個文件中改變了屬性的順序,所以我們不能只用於port="4848"
(2)使用腳本安裝程序而不是zip文件並將參數作爲答案文件提供給安裝程序 - 對我們的安裝腳本來說是有問題的,這些腳本必須是同等強大的。
(3)使用已經更改了domain.xml的GlassFish安裝存檔的自定義製作zip文件 - 這不是一個選項,因爲我們設置的端口可能會在將來發生變化。
這幾乎是角落案件的定義,但我們需要解決。現在我們要sed domain.xml,但很高興知道是否有通過CLI可行的方式。
咄...謝謝-您! – 2010-10-01 12:46:34