如何将Java Web应用连接到Wildfly配置的JNDI数据源并解决驱动报错
解决方法
你出现报错的核心原因是<sql:setDataSource>标签的driver和dataSource属性为互斥配置,不能同时填写。当你指定driver属性时,标签会默认将dataSource属性的值当成JDBC连接URL解析,自然会出现“找不到对应java:/Postgres的驱动”错误。
第一步:修正JSP配置
直接删除driver属性配置即可,正确写法如下:
<sql:setDataSource var = "myDS" dataSource="java:/Postgres" /> <sql:query var = "listStuff" dataSource = "${myDS}"> SELECT * FROM skisEtc ORDER BY id; </sql:query>
数据源的驱动、连接地址、用户名密码都已经在Wildfly服务端配置完成,应用侧不需要再重复配置这些参数。
可选:异常排查项
如果修正配置后仍无法连接,可按以下顺序检查:
- 确认Wildfly侧的Postgres数据源配置中,已经填写了正确的数据库用户名(fred)和密码(secret),且测试数据源连接可以正常连通。
- 确认PostgreSQL驱动包
postgresql-42.2.23.jar已经被正确部署为Wildfly的服务级驱动/模块,不要仅将驱动包放在Web应用的WEB-INF/lib目录下,服务端数据源需要服务层面能加载到驱动类。 - 若提示JNDI名称找不到,可在Web应用的
WEB-INF/web.xml中添加资源引用配置:
<resource-ref> <res-ref-name>java:/Postgres</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
内容的提问来源于stack exchange,提问作者Randall1820
相关产品推荐
相关产品推荐

