【问题标题】:Weblogic exception : javax.naming.NameNotFoundException: Unable to resolve 'jdbc.payment'. Resolved 'jdbc'; remaining name 'payment'Weblogic 异常:javax.naming.NameNotFoundException:无法解析“jdbc.payment”。解决了'jdbc';其余名称“付款”
【发布时间】:2020-12-22 19:29:10
【问题描述】:

当我从 Spring Boot 应用程序的 weblogic 中查找 jndi 数据源时出现此异常...仅在一次成功部署后...我的意思是从第二次部署开始。如果我重新启动容器,它只适用于第一次部署。

原因:javax.naming.NameNotFoundException:无法解析“jdbc.payment”。解决了'jdbc';其余名称“付款”

具有相同名称并附加到管理服务器的数据源。

我使用 docker 镜像:store/oracle/weblogic:12.2.1.4-dev 和环境变量 PRODUCTION_MODE=dev

更新:如果我从服务器上断开数据源然后重新连接它然后开始战争,它再次成功运行一次......

更新:切换到 weblogic 的本地安装不再 dockerized 并且行为仍然发生

【问题讨论】:

    标签: java spring jndi weblogic12c


    【解决方案1】:

    这是春季问题...与weblogic无关。

    在战争关闭中,Spring 从服务器 JNDI 树中删除了数据源,但是数据源仍然在服务器上启动并运行。 将数据源重新创建甚至重新附加到目标服务器的操作,将其再次添加到 JNDI 树中。

    解决这个问题的办法是防止spring调用数据源bean的destroy方法

    @Primary
    @Bean(name = "dataSource",destroyMethod = "")
    @Profile("weblogic")
    public DataSource dataSourceWeblogic() throws NamingException {
    
            JndiTemplate jndiTemplate = new JndiTemplate();
            InitialContext ctx = (InitialContext) jndiTemplate.getContext();
            return  (javax.sql.DataSource) ctx.lookup(jndi);
    }
    

    【讨论】:

      猜你喜欢
      • 2014-10-05
      • 1970-01-01
      • 2023-02-04
      • 1970-01-01
      • 2018-03-09
      • 2021-06-04
      • 2016-09-20
      • 2019-03-27
      • 1970-01-01
      相关资源
      最近更新 更多