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 ! :zoubi:
---------------------------------------
Logs et code source
---------------------------------------
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 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:
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:
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:
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:
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:
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);
} |