web-dev-qa-db-fra.com

Impossible de trouver la classe org.Apache.Tomcat.dbcp.dbcp.BasicDataSourceFactory dans Tomcat7 / Ubuntu 12.10? (Bug possible)

Tomcat7: 7.0.30-0ubuntu1.1

Tomcat 7 contient les fichiers jar commons-dbcp.jar et Tomcat-dbcp.jar, mais dans Tomcat-dbcp.jar, il s’agit du fichier org.Apache.Tomcat .dbcp. BasicDataSourceFactory à la place d’org. Apache.Tomcat .dbcp.dbcp. BasicDataSourceFactory à la recherche de.

cause fondamentale

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

Une solution est donnée pour même problème sur StackOverflow en modifiant la balise de ressource dans conf/context.xml pour utiliser factory="org.Apache.commons.dbcp.BasicDataSourceFactory" au lieu de la fabrique par défaut de Tomcat 7. Vous pouvez voir la cause de ce problème.

La balise de ressource ressemblera à quelque chose (tirée de la réponse référencée):

<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

La fabrique de sources de données par défaut dans Tomcat 7 est org.Apache.Tomcat.dbcp.dbcp.BasicDataSourceFactory. Ceci est contenu dans un fichier jar que les responsables de Debian ne distribuent pas.

Tomcat 7 inclut désormais une autre implémentation de pool de connexions qui peut être utilisée à la place, mais ce n'est pas le cas par défaut.

org.Apache.Tomcat.jdbc.pool.DataSourceFactory

Nous pourrions changer l’usine par défaut en ce qu’elle est déjà incluse dans la distribution actuelle et ainsi résoudre ce problème.

Version Ubuntu: 12.10

Tomcat7: 7.0.30-0ubuntu1.1

3
Joe