在此处有一个奇怪的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