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
---------------------------------------
Et le code (ultra-simple) :
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 ------------------------------------------------------------------------
Entité
Interface DAO
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 locale
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(); }
Implémentation DAO
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 { }
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 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"); } }
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); }
Partager