hey, I found that upgrading from 4.7.0 to 4.7.1 broke some of my tests. I spent some time to narrow it down: it happens if you have a bean in your project and then extend it in a test bean then it appears that openejb tries to load the parent twice and I get a NameAlreadyBoundException
the error goes away if I either * change the version back to 4.7.0 * stop extending the parent bean * make the parent a normal class * move the main bean to src/test/java * move the test bean to src/main/java (so maybe its a maven classpath issue?) here is a project that displays a failing test: $ git clone https://github.com/amanica/tomee-embedded-trial.git $ cd tomee-embedded-trial $ git checkout d517ae9 #for in case I commit something later $ mvn clean install -Dtest=PingRSEmbeddedOpenEjbTest ------------------------------------------------------------------------------- Test set: com.example.PingRSEmbeddedOpenEjbTest ------------------------------------------------------------------------------- Tests run: 3, Failures: 0, Errors: 3, Skipped: 0, Time elapsed: 3.275 sec <<< FAILURE! ping(com.example.PingRSEmbeddedOpenEjbTest) Time elapsed: 2.657 sec <<< ERROR! java.lang.RuntimeException: Could not start up container. at com.example.AOpenEjbTest.inject(AOpenEjbTest.java:95) at com.example.AOpenEjbTest.injectContext(AOpenEjbTest.java:67) at com.example.AOpenEjbTest.setupAOpenEjbTest(AOpenEjbTest.java:35) 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:606) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112) 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:606) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) Caused by: org.apache.openejb.OpenEjbContainer$AssembleApplicationException: org.apache.openejb.OpenEJBException: Creating application failed: /stf/prj/tmp/tomee-embedded-trial/myAppName: Unable to bind business remote deployment in jndi. at org.apache.openejb.OpenEjbContainer$Provider.createEJBContainer(OpenEjbContainer.java:339) at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:56) at com.example.AOpenEjbTest.getContext(AOpenEjbTest.java:101) at com.example.AOpenEjbTest.inject(AOpenEjbTest.java:77) ... 32 more Caused by: org.apache.openejb.OpenEJBException: Creating application failed: /stf/prj/tmp/tomee-embedded-trial/myAppName: Unable to bind business remote deployment in jndi. at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:896) at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:623) at org.apache.openejb.OpenEjbContainer$Provider.createEJBContainer(OpenEjbContainer.java:335) ... 35 more Caused by: org.apache.openejb.OpenEJBRuntimeException: Unable to bind business remote deployment in jndi. at org.apache.openejb.assembler.classic.JndiBuilder.bind(JndiBuilder.java:448) at org.apache.openejb.assembler.classic.JndiBuilder.build(JndiBuilder.java:92) at org.apache.openejb.assembler.classic.Assembler.initEjbs(Assembler.java:1017) at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:788) ... 37 more Caused by: javax.naming.NameAlreadyBoundException: openejb/Deployment/PingRS/com.example.PingRS!LocalBeanHome at org.apache.openejb.assembler.classic.JndiBuilder.bind(JndiBuilder.java:661) at org.apache.openejb.assembler.classic.JndiBuilder.bind(JndiBuilder.java:436) ... 40 more ping2(com.example.PingRSEmbeddedOpenEjbTest) Time elapsed: 0.303 sec <<< ERROR! java.lang.RuntimeException: Could not start up container. at com.example.AOpenEjbTest.inject(AOpenEjbTest.java:95) at com.example.AOpenEjbTest.injectContext(AOpenEjbTest.java:67) at com.example.AOpenEjbTest.setupAOpenEjbTest(AOpenEjbTest.java:35) 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:606) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112) 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:606) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) Caused by: org.apache.openejb.OpenEjbContainer$AssembleApplicationException: org.apache.openejb.OpenEJBException: Creating application failed: /stf/prj/tmp/tomee-embedded-trial/myAppName: Unable to bind business remote deployment in jndi. at org.apache.openejb.OpenEjbContainer$Provider.createEJBContainer(OpenEjbContainer.java:339) at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:56) at com.example.AOpenEjbTest.getContext(AOpenEjbTest.java:101) at com.example.AOpenEjbTest.inject(AOpenEjbTest.java:77) ... 32 more Caused by: org.apache.openejb.OpenEJBException: Creating application failed: /stf/prj/tmp/tomee-embedded-trial/myAppName: Unable to bind business remote deployment in jndi. at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:896) at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:623) at org.apache.openejb.OpenEjbContainer$Provider.createEJBContainer(OpenEjbContainer.java:335) ... 35 more Caused by: org.apache.openejb.OpenEJBRuntimeException: Unable to bind business remote deployment in jndi. at org.apache.openejb.assembler.classic.JndiBuilder.bind(JndiBuilder.java:448) at org.apache.openejb.assembler.classic.JndiBuilder.build(JndiBuilder.java:92) at org.apache.openejb.assembler.classic.Assembler.initEjbs(Assembler.java:1017) at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:788) ... 37 more Caused by: javax.naming.NameAlreadyBoundException: openejb/Deployment/PingRS/com.example.PingRS!LocalBeanHome at org.apache.openejb.assembler.classic.JndiBuilder.bind(JndiBuilder.java:661) at org.apache.openejb.assembler.classic.JndiBuilder.bind(JndiBuilder.java:436) ... 40 more giveMeADuck(com.example.PingRSEmbeddedOpenEjbTest) Time elapsed: 0.227 sec <<< ERROR! java.lang.RuntimeException: Could not start up container. at com.example.AOpenEjbTest.inject(AOpenEjbTest.java:95) at com.example.AOpenEjbTest.injectContext(AOpenEjbTest.java:67) at com.example.AOpenEjbTest.setupAOpenEjbTest(AOpenEjbTest.java:35) 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:606) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112) 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:606) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) Caused by: org.apache.openejb.OpenEjbContainer$AssembleApplicationException: org.apache.openejb.OpenEJBException: Creating application failed: /stf/prj/tmp/tomee-embedded-trial/myAppName: Unable to bind business remote deployment in jndi. at org.apache.openejb.OpenEjbContainer$Provider.createEJBContainer(OpenEjbContainer.java:339) at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:56) at com.example.AOpenEjbTest.getContext(AOpenEjbTest.java:101) at com.example.AOpenEjbTest.inject(AOpenEjbTest.java:77) ... 32 more Caused by: org.apache.openejb.OpenEJBException: Creating application failed: /stf/prj/tmp/tomee-embedded-trial/myAppName: Unable to bind business remote deployment in jndi. at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:896) at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:623) at org.apache.openejb.OpenEjbContainer$Provider.createEJBContainer(OpenEjbContainer.java:335) ... 35 more Caused by: org.apache.openejb.OpenEJBRuntimeException: Unable to bind business remote deployment in jndi. at org.apache.openejb.assembler.classic.JndiBuilder.bind(JndiBuilder.java:448) at org.apache.openejb.assembler.classic.JndiBuilder.build(JndiBuilder.java:92) at org.apache.openejb.assembler.classic.Assembler.initEjbs(Assembler.java:1017) at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:788) ... 37 more Caused by: javax.naming.NameAlreadyBoundException: openejb/Deployment/PingRS/com.example.PingRS!LocalBeanHome at org.apache.openejb.assembler.classic.JndiBuilder.bind(JndiBuilder.java:661) at org.apache.openejb.assembler.classic.JndiBuilder.bind(JndiBuilder.java:436) ... 40 more -- ✝ Marius
