Spring boot + oracle + weblogic 报错“javax.naming.NoInitialContextException”如何解决?

问题描述 投票:0回答:1

应用程序.属性

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

我已使用上述 JNDI 配置,但出现错误。 原因:javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或者作为小程序参数,或者在应用程序资源文件中:java.naming.factory.initial

java oracle spring-boot weblogic jndi
1个回答
0
投票

我已删除 application.properties 中的 JNDI 配置,并在主应用程序类中添加以下代码。

@SpringBootApplication(exclude = { JmxAutoConfiguration.class})

@Bean
    public DataSource dataSource() {
        try {
            System.setProperty("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory");
            InitialContext context = new InitialContext();
            // Use the full JNDI name including the application and module names
            return (DataSource) context.lookup("jdbc/ekpDataSource");
        } catch (NamingException e) {
            throw new RuntimeException("Failed to lookup DataSource", e);
        }
    }


    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

不要忘记在项目中添加外部(weblogic.jar)jar。 您可以在此路径中找到 weblogic.jar 文件 {WebLogic_Home}/wlserver/server/lib/weblogic.jar

© www.soinside.com 2019 - 2024. All rights reserved.