la persistance d'exception sur la connexion de base de données à l'aide de glassfish
Je suis nouveau sur verre-fish & persistance et tout en essayant d'exécuter une requête sur la base de données MySQL dans ma machine, j'obtiens l'erreur suivante:
Exception [EclipseLink-4002] (Eclipse Services De Persistance - 2.3.2.v20111125-r10461): org.eclipse.la persistance.des exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Pas de base de données sélectionné
Code D'Erreur: 1046
avant de lancer le serveur j'ai fait en sorte que le serveur de configuration sont effectuées à l'aide de ce guide : site de mysql manuel pour l'utilisation du connecteur avec glassfish, et de la configuration de mon persistence.xml comme ceci:
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="StudentRecipieWebsite" transaction-type="RESOURCE_LOCAL">
<non-jta-data-source>jdbc/mySql</non-jta-data-source>
<class>il.musehunter.studentRecipes.dbModel.Image</class>
<class>il.musehunter.studentRecipes.dbModel.Ingrediant</class>
<class>il.musehunter.studentRecipes.dbModel.Recipe</class>
<class>il.musehunter.studentRecipes.dbModel.User</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/recipes_data"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="moshe1475"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="eclipselink.jdbc.batch-writing" value="JDBC"/>
</properties>
</persistence-unit>
Je suis vraiment nouveau à cela et n'avons pas la moindre idée de ce que je devrais faire de sorte que toute aide serait très appréciée.
edit:
l'ajout d'une partie de la domain.xml à partir de mon serveur glassfish :
<applications>
<application context-root="/StudentRecipieWebsite" location="${com.sun.aas.instanceRootURI}/applications/StudentRecipieWebsite/" name="StudentRecipieWebsite" object-type="user">
<property name="appLocation" value="${com.sun.aas.instanceRootURI}/applications/__internal/StudentRecipieWebsite/StudentRecipieWebsite.war"></property>
<property name="org.glassfish.ejb.container.application_unique_id" value="89812698949156864"></property>
<property name="org.glassfish.persistence.app_name_property" value="StudentRecipieWebsite"></property>
<property name="defaultAppName" value="StudentRecipieWebsite"></property>
<module name="StudentRecipieWebsite">
<engine sniffer="ejb"></engine>
<engine sniffer="security"></engine>
<engine sniffer="jpa"></engine>
<engine sniffer="web"></engine>
</module>
</application>
et:
<resources>
<jdbc-resource pool-name="__TimerPool" jndi-name="jdbc/__TimerPool" object-type="system-admin"></jdbc-resource>
<jdbc-resource pool-name="DerbyPool" jndi-name="jdbc/__default"></jdbc-resource>
<jdbc-connection-pool datasource-classname="org.apache.derby.jdbc.EmbeddedXADataSource" res-type="javax.sql.XADataSource" name="__TimerPool">
<property name="databaseName" value="${com.sun.aas.instanceRoot}/lib/databases/ejbtimer"></property>
<property name="connectionAttributes" value=";create=true"></property>
</jdbc-connection-pool>
<jdbc-connection-pool is-isolation-level-guaranteed="false" datasource-classname="org.apache.derby.jdbc.ClientDataSource" res-type="javax.sql.DataSource" name="DerbyPool">
<property name="PortNumber" value="1527"></property>
<property name="Password" value="APP"></property>
<property name="User" value="APP"></property>
<property name="serverName" value="localhost"></property>
<property name="DatabaseName" value="sun-appserv-samples"></property>
<property name="connectionAttributes" value=";create=true"></property>
</jdbc-connection-pool>
<jdbc-connection-pool datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" res-type="javax.sql.DataSource" name="MySQLConnPool">
<property name="portNumber" value="3306"></property>
<property name="databaseName" value="recipes_data"></property>
<property name="serverName" value="localhost"></property>
<property name="user" value="root"></property>
<property name="password" value="moshe1475"></property>
<property name="URL" value="jdbc:mysql://:3306/"></property>
</jdbc-connection-pool>
<jdbc-resource pool-name="MySQLConnPool" description="" jndi-name="jdbc/mySql"></jdbc-resource></resources>
OriginalL'auteur moshe | 2013-06-04
Vous devez vous connecter pour publier un commentaire.
Ma première hypothèse est que l'URL de connexion à la définition de source de données n'est pas tout à fait juste parce que "Pas de base de données sélectionné le Code d'Erreur: 1046" est une erreur MySQL.
Vous n'avez pas besoin de configurer la source de données dans
persistence.xml
si vous avez déjà défini une source de données dans votre application serveur (qui est la façon la plus courante). Vous pouvez poster à la définition de source de données à partir de votre$GLASSFISH_HOME/glassfish/domains/$GLASSFISH_DOMAIN/config/domain.xml
?C'est un exemple persistence.xml j'ai pris à partir d'un projet de mine (plus ou moins de Netbeans modèle) qui pourrait vous aider:
Bonne chance!
Répondre au commentaire:
Vous devez ajouter le nom de base de données à l'URL:
Qui devrait résoudre le problème.
Ajouté suggestion de ma réponse.
enfin!! 🙂 vous avez été correct sauf qu'au lieu de addeing propriété: jdbc:mysql://nameOrIPOfYourServerOrLocalhost:3306/nameOfYourDatabase j'ai dû ajouter l'url sans le jdbc préfixe comme ceci: nameOrIPOfYourServerOrLocalhost:3306/nameOfYourDatabase et cela a fonctionné! un grand merci
Pour info mon Glassfish 3.1 console d'administration dispose de deux propriétés différentes "Url" et "URL". Ne peux pas imaginer pourquoi cela a un sens, mais j'ai eu ce problème parce que j'avais uniquement modifié la première à inclure le nom de la base, et a dû changer tous les deux.
OriginalL'auteur Jens Birger Hahn