如何动态更改 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 端口号的主要内容,如果未能解决你的问题,请参考以下文章

如何检查和设置 JBoss 5 的 URL 和端口号?

如何更改linux(centos)下的Apache http端口号

更改 JBoss 6.1.0 端口

如何更改linux下的Apache端口号

如何在 WAMP 中更改 apache 的端口号

如何更改 Asp.Net 核心应用程序的端口号?