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

Java EE Discussion :

OpenEJB et Maven 3 : échec des tests [EJB3]


Sujet :

Java EE

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Points : 10
    Points
    10
    Par défaut OpenEJB et Maven 3 : échec des tests
    Bonjour !

    Je m'en remets à vous concernant un problème que je ne peux résoudre depuis bientôt 2 jours : je n'arrive pas à exécuter mes tests sur des EJBs en utilisant Maven 3 et le conteneur OpenEJB.

    L'erreur retournée est : [ligne 17] javax.naming.NameNotFoundException: Name "ArticleDaoLocal" not found.

    Avez-vous la moindre idée de ce qui a pu se passer ?
    Merci d'avance de me donner de votre temps !

    ---------------------------------------
    Logs et code source
    ---------------------------------------

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running com.mycompany.openejbai.ArticleDaoLocalTest
    Apache OpenEJB 3.1    build: 20081009-03:31
    http://openejb.apache.org/
    INFO - openejb.home = D:\Documents\NetBeansProjects\openejbai
    INFO - openejb.base = D:\Documents\NetBeansProjects\openejbai
    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
    INFO - Configuring enterprise application: classpath.ear
    INFO - Enterprise application "classpath.ear" loaded.
    INFO - Assembling app: classpath.ear
    INFO - Deployed Application(path=classpath.ear)
    déc. 23, 2011 11:51:46 AM com.mycompany.openejbai.ArticleDaoLocalTest <init>
    Grave: null
    javax.naming.NameNotFoundException: Name "ArticleDaoLocal" not found.
    	at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:172)
    	at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:129)
    	at org.apache.openejb.core.ivm.naming.ContextWrapper.lookup(ContextWrapper.java:115)
    	at javax.naming.InitialContext.lookup(InitialContext.java:411)
    	at com.mycompany.openejbai.ArticleDaoLocalTest.<init>(ArticleDaoLocalTest.java:27)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
    	at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:202)
    	at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:251)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    	at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:248)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
    	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    	at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35)
    	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115)
    	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:601)
    	at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103)
    	at $Proxy0.invoke(Unknown Source)
    	at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150)
    	at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91)
    	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69)
     
    Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.984 sec <<< FAILURE!
     
    Results :
     
    Tests in error: 
      testFindArticle(com.mycompany.openejbai.ArticleDaoLocalTest)
     
    Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
     
    ------------------------------------------------------------------------
    BUILD FAILURE
    ------------------------------------------------------------------------
    Et le code (ultra-simple) :

    Entité
    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
    package com.mycompany.openejbai.core;
     
    public class Article {
     
        String label;
     
        public Article(String label) {
            this.label = label;
        }
     
        public String getLabel() {
            return label;
        }
     
        public void setLabel(String label) {
            this.label = label;
        }
    }
    Interface DAO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    package com.mycompany.openejbai.dao;
     
    import com.mycompany.openejbai.core.Article;
     
    public interface IArticleDao {
        Article findArticle();
    }
    Interface locale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    package com.mycompany.openejbai.dao;
     
    import javax.ejb.Local;
     
    @Local
    public interface IArticleDaoLocal extends IArticleDao {
    }
    Implémentation DAO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    package com.mycompany.openejbai.dao;
     
    import com.mycompany.openejbai.core.Article;
    import javax.ejb.Stateless;
     
    @Stateless
    public class ArticleDao implements IArticleDaoLocal, IArticleDaoRemote {
     
        public Article findArticle() {
            return new Article("Premier Article");
        }
    }
    Etr voici le test qui génère l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
          try {
                Properties properties = new Properties();
                properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,
                        "org.apache.openejb.client.LocalInitialContextFactory");
     
                Context initialContext = new InitialContext(properties);
     
                dao = (IArticleDaoLocal) initialContext.lookup("ArticleDaoLocal");
     
                Assert.assertNotNull(dao);
            } catch (NamingException ex) {
                Logger.getLogger(ArticleDaoLocalTest.class.getName()).log(Level.SEVERE, null, ex);
            }

  2. #2
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Points : 10
    Points
    10
    Par défaut Note à moi-même
    Bon .. hé bien solution trouvée. Il fallait absolument que j'ai un fichier ejb-jar.xml valide (même vide) dans src/main/resources/META-INF pour que le conteneur initialise son contexte JNDI. Un fichier comme le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
    </ejb-jar>
    De plus, voilà le pom.xm qui m'a fait compiler :

    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
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
     
        <groupId>com.mycompany</groupId>
        <artifactId>openejbai</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>jar</packaging>
     
        <name>openejbai</name>
        <url>http://maven.apache.org</url>
     
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
     
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.8.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.openejb</groupId>
                <artifactId>openejb-core</artifactId>
                <version>3.1.4</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.openejb</groupId>
                <artifactId>openejb-jee</artifactId>
                <version>3.1.4</version>
            </dependency>
        </dependencies>
    </project>
    Merci à ce sujet pour m'avoir amené sur la piste.

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

Discussions similaires

  1. Exécution des tests unitaires FlexUnit avec Maven
    Par suiton dans le forum Intégration Continue
    Réponses: 1
    Dernier message: 17/08/2012, 21h02
  2. [Framework] Configuration de spring pour faire des tests avec maven
    Par wsp_ape dans le forum Spring
    Réponses: 7
    Dernier message: 17/06/2011, 17h12
  3. Réponses: 0
    Dernier message: 20/04/2011, 11h36
  4. Maven - lancer des tests junit spécifiques
    Par don'de dans le forum Maven
    Réponses: 1
    Dernier message: 24/11/2009, 23h26
  5. la couverture des tests avec maven
    Par adilo dans le forum Qualimétrie
    Réponses: 4
    Dernier message: 26/07/2006, 08h41

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