如何在脚本中更改Glassfish上的Admin端口

时间:2010-09-29 22:56:49

标签: glassfish

这里有一个奇怪的Glassfish问题。以下是如何重现它:

(1)安装Glassfish v3
(2)启动默认域名:

$GLASSFISH_HOME/bin/asadmin start-domain domain1

(3)更改管理端口(您需要输入admin uid& password,在我们的脚本中我们使用-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 - 不愿意这样做,因为它很复杂&通过XML代码进行风险搜索。我见过Glassfish改变了这个文件中属性的顺序,所以我们不能只为port="4848"发送 (2)使用脚本安装程序而不是zip文件,并将参数作为答案文件提供给安装程序 - 这对我们的安装脚本来说是有问题的,这些脚本需要具有同等效力。
(3)使用已更改domain.xml的Glassfish安装存档的自定义zip文件 - 不是选项,因为我们设置的端口将来可能会更改。

这几乎是一个角落案例的定义,但我们需要解决。现在我们要sed domain.xml但是很高兴知道是否有可能通过CLI的方式。

2 个答案:

答案 0 :(得分:1)

您可能想要执行以下操作......

  1. 通过解压缩安装v3
  2. 删除域名1
  3. 使用您喜欢的端口创建新的domain1。 man page for the create-domain subcommand将包含所有详细信息
  4. 启动这个新域名......
  5. 无需额外启动或停止(如果您愿意记得说'asadmin start-domain mydomain'而不是'asadmin start-domain'

    ,则可以跳过第2步

答案 1 :(得分:0)

Sed并没有我想象的那么糟糕,这就是我所做的:

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

这仍然是一个错误,asadmin认为端口更改是动态的,但它不是,但我可以忍受这个黑客。