Accès aux données à l'aide de JPA à l'intérieur du bundle

Pourquoi et quand exécuter cette tâche

L'accès aux données par le biais du JPA à l'intérieur du bundle suppose que vous travaillez dans un bundle qui est traité comme étant un module Java™ EE sur le serveur. C'est le cas par exemple d'un bundle d'applications Web OSGi qui comporte une facette JPA activée et contient des entités et la logique permettant d'accéder, de consommer et d'afficher des données à l'aide de JPA. Un autre exemple est un projet Web qui contient les entités JPA et la logique permettant de consommer des données à l'aide de l'API JPA qui est publiée dans une application OSGi plutôt que dans le cadre d'un déploiement EAR.

Vous devez configurer votre bundle OSGi et les sources de données pour WebSphere Application Server avant d'accéder aux unités de persistance JPA.

Conseil :

Assurez-vous que votre fichier de persistance JPA contient des références à une API JTA (Java Transaction API) et une source de données non JTA.

JPA dispose de deux éléments de transaction pour accéder à une source de données :
jta-data-source
Le modèle de ressources JTA (Java Transaction API) dépend des transactions globales. Il est typiquement utilisé dans le cadre d'une façade de sessions EJB (Enterprise JavaBeans). Cette configuration permet au bean session de contrôler les contextes de transaction et de sécurité, alors que l'API JPA gère les mappages de persistance. Dans ce cas, une fois accessible, l'application n'utilise pas l'interface EntityTransaction mais repose sur EntityManager enrôlée avec la transaction globale.
non-jta-data-source
L'élément de ressource non JTA est utilisé pour gérer une seule ressource en l'absence des transactions globales. L'élément de ressource non-JTA est typiquement utilisé dans le cadre d'une application Web ou d'un client d'application. L'application contrôle la transaction avec la source de données à l'aide de l'interface EntityTransaction.

Dans les fichiers persistence.xml d'une application OSGi, les éléments jta-data-source et non-jta-data-source accèdent aux sources de données par le biais d'une recherche JNDI (Java Naming and Directory Interface), une recherche JNDI sur le registre d'utilisateurs, ou via Blueprint.

Si les sources de données JTA et non JTA ne sont pas configurées dans le fichier persistence.xml, les sources de données JTA et non JTA par défaut configurées pour le serveur sont utilisées. Par défaut, les valeurs sont null. Certaines fonctions d'entité JPA nécessitent qu'une source de données non JTA soit spécifiée. Par exemple, la génération automatique de l'identité d'une entité.

Procédure

  1. Ajoutez des sources de données non JTA au fichier persistence.xml :
    1. Ouvrez le fichier persistence.xml dans l'éditeur.
    2. Dans la section Présentation, consultez la liste des composants et sélectionnez l'entité dont vous souhaitez afficher les détails.
    3. Dans la zone de source de données non JTA, indiquez le nom JNDI d'une source de données non JTA. Par exemple, osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/blogdbnojta).
  2. Ajoutez les sources de données JTA au fichier persistence.xml :
    1. Ouvrez le fichier persistence.xml dans l'éditeur.
    2. Dans la section Présentation, consultez la liste des composants et sélectionnez l'entité dont vous souhaitez afficher les détails.
    3. Dans la zone de source de données JTA, indiquez le nom JNDI d'une source de données JTA. Par exemple, osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/blogdb).
  3. Ajoutez un fournisseur JDBC à la console d'administration WebSphere Application Server :
    1. Accédez à la vue Serveurs.
    2. Cliquez avec le bouton droit sur l'instance de votre serveur et sélectionnez Démarrer.
    3. Cliquez avec le bouton droit de la souris sur l'instance de serveur et sélectionnez Administration > Exécuter la console d'administration pour ouvrir la console d'administration.
    4. Cliquez sur Ressources > JDBC > Fournisseurs JDBC.
    5. Cliquez sur Nouveau dans la page des fournisseurs JDBC. L'assistant de création d'une source de données s'affiche.
    6. Suivez les instructions dans l'assistant pour créer le fournisseur JDBC.
    7. Sauvegardez vos modifications.
  4. Ajoutez les définitions de source de données à la console d'administration WebSphere Application Server :
    1. Dans la console d'administration, cliquez sur Ressources > JDBC > Sources de données pour ouvrir la page Sources de données dans la console.
    2. Dans la page Sources de données, cliquez sur Nouveau pour créer une définition de source de données avec un nom JNDI défini sur la définition de connexion JTA spécifiée dans le fichier persistence.xml. Par exemple, jdbc/blogdb.
    3. Dans la page Sources de données, cliquez sur Nouveau pour créer une définition de source de données avec un nom JNDI défini sur la définition de connexion non JTA spécifiée dans le fichier persistence.xml. Par exemple, jdbc/blogdbnojta.
    4. Lors de la création de la source de données pour la connexion non JTA, cliquez sur la définition pour la connexion non JTA dans la page Sources de données de la console d'administration. La page Configuration s'ouvre.
    5. Dans la section Propriétés supplémentaires, cliquez sur Propriétés de la source de données WebSphere Application Server.
    6. Sélectionnez Source de données non transactionnelle. Dans le serveur d'application, l'utilisation de l'élément <non-jta-data-source> requiert une configuration spéciale pour une source de données non-transactionnel. Les sources de données configurées pour le serveur d'applications ne fonctionnent pas comme élément <non-jta-data-source> car toutes les sources de données configurées par le serveur d'applications sont automatiquement enrôlées dans le contexte transactionnel en cours. Pour éviter cet enrôlement automatique, ajoutez une propriété personnalisée de source de données nonTransactionalDataSource=true.

Résultats

Le fichier persistence.xml et WebSphere Application Server sont configurés pour accéder à JPA dans un bundle OSGi.
Icône indiquant le type de rubrique Rubrique de tâche
Dispositions pour les centres de documentation | Commentaires en retour

Icône d'horodatage Dernière mise à jour: May 29, 2014 10:11

Nom de fichier : taccessjpainbundle.html