【问题标题】:How to change the HTTP port number of JBoss 7 dynamically如何动态更改 JBoss 7 的 HTTP 端口号
【发布时间】: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 ? 无法点击东西或正确的方法:(

任何帮助都将受到高度赞赏和感激。

【问题讨论】:

    标签: batch-file jboss jboss7.x


    【解决方案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 为您付出的时间和精力 :) .........如果您找到解决方案,请在此处发布 :)
    猜你喜欢
    • 2012-07-03
    • 2014-11-04
    • 2012-03-05
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2021-04-20
    • 2019-01-20
    相关资源
    最近更新 更多