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

Spring Boot+Oracle+WebLogic遇javax.naming.NoInitialContextException如何解决?

解决JNDI配置引发的NoInitialContextException问题

1. 检查WebLogic客户端依赖是否存在

项目必须包含WebLogic的JNDI客户端相关jar包,否则weblogic.jndi.WLInitialContextFactory类无法被加载,直接触发该异常。
如果是Maven项目,可添加以下依赖(注意WebLogic依赖需从Oracle仓库或本地WebLogic目录获取):

<dependency>
    <groupId>com.oracle.weblogic</groupId>
    <artifactId>wlfullclient</artifactId>
    <version>12.2.1.4.0</version>
    <scope>provided</scope> <!-- 部署到WebLogic服务器时可设为provided -->
</dependency>

2. 调整Spring配置写法

你当前的配置同时使用spring.datasource.jndi-name和spring.jndi.properties,可尝试修改配置格式,确保Spring正确读取JNDI上下文参数:
删除spring.datasource.driver-class-name(使用JNDI时无需指定驱动类,WebLogic数据源已配置完成),调整后的application.properties如下:

spring.datasource.jndi-name=java:/comp/env/jdbc/myDemoDs
spring.jndi.java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
spring.jndi.java.naming.provider.url=t3://localhost:7001

或者通过自定义配置类手动构建数据源,确保上下文参数生效:

@Configuration
public class DataSourceConfig {
    @Bean
    public DataSource dataSource() {
        JndiDataSourceLookup lookup = new JndiDataSourceLookup();
        lookup.setResourceRef(true);
        Properties jndiProps = new Properties();
        jndiProps.put("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory");
        jndiProps.put("java.naming.provider.url", "t3://localhost:7001");
        lookup.setJndiEnvironment(jndiProps);
        return lookup.getDataSource("java:/comp/env/jdbc/myDemoDs");
    }
}

3. 验证WebLogic数据源配置

确保WebLogic服务器中已正确创建jdbc/myDemoDs数据源,且JNDI名称与配置中的java:/comp/env/jdbc/myDemoDs完全匹配,同时WebLogic服务处于运行状态,t3://localhost:7001地址可正常访问。

4. 通过系统参数指定上下文配置

若上述配置仍无效,可在应用启动时通过JVM系统参数直接指定初始上下文参数:

-Djava.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
-Djava.naming.provider.url=t3://localhost:7001

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 20:35:11