Tomcat常见问题之无法加载资源工厂类dbcp

作者&投稿:王玉 (若有异议请与网页底部的电邮联系)
~ 前两天公司新开发了一个项目,使用的Spring Boot2.0,而原有的项目部署在Tomcat 7之上,所以需要升级一下Tomcat的版本,在安装新的Tomcat 8,并将原有的配置复制到Tomcat 8之后,启动服务会发现一直报一个错误:

看到这个报错 ClassNotFoundException:org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory ,第一反应自然是包没有加载进来,或者说没有读取到这个dbcp这个包,去Tomcat 8安装目录下的lib目录下查看,实际上tomcat-dbcp.jar这个包是存在的,那为什么在Tomcat 7里面可以加载这个jar包,在Tomcat 8就不行了呢?

此为Tomcat 8的lib目录:

我们来看一下Tomcat 7关于javax.sql.DataSource的指定方式为org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory。
Apache Tomcat 7配置参考 。

在原来Tomcat 7的conf目录下context.xml文件中是这样进行配置的:

接着来看一下Tomcat 8关于javax.sql.DataSource的指定方式为org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory。
Apache Tomcat 8配置参考 。

到这里终于破案了,在Tomcat 7和Tomcat 8之间更改了默认工厂的名称。一些属性名称也发生了变化。所以在升级Tomcat的时候有很多细节地方需要注意,将这里改为Tomcat 8的指定方式后,重启Tomcat,该jar包成功加载。

同时需注意Tomcat 7中配置context.xml时指定的最大线程,最大等待时间等参数名,在Tomcat 8中均有相应的调整,例如maxActive需改写为maxTotal,maxWait需改写为maxWaitMillis,当然,还有其他属性,在这里不做赘述,在Tomcat启动日志中会以warning的形式将过时的参数抛出,届时按warning提示修改即可。

更改后的Tomcat 8的conf目录下context.xml的配置:

至于网上描述的其他方式,例如引入commons-dbcp2.jar包、commons-pool2.jar包等,笔者通过更改相应的context.xml中的factory属性为org.apache.commons.dbcp.BasicDataSourceFactory仍未成功,可能也是指定的引用路径不对,在此不做深究。

欢迎访问我的个人博客: Lemon - 万事顺遂


outofmemoryerror怎么解决
若是windows服务器还能够在系统环境变量中设置。使用tomcat发布sprint+struts+hibernate架构的程序时可能会很容易发生这种内存溢出的错误。可以使用上述的方法,基本上就能够解决问题。2.第二种方法是清理应用程序中web-inf\/lib下的jar,若是tomcat部署了多个应用,并且多个应用都使用了相同的jar,可以选择将...

nginx tomcat 502 bad gateway问题怎么解决
参考老外写的修 改办法增加了缓冲区容量大小设置,502问题彻底解决。后来系统管理员又对参数做了调整只保留了2个设置参数:client head buffer,fastcgi buffer size。三、request_terminate_timeout如果主要是在一些post或者数据库操作的时候出现502这种情况,而不是在静态页面操作中常见,那么可以查看一下php-fpm.conf设置...

Tomcat 怎样防止跨站请求伪造
在Tomcat中,默认提供了一个防范CSRF的好工具: CSRF Prevention Filter 。Tomcat默认提供了各类的Filter,处理不同的场景和需求。像我们前面介绍过的处理编码的 Tomcat自带的设置编码Filter , 还有进行跨域处理的 Tomcat与跨域问题 等等。今天介绍的CSRF Prevention Filter也是其中的一个。整个Filter的工作流程...

