You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Windows Java应用连接Linux虚拟机Wildfly服务器的连接拒绝问题

解决Windows连接Linux虚拟机Wildfly JMS Topic的连接拒绝问题

先排查网络连通性

  • 在Windows命令行执行ping <虚拟机IP>,如果不通,先解决虚拟机和主机的网络互通问题(比如切换虚拟机为桥接模式,确保二者在同一网段)。
  • 测试8080端口是否能访问:执行telnet <虚拟机IP> 8080,要是提示无法连接,说明端口没开放,或者Wildfly没绑定到外部可访问的地址。

修改Wildfly绑定地址*(关键)*

默认Wildfly只绑定localhost,外部机器根本连不上,两种修改方式:

  1. 临时生效:启动Wildfly时加参数,在Linux虚拟机的Wildfly安装目录执行:
    ./standalone.sh -b 0.0.0.0 -bmanagement 0.0.0.0
    
    0.0.0.0表示绑定所有网卡,外部就能访问了。
  2. 永久生效:修改配置文件standalone/configuration/standalone-full.xml(因为启用了消息功能,默认用full配置):
    找到<interfaces>节点下的<interface name="public">,把
    <inet-address value="${jboss.bind.address:127.0.0.1}"/>
    
    改成
    <inet-address value="0.0.0.0"/>
    
    改完重启Wildfly。

检查Linux防火墙

  • 先临时关闭防火墙测试:CentOS/RHEL执行systemctl stop firewalld,Ubuntu执行ufw disable。如果关闭后能连接,说明要开放8080端口:
    • CentOS/RHEL:
      firewall-cmd --add-port=8080/tcp --permanent
      firewall-cmd --reload
      
    • Ubuntu:
      ufw allow 8080/tcp
      

代码调整

  • 把Context.PROVIDER_URL改成虚拟机的实际IP,比如:
    jndiProperties.put(Context.PROVIDER_URL, "http-remoting://192.168.x.x:8080");
    
    (如果没改端口,8080可以省略,但写全更稳妥)
  • 默认Wildfly远程JMS连接需要认证,创建连接时要传入用户名密码:
    TopicConnection con = f.createTopicConnection("你的JMS用户名", "你的JMS密码");
    
    要是还没创建用户,在Linux虚拟机里运行Wildfly目录下的./add-user.sh,选a) Application User,设置用户名、密码,分配guest或jms角色即可。

验证服务状态

在Windows浏览器里访问http://<虚拟机IP>:8080,能看到Wildfly欢迎页面的话,说明服务正常且外部可访问。

内容的提问来源于stack exchange,提问作者Gaurav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:52:10