web-dev-qa-db-fra.com

La connexion d'une base de données MySQL au chemin de classe Glassfish n'est pas définie ou le nom de classe est incorrect

J'échange une base de données derby contre une base de données MySQL. J'avais tout fonctionné avant, mais après ce que je pensais être la bonne configuration, je reçois l'erreur:

Provoqué par: javax.resource.ResourceException: le nom de classe est incorrect ou le chemin de classe n'est pas défini pour: com.mysql.jdbc.jdbc2.optional.MysqlDataSource

Sortie d'erreur complète depuis la console:

Caused by: javax.resource.ResourceException: Class name is wrong or classpath is not set for : com.mysql.jdbc.jdbc2.optional.MysqlDataSource
at com.Sun.gjc.common.DataSourceObjectBuilder.getDataSourceObject(DataSourceObjectBuilder.Java:292)
at com.Sun.gjc.common.DataSourceObjectBuilder.constructDataSourceObject(DataSourceObjectBuilder.Java:114)
at com.Sun.gjc.spi.ManagedConnectionFactory.getDataSource(ManagedConnectionFactory.Java:1292)
at com.Sun.gjc.spi.DSManagedConnectionFactory.getDataSource(DSManagedConnectionFactory.Java:148)
at com.Sun.gjc.spi.DSManagedConnectionFactory.createManagedConnection(DSManagedConnectionFactory.Java:101)
at com.Sun.enterprise.resource.allocator.LocalTxConnectorAllocator.createResource(LocalTxConnectorAllocator.Java:87)

J'ai revérifié certains des noms, le pool de connexions et d'autres ressources. J'ai également ajouté le pilote MySQL .jars à la bibliothèque de glassfish dans les deux projets. La base de données fonctionnait certainement correctement via Eclipse car j'ai pu afficher les tables et afficher les ressources dans le contexte de base de données d'Eclipse. Je sais donc qu'au moins CES pilotes fonctionnent correctement. Le fichier persistence.xml semble également bon. il fait référence à la référence jndi jdbc/mydatabase comme il se doit et JTA par défaut est sélectionné comme type de manament.

Quelqu'un a-t-il une autre suggestion? Je vous remercie

23
Randnum

J'ai également ajouté le pilote MySQL .jars à la bibliothèque de glassfish dans les deux projets.

Cela n'a apparemment pas été bien fait. Le JAR doit aller dans /glassfish/domains/[domainname]/lib/ext dossier de l'installation Glassfish où [domainname] par défaut est domain1. Vous pouvez et ne devez pas le configurer du côté Eclipse.

37
BalusC

On dirait que je réponds très tard, mais cependant les personnes qui se réfèrent à ce fil peuvent trouver les informations suivantes utiles. Je le poste donc ici:

  1. Téléchargez le Jar du connecteur depuis http://dev.mysql.com/downloads/connector/j/5.0.html
  2. décompressez le pack et copiez mysql-connector-Java-verno-bin.jar
  3. après le même dans le dossier [Répertoire d'installation de GlassFish]/domaines/[nom de domaine]/lib
  4. redémarrez votre domaine et envoyez une requête ping pour vérifier votre connexion dans les pools de connexions JDBC

Voilà. Si votre MySql est en cours d'exécution, il exécutera une commande ping avec succès sur la base de données

23
Ram

J'ai copié le fichier jar dans $glassfish_install_folder\glassfish\lib, après cela a fonctionné. J'utilise glassfish 4.0 .

Vérifiez cela lien d'Oracle.

5
wei

J'ai rencontré ce problème en 2018 et je voudrais noter que si vous utilisez glassfish 4 (le courant est 5), il semble que vous devez utiliser la version Connector/J 5.1.47 pour que cela fonctionne. Si vous utilisez la version actuelle (Connector/J 8.0.13), l'exception mentionnée dans la question d'origine continue à apparaître, peu importe où vous placez le fichier .jar.

Avec Connector/J 5.1.47, cela fonctionne parfaitement.

2
Mercious