2015-10-19 2 views
0

Comment devez-vous configurer le projet JPA (EAR) et le serveur Web Sphere Application (8.5.5) pour que OpenJPA crée des tables lors du démarrage de l'EAR le serveur?Création de tables JPA dans Derby incorporé dans Web Sphere 8.5.5

J'ai créé une source de données (nom: userregister, JNDI: jdbc/userregister) dans WAS en utilisant les paramètres par défaut.

dans META-INF/persistence.xml J'ai ce qui suit. Si je sélectionne le fichier persistence.xml en effectuant un clic droit sur eclipse, je peux générer la liste des classes dans le fichier. Bien que je ne sois pas capable de créer manuellement les classes dans la db => je suppose que cela devrait arriver au déploiement de toute façon.

La base de données est créée et dans le journal est entrées JPA:

The Java Persistence API (JPA) component is initializing. 
The com.ibm.websphere.persistence.PersistenceProviderImpl class is loaded as the default Java Persistence API (JPA) provider. 
The Java Persistence API (JPA) component has initialized. 
... 
The Java Persistence API (JPA) component is starting. 
The Java Persistence API (JPA) component has started. 
... 
OpenJPA dynamically loaded a validation provider. 

regardant la sortie du journal, devrait-il y avoir d'autres propriétés depuis le fournisseur spécifique à IBM est utilisé lorsque je configure en fait les réglages de OpenJPA? (Les deux devraient être trouvés à partir de WAS par défaut si j'ai bien compris)

Note: J'ai remarqué que si je changeais le nom JNDI de persistence.xml en quelque chose de non valide, je n'avais aucune erreur. J'essayais de vérifier que la JPA se connecte réellement avec la source de données. À quoi s'attendre et/ou ce qui est peut-être faux? Par le journal, l'APP semble démarrer.

+0

Obtient: "Si aucun fournisseur JPA n'est configuré dans l'élément du fichier persistence.xml dans un module Enterprise JavaBeans (EJB), le fournisseur JPA par défaut actuellement configuré pour ce serveur est utilisé." Si j'omets le persistence.xml il n'y a pas d'entrées JPA dans le journal, mais quand il est présent, il semble que le fichier est traité comme "vide"? –

+0

Sélectionnez le fournisseur JPA par défaut dans la liste des fournisseurs inclus avec le produit. Ouvrez la console d'administration. Cliquez sur Serveurs> Serveurs d'applications Sélectionnez un serveur. Cliquez sur Services de conteneur> Paramètres de l'API de persistance Java par défaut Sélectionner Sélectionnez un fournisseur de persistance par défaut inclus avec WebSphere Application Server. Cliquez sur le curseur et sélectionnez dans la liste. Cliquez sur Appliquer et enregistrez la configuration. ... Le fournisseur par défaut a été modifié, mais le problème persiste. –

+0

La propriété '' devrait suffire. Les tables seront créées lors de la première requête à la base de données. Quel genre d'erreurs voyez-vous, car il n'y en a aucune dans le journal que vous avez joint. – Gas

Répondre

0

Tous les problèmes (probablement) peuvent avoir été causés par de mauvais réglages du projet (oreille). Lorsque le projet d'oreille contenant cette JPA a été utilisé comme dépendance, il a empêché le projet principal de fonctionner correctement. Donc, même s'il y avait une sortie de journal à propos de JPA reconnue correctement, elle n'a jamais été aussi loin (en fait, elle utilisait la base de données), de sorte qu'elle aurait pu faire n'importe quoi. Chose étrange, il n'y a jamais rien dans les journaux sur le vrai problème et même le projet se déploie correctement (pas d'erreurs/avertissements dans le journal) sur WAS, mais se bloque après la page de connexion (même si aucun des éléments JPA n'a été utilisé Tout s'est passé juste au moment de la dépendance).

J'ai changé le fournisseur en EclipseLink (+ options en conséquence) ce qui m'a aidé à créer les classes manuellement via Eclipse. J'ai également modifié les paramètres du projet (trop pour décrire ici, ils ont été copiés à l'origine d'un autre projet), ce qui a permis au module de fonctionner correctement lorsqu'il est utilisé comme dépendance dans le projet principal.

Je ferai peut-être plus tard des tests supplémentaires pour voir si l'OpenJPA aurait aussi fonctionné, mais pour l'instant il va se contenter de l'EclipseLink.

Ce n'est pas vraiment une réponse car on ne peut pas identifier le problème exact. Il n'y a pas de problème avec l'APP.