UnsupportedOperationException: L'application doit fournir des connexions JDBC
Si je n'ai pas de régler quoi que ce soit par programme et il suffit d'appeler Configuration configuration = new Configuration().configure();
et utiliser la mise en veille prolongée.propriétés (ci-dessous), tout fonctionne, tout simplement génial. Dès que j'essaie de fournir un nom d'utilisateur, mot de passe et l'url de connexion par programmation, je reçois un étrange Exceptions, faisant allusion à la hbm fichier. Ce qui me manque ?
Cela Fonctionne
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://myEC2/mCruiseOnServerDB?autoReconnect=true&failOverReadOnly=false&maxReconnects=10
hsqldb.write_delay_millis=0
shutdown=true
hibernate.connection.username=root
hibernate.connection.password=mypwd
hibernate.connection.pool_size=2
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
hibernate.c3p0.idle_test_period=300
hibernate.c3p0.timeout=120
Comme par @Kshitij recommandation. Faire un mode mixte.
La mise en veille prolongée.propriétés est maintenant
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hsqldb.write_delay_millis=0
shutdown=true
hibernate.connection.pool_size=2
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
Le Code
String connection = "jdbc:mysql://"
+ Globals.DBSERVER
+ "/mCruiseOnServerDB?autoReconnect=true&failOverReadOnly=false&maxReconnects=10";
Configuration configuration = new Configuration()
.setProperty("hibernate.connection.url", connection)
.setProperty("hibernate.connection.username", Globals.DB_USER_NAME)
.setProperty("hibernate.connection.password", Globals.DB_PASSWORD);
configuration.configure();
sessionFactory = configuration
.buildSessionFactory(new ServiceRegistryBuilder()
.buildServiceRegistry());
L'Exception
Maintenant, je reçois cette exception, un pour chaque mapping resource
entrée dans ma hbm fichier.
11 May 2013 08:46:31,969 1300 [main] FATAL ReadOnlyOperations - Have chosen to ignore this runtime exception java.lang.UnsupportedOperationException: The application must supply JDBC connections, may be fatal, examine this carefully
11 May 2013 08:46:31,969 1300 [main] FATAL ReadOnlyOperations - java.lang.UnsupportedOperationException: The application must supply JDBC connections
Résumé
Si j'utilise tous les hibernate.properties
et aucun code (no .setProperty dans le code) tout fonctionne très bien. Si j'utilise la partie hibernate.properties
et une partie de code (serveur, nom d'utilisateur, mot de passe) j'ai des erreurs dans le hbm pour chaque propriété mapping.
J'ai besoin de quelqu'un pour m'aider à comprendre ce que je suis absent. Il devrait être quelque chose de vraiment basique.
OriginalL'auteur Siddharth | 2013-05-10
Vous devez vous connecter pour publier un commentaire.
Wow, juste réglé le problème.
J'ai été absent de la
Apprentissages
hibernate.connection.url
et PASconnection.url
si vous utilisezhibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
WARN Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/instead. Refer to Hibernate 3.6 Migration Guide!
, vous devez remplacerhttp://www.hibernate.org/dtd/
dans le cfg.xml et tous les hbm fichiers trop. N'oubliez pas de teh hbm fichiers, eux aussi utilisent la même DTD.Enfin, visée à la présente, pour fixer cette. Le dernier conseil par
Bill Gorder
est superbe.le mélange, certains dans le fichier de propriétés, et certains en java
Moi aussi j'avais le même problème .. je ne peux pas trouver la classe
ServiceRegistryBuilder()
la version d'HIbernate cela va fonctionner . Je suis de l'utilisation d'Hibernate 3.xJe suis à l'aide de 4.x..
OriginalL'auteur Siddharth
Une autre façon sera en charge de toutes les propriétés de
hibernate.cfg.xml
ouhibernate.properties
et remplacer uniquement celle qui est requise par programmation.10 May 2013 14:20:34,238 1196 [main] FATAL ReadOnlyOperations - Have chosen to ignore this runtime exception java.lang.UnsupportedOperationException: The application must supply JDBC connections, may be fatal, examine this carefully
1 pour chaque hbm fichier.Fondamentalement non de la hbm fichier à charger après j'ai fait votre changement. Donc c'est toujours pas terminée.
ont u jeu
hibernate.connection.url
? à partir de votre code modifié, il ne semble pas u ont mis que de la programmation.Oui, je l'ai fait, juste oublié de le mentionner.
aussi je vois u ont fait
configuration.configure();
après de définir les propriétés. U besoin de le faire avant setProperty. Voir comment je l'ai fait dans l'exemple que j'ai montré ci-dessus.OriginalL'auteur Kshitij
Même si vous réglez les paramètres de connexion (URL, nom d'utilisateur, mots de passe) par programmation, vous devriez assurez-vous que les autres conditions qui force l'utilisation de connexions JDBC au démarrage de l'application ne sont pas présents. J'ai identifié au moins deux:
Réglage de la mise en veille prolongée.hbm2ddl.auto de la propriété à une valeur autre que "none" forces d'une connexion à la DB au démarrage; pour valider, créer ou mettre à jour la DB schéma...
Si vous utilisez C3P0 propriétés dans votre hibernate.cfg.xml ou persistence.xml cette force également la mise en commun gestionnaire d'essayer trop d'acquérir des connexions à partir de la DB au démarrage
Dans tous ces cas, depuis que vous avez forcé les connexions à la bd sans également configurer les paramètres de connexion, vous recevrez les différentes erreurs (comme celle qui vous fait face)...
Afin de corriger ces erreurs, soit désactiver la propriété (mise en veille prolongée.hbm2ddl) ou de l'ensemble des autres propriétés de la même manière (mise en veille prolongée.c3p0.*)
OriginalL'auteur arpadf