Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  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 :
    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 :
    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
    Responsable de service informatique
    Inscrit en
    avril 2007
    Messages
    21 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Service public

    Informations forums :
    Inscription : avril 2007
    Messages : 21 597
    Points : 38 488
    Points
    38 488

    Par défaut

    tu pourrais mettre explicitement cette version de eclipselink dans ton pom.xml pour que maven l'utilise.
    Tchize (Чиз) faq java, cours java, javadoc. Pensez à et
    Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir.

  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 :
    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 :
    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 :
    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •