p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : septembre 2012
    Messages : 6
    Points : 5
    Points
    5

    Par défaut [embedded-glassfish] Mettre à jour les jar JPA/eclipselink pour cas de test

    Bonjour,
    je réalise des cas de test sur mon appli J2EE (GlassFish/Maven2/JPA/EJB/JSF/MySql). Et je voudrai que le serveur embarquée (embedded-glassfish) utilise la nouvelle version de eclipselink 2.4.1 que j'ai mis a jour sur mon serveur installé (${GF_HOME}/modules/).

    Quand je lance l'appli je vois que le serveur utilise bien la nouvelle version 2.4.1.
    Mais, quand je lanse les cas de test le serveur embarqué point sur la version [EclipseLink-28018] (Eclipse Persistence Services - 2.3.0.v20110604-r9504)

    Et cela malgré le fait que je lui (embedded-glassfish) ai bien préciser le installation.root.

    voici ma config:

    POM du projet ejb (la ou il y a les cas de test):
    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <dependencies>
     
            <dependency>
                <groupId>org.glassfish.extras</groupId>
                <artifactId>glassfish-embedded-all</artifactId>
                <version>3.1.1</version>  
                <scope>test</scope>
            </dependency>
    ........
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.13</version>
            </dependency>
     
             <dependency>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>eclipselink</artifactId>
                <version>2.4.1</version>
            </dependency>
     
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.10</version>
                <scope>test</scope>
            </dependency>
     
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-api</artifactId>
                <version>6.0</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    je précédé mon cas de tes par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    @BeforeClass
        public static void setUpClass() throws Exception {
     
            Map properties = new HashMap();
     
            properties.put("org.glassfish.ejb.embedded.glassfish.installation.root", "/usr/local/glassfish-3.1.2/glassfish");
            properties.put("org.glassfish.ejb.embedded.glassfish.configuration.file", "/usr/local/glassfish-3.1.2/glassfish/domains/domain1/config/domain.xml");
     
            container = EJBContainer.createEJBContainer(properties);
            appContext = container.getContext();
     
        }
    si quelqu'un a une idées pour bien éduquer ce embedded-glassfish je suis preneur , merci.

  2. #2
    Expert Confirmé Sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    22 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 22 898
    Points : 43 516
    Points
    43 516

    Par défaut

    tu pourrais mettre explicitement cette version de eclipselink dans ton pom.xml pour que maven l'utilise.
    "Tchize is always good. Tchize is just milk’s attempt at being immortal"
    faq java, cours java, javadoc. Pensez à et

  3. #3
    Invité régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : septembre 2012
    Messages : 6
    Points : 5
    Points
    5

    Par défaut

    c'est déjà le cas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <dependency>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>eclipselink</artifactId>
                <version>2.4.1</version>
            </dependency>
    Je pense que le serveur utilise les jar qu'il embarque avec lui (ceux de ${GF_HOME}/modules/) pas ceux qui sont dans le pom, car eclipselink et l'implémentation de référence du coût GF l'embarque nativement.
    Sur le GF installé j'ai à updater ces fameux jar de eclipselink mais pas sur l'embedded.

  4. #4
    Invité régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : septembre 2012
    Messages : 6
    Points : 5
    Points
    5

    Par défaut

    J'ai fini par trouver la répense a mon probleme, en fait la solution était évidente et illustré un peut partout, mais elle n'est pas bien expliciter (du moins en français). je m'explique:

    Pour pouvoir utiliser le GlassFish installé dans nos cas de test, il faut passer par le glassfish.embedded-static-shell eu lieu du glassfish-embedded-all, qui est disponible directement dans GlassFish (${GLASSFISH_HOME}/lib/embedded/). ca nous eviterra de charger le embedded-all qui pése pas moins de 50 Mo.

    Pour ça il suffit de le declarer comme suit:
    Code : 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
    19
    20
    21
    22
    23
    24
     
     <properties>
            <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
            <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding>
            <glassfish.embedded-static-shell.jar>${GLASSFISH_HOME}/lib/embedded/glassfish-embedded-static-shell.jar</glassfish.embedded-static-shell.jar>
        </properties>
    .....
     <dependencies>        
           <dependency>
                <groupId>org.glassfish.extras</groupId>
                <artifactId>glassfish-embedded-static-shell</artifactId>
                <version>3.1.1</version>
                <scope>system</scope>
                <systemPath>${glassfish.embedded-static-shell.jar}</systemPath>            
            </dependency>
     
    ....
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-api</artifactId>
                <version>6.0</version>
                <scope>provided</scope>
            </dependency>
    </dependencies>
    Il faut prendre garde, à bien placer la dependance de embedded-static-shell bien avant celle du javaee-api, sinon exception ..

    puis déclarer le cas de test en le précédant par le chemin vers le fichier de config du domain glassfish voulu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Map properties = new HashMap();
    properties.put("org.glassfish.ejb.embedded.glassfish.installation.root", System.getenv("GLASSFISH_HOME"));
    properties.put("org.glassfish.ejb.embedded.glassfish.configuration.file", System.getenv("GLASSFISH_HOME")+"/domains/domain1/config/domain.xml");
     
    container = javax.ejb.embeddable.EJBContainer.createEJBContainer(properties);
    appContext = container.getContext();
    MyEjb facade = (MyEjb) appContext.lookup("java:global/classes/MyEjb");
    comme ça vos cas de test utilse les jars EclipseLink de votre instalation GF, mieux meme votre config JDBC voulu, vous paramétre de JVM voulu, .... Au lieu et palce du embedded-all qui fait ça sauce tout seul dans son coin.

    P.S: prenez le temps de déclarer une variable d'environnement $GLASSFISH_HOME c'est plus sympa à l'utilisation et mieux maintenable.

    Exemple en Anglais: http://netbeans.org/kb/docs/javaee/m...p-testing.html

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

Discussions similaires

  1. Mettre à jours les dev d'OpenGL sous Linux
    Par Yno dans le forum OpenGL
    Réponses: 6
    Dernier message: 06/11/2006, 09h17
  2. Réponses: 21
    Dernier message: 25/10/2006, 11h46
  3. Mettre à jour les données avec un ADODC
    Par ecarbill dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/08/2006, 20h41
  4. [VBA-E] comment ne pas mettre à jour les liaisons!
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/12/2005, 12h05
  5. Mettre à jour les if et variable toute les x seconde.
    Par Guillaume602 dans le forum C++
    Réponses: 5
    Dernier message: 06/12/2005, 19h09

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