如何在脚本中更改Glassfish上的管理端口
这里有个奇怪的玻璃鱼问题。下面是如何复制它: (1) 安装Glassfish v3如何在脚本中更改Glassfish上的管理端口,glassfish,Glassfish,这里有个奇怪的玻璃鱼问题。下面是如何复制它: (1) 安装Glassfish v3 (2) 启动默认域: $GLASSFISH_HOME/bin/asadmin start-domain domain1 (3) 更改管理员端口(您需要输入管理员uid和密码,在我们的脚本中使用-u&-W参数): (4) 关闭域: $GLASSFISH_HOME/bin/asadmin stop-domain domain1 你会发现这是行不通的。你会得到: CLI306 Warning - server is
(2) 启动默认域:
$GLASSFISH_HOME/bin/asadmin start-domain domain1
(3) 更改管理员端口(您需要输入管理员uid和密码,在我们的脚本中使用-u&-W参数):
(4) 关闭域:
$GLASSFISH_HOME/bin/asadmin stop-domain domain1
你会发现这是行不通的。你会得到:
CLI306 Warning - server is not running.
Command stop-domain executed successfully.
但你的Glassfish流程仍在运行。更糟糕的是,当您尝试启动进程时,会收到一条警告,提示您的某些端口已在使用中。他们当然是,旧流程仍然拥有他们!你唯一的出路是killall-9java
虽然一些配置更改是动态的,但这一个似乎不是,但域停止假定它是动态的,并使用新端口尝试执行该命令
可能的解决办法是:
(1) 在domain.xml
上使用sed
——最好不要这样做,因为在xml代码中进行搜索比较复杂且有风险。我看到Glassfish更改了该文件中属性的顺序,因此我们不能只针对port=“4848”
(2) 使用脚本安装程序而不是zip文件,并将参数作为应答文件提供给安装程序-这对于需要idem POWENT的安装脚本是有问题的。
(3) 使用定制的Glassfish安装存档zip文件,其中domain.xml已更改-这不是一个选项,因为我们正在设置的端口将来可能会更改
这几乎是一个角落案例的定义,但我们需要解决。现在,我们将访问sed domain.xml,但如果知道是否有一种方法可以通过CLI实现,那就太好了。sed没有我想象的那么糟糕,下面是我所做的:
cd $GLASSFISH_HOME
sed -i.bak '/<network-listener[^>]*name="admin-listener"/s/port="4848"/port="34848"/g' glassfish/domains/domain1/config/domain.xml
cd$GLASSFISH\u主页
sed-i.bak'/]*name=“admin listener”/s/port=“4848”/port=“34848”/g'glassfish/domains/domain1/config/domain.xml
asadmin认为端口更改是动态的,而实际上不是动态的,这仍然是一个bug,但我可以接受这种攻击。您可能需要执行以下操作
cd $GLASSFISH_HOME
sed -i.bak '/<network-listener[^>]*name="admin-listener"/s/port="4848"/port="34848"/g' glassfish/domains/domain1/config/domain.xml