web-dev-qa-db-fra.com

Ubuntu Tomcat7 Java.lang.ClassNotFoundException: org.Apache.Tomcat.dbcp.dbcp.BasicDataSourceFactory

J'essaie de configurer une source de données JDBC dans Tomcat 7 sous Ubuntu 12.X. J'ai donc ajouté ce qui suit au fichier 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" />

Évidemment, en utilisant l'ID utilisateur et le mot de passe de base de données corrects et testés. Lorsque je redémarre Tomcat, je reçois le message d'erreur suivant:

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]

J'ai cherché sur Google et découvert que le pilote JDBC devait être copié dans le dossier $ CATALINA_HOME/lib. . J'ai essayé de copier le fichier à d'autres endroits, avec les mêmes résultats.

Une autre tentative a été de remplacer le lien symbolique Tomcat-dbcp.jar dans/usr/share/Tomcat7/lib de ../../Java/Tomcat-dbcp-7.0.30.jar par dbcp.jar. Le seul changement est que je n'ai reçu qu'un seul avertissement au lieu de quatre, mais la source de données ne fonctionne pas non plus.

Version 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)

Toute allusion, très bien accueilli.

À votre santé.

25
Edo

La bibliothèque Tomcat-dbcp-7.0.30.jar des référentiels est corrompue.

Remplacez-le par: 

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

35
amra

La cause est un problème dans le processus de génération/package Ubuntu pour Tomcat7. Si je comprends bien le problème, Apache construit Tomcat-dbcp.jar à partir de fichiers binaires, tandis qu'Ubuntu construit des packages uniquement à partir des sources. Le projet Ubuntu finit par avoir besoin de changer le nom du paquet Java, ce qui a tendance à casser des choses pour nous, les utilisateurs pauvres. Les détails sanglants se trouvent dans la liste des problèmes Ubuntu .

La solution que j'ai trouvée consiste à nommer la fabrique de sources de données lorsque je définis la ressource. Dans un cas, j'ai un fichier META-INF/context.xml qui contient:

<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" />

L'élément critique est la déclaration "factory", qui remplace la valeur par défaut intégrée.

Sur nos machines de production, la ressource est définie dans l'élément GlobalNamingResources du fichier server.xml. La spécification de la fabrique n'est nécessaire que sur les systèmes Ubuntu.

23
Steve

J'ai eu le même problème sur Fedora 20 avec Tomcat 7.0.55. J'ai remplacé le 7.0.30 par 7.0.55 dans le chemin et le nom du fichier, et cela a fonctionné pour moi. Vous ne savez pas pourquoi mais ce fichier était complètement absent de l'installation de YUM pour Tomcat 7. Vous ne pouvez pas utiliser une base de données sans elle.

1
Cory

j'ai eu le même problème sur CentOS. Je contourne cette situation en téléchargeant une nouvelle copie de Tomcat à partir du site et en téléchargeant Tomcat-dbcp.jar sur ma lib de serveur en ligne, redémarrez le serveur :)

1
Sameeh Harfoush

Cela l'a fait.

Assurez-vous que le fichier Tomcat-dbcp-7.0.30.jar n'a pas la taille requise, il est peut-être corrompu et vous devrez peut-être le remplacer par la commande Sudo wget ci-dessus.

-rw-r - r-- 1 racine racine 235411 1er mai 2013 Tomcat-dbcp-7.0.30.jar

lrwxrwxrwx 1 racine racine 22 janvier 10 2013 Tomcat-dbcp.jar -> Tomcat-dbcp-7.0.30.jar

0
Nabeel Hendow