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);
        }