我试图建立一个JDBC DataSource到Tomcat 7 Ubuntu下的12.x,所以我增加了以下内容context.xml文件:
<Resource name="jdbc/myDS" auth="Container" type="javax.sql.DataSource"
maxActive="5" maxIdle="2" maxWait="5000"
driverClassName="org.postgresql.Driver" username="usr" password="***" url="jdbc:postgresql://localhost:5432/db" />
很显然,使用权和测试的数据库用户ID和密码。 当我重新启动Tomcat,我得到这个错误:
Feb 05, 2013 1:10:01 PM org.apache.catalina.core.NamingContextListener addResource
WARNING: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]
我用Google搜索,发现了JDBC驱动程序必须被复制到$ CATALINA_HOME / lib文件夹,所以我复制PostgreSQL的-9.2-1000.jdbc4.jar到/ usr /共享/ tomcat7 / lib下,但它并没有帮助。 我试着将文件复制到其他位置,具有相同的结果。
另一种尝试是改变Tomcat的dbcp.jar符号链接在/ usr /股从../../java/tomcat-dbcp-7.0.30.jar / tomcat7 / lib添加到../../java/tomcat- dbcp.jar。 唯一的变化是我唯一的一个警告而不是四个,但数据源也不起作用。
Java版本:
jdoe@sever:~$ java -version
java version "1.7.0_09"
OpenJDK Runtime Environment (IcedTea7 2.3.4) (7u9-2.3.4-0ubuntu1.12.10.1)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)
任何提示,非常欢迎。
干杯。
图书馆tomcat-dbcp-7.0.30.jar
从库已损坏。
其替换为:
sudo wget -O /usr/share/java/tomcat-dbcp-7.0.30.jar http://search.maven.org/remotecontent?filepath=org/apache/tomcat/tomcat-dbcp/7.0.30/tomcat-dbcp-7.0.30.jar
原因是在Tomcat7 Ubuntu的编译/包装过程中的问题。 如果我理解正确的问题,Apache生成二进制文件的tomcat-dbcp.jar,而Ubuntu的只是从源代码构建软件包。 Ubuntu项目最终需要改变Java包名,这往往会干扰我们这些可怜的用户。 血淋淋的细节可以在发现Ubuntu的问题清单 。
我找到了解决办法是,当我定义资源命名数据源工厂。 在一个案例中,我有一个包含META-INF / context.xml文件:
<Resource name="jdbc/myDataSource"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/myDatabase"
username="username" password="password"
validationQuery="SELECT COUNT(*) FROM MY_TABLE"
factory="org.apache.commons.dbcp.BasicDataSourceFactory" />
关键的要素是“工厂”的声明,它覆盖了内置的默认。
在我们的生产机器,该资源在server.xml文件的GlobalNamingResources元素定义。 指定的工厂只需要在Ubuntu系统。
我对CentOS的同样的问题。 我被从下载网站的tomcat的新副本arounbd这一点,并上传Tomcat的dbcp.jar我的在线服务器lib下,重启服务器:)
我有同样的问题在Fedora 20和Tomcat 7.0.55。 我在文件的路径和文件名7.0.55取代7.0.30,这为我工作。 不知道为什么,但该文件已被完全从YUM缺少安装Tomcat的7不能使用数据库没有它。
这做到了。
确保如果Tomcat的DBCP-7.0.30.jar文件没有下面的大小,那么它可能已损坏,您可能需要通过sudo wget命令上面来取代它。
-rw-R - R-- 1根根235411 2013年5月1日Tomcat的DBCP-7.0.30.jar
lrwxrwxrwx 1根根部22 2013年1月10日Tomcat的dbcp.jar - > Tomcat的DBCP-7.0.30.jar
文章来源: Ubuntu Tomcat7 java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory