Tomcat7:7.0.30-0ubuntu1.1
Tomcat 7には、jarsファイルcommons-dbcp.jarおよびTomcat-dbcp.jarがありますが、Tomcat-dbcp.jarでは、org.Apache.Tomcat .dbcp。BasicDataSourceFactoryクラスのファイルです。 Apache.Tomcat .dbcp.dbcp。BasicDataSourceFactoryを探しています。
根本原因
javax.naming.NamingException: Could not create resource factory instance [Root exception is Java.lang.ClassNotFoundException: org.Apache.Tomcat.dbcp.dbcp.BasicDataSourceFactory]
org.Apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.Java:121)
javax.naming.spi.NamingManager.getObjectInstance(NamingManager.Java:321)
org.Apache.naming.NamingContext.lookup(NamingContext.Java:843)
org.Apache.naming.NamingContext.lookup(NamingContext.Java:154)
org.Apache.naming.NamingContext.lookup(NamingContext.Java:831)
org.Apache.naming.NamingContext.lookup(NamingContext.Java:168)
org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:472)
org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:99)
org.Apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.Java:929)
org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:407)
org.Apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.Java:1002)
org.Apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.Java:585)
org.Apache.Tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.Java:310)
Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1145)
Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:615)
Java.lang.Thread.run(Thread.Java:722)
解決策は、Tomcat 7のデフォルトファクトリの代わりにfactory="org.Apache.commons.dbcp.BasicDataSourceFactory"
を使用するようにconf/context.xmlのリソースタグを変更することにより、 StackOverflowでこれと同じ問題 に与えられます。この問題の原因を確認できます。
リソースタグは次のようになります(参照された回答から取得)。
<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" />
Tomcat 7のデフォルトのDataSourceファクトリはorg.Apache.Tomcat.dbcp.dbcp.BasicDataSourceFactoryです。これは、Debianのメンテナーが配布しないjarファイルに含まれています。
Tomcat 7には、代わりに使用できる別の接続プール実装が含まれていますが、デフォルトではありません。
org.Apache.Tomcat.jdbc.pool.DataSourceFactory
デフォルトのファクトリをこれに変更して、現在のディストリビューションにすでに含まれているため、この問題を解決できます。
Ubuntuバージョン:12.10
Tomcat7:7.0.30-0ubuntu1.1