liunx tomcat(java new Date)服务时间比系统时间慢8个小时,刚起完服务...
不会是ntpdate 同步时间自动修改了吧?tomcat 的时间变化,那有可能是程序代码出问题了。有代码误调用了 TimeZone.setDefault , 这个是比较常见的,特别是有格式化时间的代码处。格外小心,仔细查查吧,我以前被这个坑过。import java.util.Date;import java.util.TimeZone;public class Test {public ...

JBoss、Geronimo及Tomcat比较分析
.支持JSF JSF(Java Server Faces)是一种在Java EE应用部署的组件式架构 提供基本的Web开发的用户界面 与请求驱动的MVC(Model View Controller)的架构不同的是 JSF采用了组件驱动的模式 就目前的JSF 而言 JBoss 及Geronimo 都有很好的支持 而运行在Tomcat 时有不少的问题待解决 .支持客户化插件 客户化插件支持 ...

请问TOMCAT默认内存是多大,16G物理内存应该给TOMCAT分配多大比较合适...
其次是整体性能,如今我们最常用的配置为i5+1050Ti+8G的组合,在日常使用中可以完美运行任何一款游戏。而想要体验更精致的画面,内存可以升级到16G(8+8)。在游戏测评网站中,16G内存条已经算是奢侈享受。然后就是主板问题,上文也提到过主板最高支持32G内存条库充,但是卡槽也是需要值得注意的。大板卡...

如何在tomcat5下面配置ssl和tls协议
这里有一个安装SSL时常见的问题列表,和它们的解决方法: 1.在日志文件中出现"java.security.NoSuchAlgorithmException"的错误。 JVM没找到JSSE JAR文件。请照"下载和安装JSSE"节的指导做。 2.Tomcat启动时,出现"java.io.FileNotFoundException: {some-directory}\/{some-file} not found"的错误。 一个可能的解释是...

在eclipse helios j2ee版本中导入jar包,通过tomcat部署到tomcat的webap...
这个问题很常见,这种导入是引用,并没有真正复制到相应目录下,你换台电脑,程序就会出错的,他只是给你一个简单的多程序共用jar包的方便,你要是打包的话,必须把jar包复制到相应目录下才行,导入的时候就有一个选项了,问是否要复制,平时开发你这么用就行,不影响,只要离开这台电脑,你就要开始...

一次WebSphere类加载问题的错误诊断
开发人员使用开源项目在Tomcat上进行开发 然后在生产环境中使用WebSphere应用服务器 target=_blank>服务器(WAS)部署时 有时会遇到在Tomcat上开发的应用在WAS上不能运行的情况 其中相当一部分错误是因为类加载的问题 有一次接到用户电话 反映使用JSF开发的应用 在WAS上不能正常运行 到用户现场 发现开发...

OpenKM 文档管理服务器部署与管理
sql文件,重启OpenKM并选择简体中文界面。3.0 常见问题解答遇到端口冲突,需修改\/application\/tomcat\/conf\/server.xml以解决问题。4.0 安装插件扩展安装预览插件swftool:cd \/application\/tools\/ && wget ... && tar ... && configure && make && make install && clean && mv ......

乌兰察布盟13937045641: 为什么tomcat可以正常启动但是加载不了项目? -
屈环非那: 你加载web.xml里面的配置文件没有加载上,具体看下tomcat的安装文件下webapps里有没有这个项目文件,如果有,进入项目看又没有web-inf下classes里有没有相应编译好的class文件

乌兰察布盟13937045641: tomcat7一闪而过,无法加载启动tomcat,java环境配置无问题 -
屈环非那: 出现这种问题,只有两种可能:a.JDK环境没有安装好;b,Tomcat启动端口已被占用1.首先你得确保你的Java开发 运行环境JDK安装无误:在黑窗口(window+R 在输入cmd)里输入分别输入javac 和 java 有相应的信息,说明JDK环境安装成功...

乌兰察布盟13937045641: tomcat 能正常启动,但项目无法加载? -
屈环非那: 您好,这样的:工程放在webapps下面了么?tomcat有没有另外设置项目路径?web.xml有问题么?右击tomcat服务器(就是屏幕下方的server)上的阿德add and remove 你添加到服务器容器了没有.tomcat目录下面有个webapps,就是放你的项目的!tomcat 下面的conf/Context是设置其他路径的.tomcat每个项目下面都有个WEB-INF/web.xml,是标志每个项目的启动信息的.你检查一下.

乌兰察布盟13937045641: 手动启动tomcat错误: 找不到或无法加载主类 -
屈环非那: 手动启动cmd中进入 到bin目录下catalina.bat run 手工启动tomcat可以看到详细信息

乌兰察布盟13937045641: tomcat无法启动 -
屈环非那: 常见Tomcat无法启动故障:1.端口被占用(使用Fport.exe查看本机上哪些端口被哪些程序使用了).2.tomcat的运行需要JVM的支持,startup.bat启动的时候,会看系统有没有配java_home环境变量.如果没配,启动的时候界面很快会自动关闭...

乌兰察布盟13937045641: tomcat下的文件运行不了 -
屈环非那: 这肯可能就是你的jsp工程有问题, 在tomcat启动的时候导入工程失败. 具体你可以看看tomcat的启动日志. 如果我判定的没错,启动的时候肯定有异常!还有个原因,就是你的jsp工程根本就不是一个满足标准的工程!

乌兰察布盟13937045641: tomcat可以正常启动,但是不能访问即页面报404错误怎么办
屈环非那: Tomcat的404问题是刚开始从事JAVA WEB开发的工程师经常会碰到的问题. 404是现象,导致这个问题的原因有很多种,我把常见的原因做了个整理,如果你以后碰到404问题,可以按照这个思路逐一排查,可以有很大的几率找到真正的原因...

乌兰察布盟13937045641: tomcat正常启动,项目servlet - api.jar没有加载 -
屈环非那: 不是的.你checkout出来之后,并不是没有servlet-api.jar这个包.而是因为你的tomcat路径和服务器的tomcat路径不一样,所以才会这样.解决办法就是在构建路径中手动添加你本地的servlet-api.jar包,但是不用commit到svn上去就好了.

乌兰察布盟13937045641: 运行了Tomcat6.exe,显示“数据库加载失败”什么原因??急! -
屈环非那: 我之前也用过SQL Server 2000,光使用jdbc连接,下载了jar包,这样 建议使用odbc-jdbc连接方式,先配置好数据源,这样来连接.JDBC-ODBC桥的方法,具体操作如下,希望对你有所帮助.1,新建一个数据库,为student吧,再在其中新建...

乌兰察布盟13937045641: tomcat为什么加载不出来HTML文件 -
屈环非那: 找不到路径,要么是你路径错了,要么是html文件放错位置了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网