[英]Caused by: javax.naming.NameNotFoundException; remaining name 'env/jdbc/PSC'
[英]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.