web-dev-qa-db-ja.com

Tomcat7 / Ubuntu 12.10でクラスorg.Apache.Tomcat.dbcp.dbcp.BasicDataSourceFactoryが見つかりませんか? (可能性のあるバグ)

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)
4
Joe

解決策は、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" />
6
Mohamad Fakih

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

3
Joe