2010-09-29 54 views
2

在此處有一個奇怪的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)使用seddomain.xml - 寧願不要,因爲它很複雜&風險grepping通過XML的代碼。我已經看到Glassfish在這個文件中改變了屬性的順序,所以我們不能只用於port="4848"
(2)使用腳本安裝程序而不是zip文件並將參數作爲答案文件提供給安裝程序 - 對我們的安裝腳本來說是有問題的,這些腳本必須是同等強大的。
(3)使用已經更改了domain.xml的GlassFish安裝存檔的自定義製作zip文件 - 這不是一個選項,因爲我們設置的端口可能會在將來發生變化。

這幾乎是角落案件的定義,但我們需要解決。現在我們要sed domain.xml,但很高興知道是否有通過CLI可行的方式。

回答

1

你可能想要做,而不是下面...

  1. 通過解壓
  2. 刪除域1
  3. 創建使用您喜歡的端口的新DOMAIN1安裝V3。 man page for the create-domain subcommand將有所有的細節
  4. 開始這個新的領域...

無需額外的啓動或停止必需的(你可以跳過步驟2,如果你願意要記得說「的asadmin啓動域MYDOMAIN」而不是「的asadmin啓動域」

+0

咄...謝謝-您! – 2010-10-01 12:46:34

0

桑達不是那麼糟糕,因爲我想這可能是,這裏就是我所做的:

cd $GLASSFISH_HOME 
sed -i.bak '/<network-listener[^>]*name="admin-listener"/s/port="4848"/port="34848"/g' glassfish/domains/domain1/config/domain.xml 

它仍然是asadmin的認爲該端口的變化是動態的,當它不是,但我能活一個bug與此黑客。