如何动态更改 JBoss 7 的 HTTP 端口号
Posted
技术标签:
【中文标题】如何动态更改 JBoss 7 的 HTTP 端口号【英文标题】:How to change the HTTP port number of JBoss 7 dynamically 【发布时间】:2013-08-31 02:31:44 【问题描述】:我已经使用 Advanced Installer 将我的 Jboss 7 服务器、Postgres 数据库和 test.bat 组合成一个 demo.exe 文件。当文件即 demo.exe 文件在客户端双击然后 test.bat 文件运行并在预定义的位置部署 JBoss 和 postgres 并且服务启动并且我的应用程序在端口号 8080 运行。所有脚本已写入test.bat 文件。这个 demo.exe 文件必须由不同的用户使用。 8080 可能会被客户端的不同应用程序使用或使用。
那么如何根据端口使用情况在客户端动态更改 jboss 的端口号? 我是否必须使用任何 Jboss 安装程序或在批处理文件(即 test.bat )上编写 scipt ? 无法点击东西或正确的方法:(
任何帮助都将受到高度赞赏和感激。
【问题讨论】:
【参考方案1】:您可以使用CLI
执行此操作。此示例将端口从 8081 更改为 8080:
启动 CLI(在 .../bin/
中):
$ ./jboss-cli.sh
You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands.
连接
[disconnected /] connect
进入目标区域
[standalone@localhost:9999 /] cd /socket-binding-group=standard-sockets/socket-binding=http
显示当前状态:
[standalone@localhost:9999 socket-binding=http] ls -l
ATTRIBUTE VALUE TYPE
bound true BOOLEAN
bound-address 127.0.0.1 STRING
bound-port 8081 INT
client-mappings undefined LIST
fixed-port false BOOLEAN
interface undefined STRING
multicast-address undefined STRING
multicast-port undefined INT
name http STRING
port 8081 INT
更改端口属性:
[standalone@localhost:9999 socket-binding=http] :write-attribute(name="port", value="8080")
"outcome" => "success",
"response-headers" =>
"operation-requires-reload" => true,
"process-state" => "reload-required"
请注意,进程状态是“需要重新加载”
再看一遍:
[standalone@localhost:9999 socket-binding=http] ls -l
ATTRIBUTE VALUE TYPE
bound true BOOLEAN
bound-address 127.0.0.1 STRING
bound-port 8081 INT
client-mappings undefined LIST
fixed-port false BOOLEAN
interface undefined STRING
multicast-address undefined STRING
multicast-port undefined INT
name http STRING
port 8080 INT
请注意,这里的bound-port
仍然是旧值。
所以回到根目录
[standalone@localhost:9999 subsystem=web] cd /
重新加载
[standalone@localhost:9999 /] :reload
"outcome" => "success",
"response-headers" => "process-state" => "reload-required"
这意味着重新加载仍在进行中,再次
[standalone@localhost:9999 /] :reload
"outcome" => "success"
现在 HTTP 连接器应该在新端口上侦听。
更新
问题要求动态地更改端口(JBoss 已启动并正在运行)。
另一种选择是将端口写入配置文件(standalone.xml
)。这是静态的,但它可能与安装目的一样好用。
【讨论】:
感谢您的回答。我有以下疑问:- 1.假设如果我成功地将端口号更改为 8080 到 8081,那么即使它也不确定 8081 端口号是免费的。 2.截至目前,用户使用localhost:8080启动应用程序,那么如果8080被占用,用户如何知道他/她必须使用另一个端口? 3.如果指定的端口(即8080)繁忙并继续启动jboss进程,我们是否可以在命令propmpt中提供端口号? 如果我没看错的话,您正在使用安装程序。所以是的,您应该能够提示输入端口,以检查没有其他进程正在侦听该端口,甚至在安装结束时使用与端口匹配的给定 URL 启动浏览器。我不知道“高级安装程序”,所以可能会问另一个关于如何使用这个(或任何其他)安装生成器工具来实现这一点的问题。在安装过程中,每个人都可以使用此答案中的脚本动态地更改端口。 是的,我正在使用高级安装程序,但即使我对它了解不多。你能告诉我任何可以帮助我解决我的问题的好的安装程序,即我可以在哪里配置帖子编号?还有一件事……因为端口号是在standalone.xml中定义的,所以我们不能在独立文件中添加更多端口号,以便动态检查并切换到未使用的端口吗? 抱歉,帮不了你。试一试(为任何安装程序编写脚本),然后发布另一个问题。我会检查下一个空闲端口(从 8080 开始),并在安装过程中建议一个。如果用户点击 OK,则相应地配置 JBoss。 感谢 Beryllium 为您付出的时间和精力 :) .........如果您找到解决方案,请在此处发布 :)以上是关于如何动态更改 JBoss 7 的 HTTP 端口号的主要内容,如果未能解决你的问题,请参考以下文章