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

Spring Boot 2.4.3在Weblogic 12.2.1.4.0中通过JNDI获取JDBC连接报权限错误

Spring Boot 2.4.3集成Weblogic 12.2.1.4 JNDI数据源报错修复方案

报错根因

User "<anonymous>" does not have permission to perform operation "reserve" 错误核心有两个:

  1. Weblogic JDBC数据源默认启用连接池资源权限校验,未授权的匿名身份无法预留连接
  2. Spring Boot默认JNDI查找逻辑未携带Weblogic要求的标准命名空间前缀,也没有适配Weblogic的安全上下文规则,导致请求被识别为匿名用户

修复步骤

  • 第一步:调整Weblogic数据源安全配置
    进入Weblogic控制台→服务→数据源→找到你配置的jdbc/ABC数据源→切换到安全选项卡:
    1. 勾选允许全局事务,不需要分布式事务的场景可选择「一阶段提交」优化性能
    2. 找到「连接池安全」模块,取消勾选「启用连接预留权限检查」,也可以选择在「安全角色」配置中给anonymous角色或者应用部署使用的Weblogic角色单独授予reserve权限
    3. 保存配置后重启数据源或Weblogic域服务生效
  • 第二步:修正Spring Boot JNDI配置
    现有配置缺少J2EE环境标准的JNDI查找前缀,且不需要配置driver-class(JNDI数据源由Weblogic统一管理驱动、用户名、密码),修改配置如下:
    # 必须加java:comp/env/前缀,否则Spring Boot无法在Weblogic环境中找到对应JNDI资源
    spring.datasource.jndi-name=java:comp/env/jdbc/ABC
    # 移除spring.datasource.driver.class、用户名、密码等直连配置项
    
    YML格式配置参考:
    spring:
      datasource:
        jndi-name: java:comp/env/jdbc/ABC
    
  • 第三步:(可选)补充Weblogic部署描述符
    如果调整后仍报错,在项目src/main/webapp/WEB-INF目录下新增两个配置文件,打包时确保文件被打入WAR包的对应目录:
    1. web.xml声明JNDI资源引用:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
        <resource-ref>
            <description>Oracle Datasource</description>
            <res-ref-name>jdbc/ABC</res-ref-name>
            <res-type>javax.sql.DataSource</res-type>
            <res-auth>Container</res-auth>
        </resource-ref>
    </web-app>
    
    1. weblogic.xml映射JNDI资源到Weblogic实际数据源:
    <?xml version="1.0" encoding="UTF-8"?>
    <weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.9/weblogic-web-app.xsd">
        <resource-description>
            <res-ref-name>jdbc/ABC</res-ref-name>
            <jndi-name>jdbc/ABC</jndi-name>
        </resource-description>
    </weblogic.xml>
    
  • 现有代码中的dataSource.getConnection()调用逻辑符合JDBC标准,无需修改,调整配置后即可正常运行。

内容的提问来源于stack exchange,提问作者C. Bilgin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:21:01