繁体   English   中英

Weblogic 异常:javax.naming.NameNotFoundException:无法解析“jdbc.payment”。 解决了'jdbc'; 剩余名称“付款”

[英]Weblogic exception : javax.naming.NameNotFoundException: Unable to resolve 'jdbc.payment'. Resolved 'jdbc'; remaining name 'payment'

当我从 Spring Boot 应用程序中的 weblogic 中查找 jndi 数据源时,我遇到了这个异常……只有在一次成功部署之后……我的意思是从第二次部署开始。如果我重新启动容器,它只会在第一次部署时正常工作。

引起:javax.naming.NameNotFoundException:无法解析“jdbc.payment”。 解决了'jdbc'; 剩余名称“付款”

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

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

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

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

这是一个春季问题......与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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM