IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

OSGI OPENJPA DATASOURCE Problème


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut OSGI OPENJPA DATASOURCE Problème
    Bonjour.

    j'ai une datasource définie dans OSGI par un bundle.
    Pour y accèder dans un autre bundle osgi je fait un lookup avec le nom "osgi:services/javax.sql.DataSource/(name=myds)"
    et j'obtiens bien un objet implémentant l'interface me permettant d'établir une connexion sur ma base et de m'en servir.

    j'en conclus que ma datasource est correctement configuré.

    dans un bundle je veux accèder à cette datasource via openJPA
    et là impossible de me connecter.

    j'ai fait un est junit hors osgi en définissant ma datasoure avec le nom "myds" tout ce passe parfaitement bien.
    mais sous osgi je ne peux pas nommer ma datasource "myds". J'ai donc toujours dans y unit changé le nom de ma datasource par "osgi:services/javax.sql.DataSource/(name=myds)" et j'ai mis la même chose dans ma persistance unit et là ça ne marche plus.
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    this.ic = new InitialContext();
    ...
    this.ds.setCreateDatabase("create");
    ic.bind("myds", this.ds);
    this.emf = Persistence.createEntityManagerFactory("unitname", System.getProperties());
    this.em = this.emf.createEntityManager();
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
    	<persistence-unit name="unitname" transaction-type="RESOURCE_LOCAL">
    		<non-jta-data-source>myds</non-jta-data-source>

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    this.ic = new InitialContext();
    ...
    this.ds.setCreateDatabase("create");
    ic.bind("osgi:services/javax.sql.DataSource/(name=myds)", this.ds);
    this.emf = Persistence.createEntityManagerFactory("unitname", System.getProperties());
    this.em = this.emf.createEntityManager();
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
    	<persistence-unit name="unitname" transaction-type="RESOURCE_LOCAL">
    		<non-jta-data-source>osgi:services/javax.sql.DataSource/(name=myds)</non-jta-data-source>
    sous junit j'obtient l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Could not open JPA EntityManager for transaction; nested exception is <openjpa-2.1.1-r422266:1148538 nonfatal general error> 
    org.apache.openjpa.persistence.PersistenceException: There were errors initializing your configuration: 
    <openjpa-2.1.1-r422266:1148538 fatal user error> 
    org.apache.openjpa.util.UserException: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property.
    et sous osgi l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     <openjpa-0.0.0-rnull fatal user error> org.apache.openjpa.persistence.ArgumentException: 
    Could not invoke the static newInstance method on the named factory class "<<openjpa-0.0.0-rnull fatal user error> 
    org.apache.openjpa.util.UserException: The named BrokerFactory "org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory" is not valid.>".
    pour résoudre le pb sous junit j'ai compllété mon fichier openjpa.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
     
    	<persistence-unit name="">
    		<properties>
    			<property name="openjpa.Log" value="log4j" />
     
    			<property name="openjpa.ConnectionDriverName" value="org.apache.derby.jdbc.EmbeddedDriver"/>
    			<property name="openjpa.ConnectionURL" value="jdbc:derby:target/mydb" />
    			<property name="openjpa.RuntimeUnenhancedClasses" value="supported" />
    			<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
    			<property name="openjpa.jdbc.DBDictionary" value="derby" />
    		</properties>
     
    	</persistence-unit>
    </persistence>
    mais du coup il n'utilise plus ma datasource. Or sous OSGI je n'ai pas le choix la base est définie par une datasource dont à priori je ne connais pas la nature vu que ce sera l'utilisateur final qui la choisira

    Comment définir le nom de la datasource sous osgi pour l'utiliser avec JPA ?
    merci à vous
    A+JYT

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    J'ai trouvé d'où venait le problème.

    la feature karaf jpa ne contient pas tout le necessaire pour jpa
    j'ai ajouté ce qu'il manquais et ça marche.

    A+JYT

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Datasource]Problème de liaison
    Par Fichman dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 22/07/2008, 18h53
  2. [DataSource] probléme de connexion en utilisant le context
    Par sajedose dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 04/04/2008, 14h42
  3. [vb.net] problème avec indices d'un DataSource
    Par A2rem dans le forum Windows Forms
    Réponses: 1
    Dernier message: 14/09/2006, 16h14
  4. probléme avec un datasource sur tomcat et hibernate
    Par senediene dans le forum Hibernate
    Réponses: 4
    Dernier message: 21/08/2006, 18h50
  5. Problème de mise en place de datasource pour Hibernate
    Par K-Kaï dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 27/07/2006, 10h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo