WebLogic 12.2.1.4查找JNDI DataSource失败报错如何解决?
WebLogic 12.2.1.4 数据源JNDI查找失败排查步骤
报错详情:
Caused by: org.springframework.jdbc.datasource.lookup.DataSourceLookupFailureException: Failed to look up JNDI DataSource with name 'java:comp/env/jdbc/TESTDataSource'; nested exception is javax.naming.NameNotFoundException: While trying to look up comp/env/jdbc/TESTDataSource in /app/webapp/TEST.war/1431676420.; remaining name 'comp/env/jdbc/TESTDataSource'
你可以按以下顺序逐一排查遗漏的配置:
- 检查WebLogic全局数据源的JNDI名称配置
登录WebLogic控制台进入「服务-数据源」页面,找到已创建的jdbc/TESTDataSource数据源,在「常规」选项卡确认JNDI名称字段值完全匹配jdbc/TESTDataSource,注意大小写、前后空格,WebLogic的JNDI名称大小写敏感。如果配置了多个JNDI名称,确保jdbc/TESTDataSource在列表范围内。 - 检查数据源的目标部署范围
在数据源配置页面切换到「目标」选项卡,确认你部署应用的WebLogic服务器/集群已经被勾选,数据源未部署到应用所在的服务实例是此类报错的最常见原因。 - 检查应用的资源引用配置
你当前查找的java:comp/env/jdbc/TESTDataSource是应用级的JNDI别名,需要在应用部署描述符中配置映射:- 普通web应用需要在
web.xml中添加如下配置:<resource-ref> <description>TEST业务数据源</description> <res-ref-name>jdbc/TESTDataSource</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> - 若不想配置别名映射,可直接修改Spring配置中的JNDI查找地址为WebLogic全局路径:
jdbc/TESTDataSource或者java:jdbc/TESTDataSource,跳过java:comp/env前缀的别名查找逻辑。
- 普通web应用需要在
- 检查WebLogic专属部署描述符配置
如果你使用了java:comp/env别名规则,还需要在应用的weblogic.xml中添加全局JNDI和应用别名的映射:<resource-description> <res-ref-name>jdbc/TESTDataSource</res-ref-name> <jndi-name>jdbc/TESTDataSource</jndi-name> </resource-description> - 检查JNDI绑定状态
应用部署完成后,登录WebLogic控制台进入「部署-你的TEST应用-JNDI树」页面,查看comp/env/jdbc路径下是否存在TESTDataSource节点,确认绑定是否生效。
内容的提问来源于stack exchange,提问作者daniel
相关产品推荐
相关产品推荐

