SpringBootJNDI数据源抛出java.lang.ClassNotFoundException:org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFact

SpringBootJNDI数据源抛出java.lang.ClassNotFoundException:org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFact,第1张

SpringBootJNDI数据源抛出java.lang.ClassNotFoundException:org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFact

我通过

factory
在我的
Resource
定义中设置属性解决了这个问题。
resource.setProperty("factory","org.apache.tomcat.jdbc.pool.DataSourceFactory");

@Beanpublic TomcatEmbeddedServletContainerFactory embeddedServletContainerFactory(){    return new TomcatEmbeddedServletContainerFactory() {        @Override        protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(     Tomcat tomcat) { tomcat.enableNaming(); return super.getTomcatEmbeddedServletContainer(tomcat);        }        @Override        protected void postProcessContext(Context context) { ContextResource resource = new ContextResource(); resource.setName("jdbc/myDataSource"); resource.setType(DataSource.class.getName()); resource.setProperty("factory", "org.apache.tomcat.jdbc.pool.DataSourceFactory"); resource.setProperty("driverClassName", "com.ibm.db2.jcc.DB2Driver"); resource.setProperty("url", "url"); resource.setProperty("username", "user"); resource.setProperty("password", "*****"); context.getNamingResources().addResource(resource);        }    };}

根据tomcat 8文档,应该通过查看

DataSource
type 自动推断db pool factory类型,并且以某种方式将其默认为DBCP
factory,并且该类不在我的类路径中。

我想可以通过使

tomcat-dbcp-**
jars可用来解决问题,但是我不确定如何使用Spring Boot进行 *** 作,即使使用Spring
Boot也可以做到这一点。

我觉得奇怪的是,Spring Boot没有将tomcat-dbcp依赖项作为启动程序POM的一部分,而是使用DBCP DataSource工厂作为默认工厂。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5675863.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存