You need to enable JavaScript to run this app. 群晖环境下WildFly 19部署War包连接MariaDB 10通信链路失败求助
优惠活动
大模型
产品
解决方案
定价
更多

群晖环境下WildFly 19部署War包连接MariaDB 10通信链路失败求助

群晖环境WildFly 19部署War包数据库连接异常排查

问题背景

  • War包部署至运行在群晖DiskStation设备的WildFly 19服务时,持续触发通信失败错误
  • 已连续多日排查无进展,搜索引擎检索到的通用解决方案(包括将连接地址从localhost调整为127.0.0.1等尝试)均未生效

当前已知环境配置

  • 运行组件版本:WildFly 19 + MariaDB 10
  • 已配置的JNDI数据源:名称为PMProdDS
  • 数据源连接URL:jdbc:mysql://localhost:3307/pmprod?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=America/Chicago
  • 应用端persistence.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
    <persistence-unit name="portfoliomanager"
        transaction-type="JTA">
        <jta-data-source>java:/PMProdDS</jta-data-source>
        <!-- <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> -->
        <properties>
            <property name="hibernate.show_sql" value="false" />
            <property name="hibernate.dialect"
                value="org.hibernate.dialect.MySQL8Dialect" />
            <property
                name="javax.persistence.schema-generation.database.action"
                value="update" />
            <property name="hibernate.format_sql" value="false" />
        </properties>
    </persistence-unit>
</persistence>

部署阶段抛出的完整错误堆栈

{"WFLYCTL0080: Failed services" => {"jboss.persistenceunit.\"portfoliomanager.war#portfoliomanager\"" => "javax.persistence.PersistenceException: [PersistenceUnit: portfoliomanager] Unable to build Hibernate SessionFactory
    Caused by: javax.persistence.PersistenceException: [PersistenceUnit: portfoliomanager] Unable to build Hibernate SessionFactory
    Caused by: org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution
    Caused by: java.sql.SQLException: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/PMProdDS
    Caused by: javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/PMProdDS
    Caused by: javax.resource.ResourceException: IJ031084: Unable to create connection
    Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    Caused by: java.net.ConnectException: Connection refused (Connection refused)"}}

定位排查与解决思路

  • 第一步校验MariaDB实际监听端口:通过群晖SSH终端执行netstat -tulpn | grep 3307,确认MariaDB进程是否真的在3307端口处于LISTEN状态。群晖套件中心安装的MariaDB存在内外端口映射差异,不少用户会误将套件配置的外部映射端口作为本地实际监听端口,导致连接指向无效端口触发“Connection refused”报错,这是该场景下最高发的问题诱因。
  • 校验JDBC驱动与方言适配关系:WildFly 19默认绑定的高版本MySQL驱动对MariaDB 10存在协议兼容问题,当前配置使用的MySQL8Dialect会导致驱动握手阶段直接异常,需替换为org.hibernate.dialect.MariaDB103Dialect,同时确认WildFly部署的数据库驱动为MariaDB官方适配版本,而非高版本MySQL驱动。
  • 校验数据库账号授权范围:确认MariaDB中PMProdDS关联的数据库账号是否拥有从localhost/127.0.0.1地址访问pmprod库的权限,可执行SELECT user, host FROM mysql.user;核查账号的host绑定范围,若存在限制需重新授权并执行FLUSH PRIVILEGES;刷新权限配置。
  • 校验本地网络拦截规则:检查群晖本地防火墙的端口放行列表,确认3307端口是否被加入允许访问范围,临时关闭防火墙测试可快速排除本地拦截导致的连接拒绝问题。
  • 校验数据源配置有效性:在WildFly管理控制台中对PMProdDS数据源执行“Test Connection”操作,单独验证数据源本身的连通性,排除应用配置干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 18:57:02