Hi just add openejb.finder.module-scoped=true
Romain Manni-Bucau Twitter: @rmannibucau Blog: http://rmannibucau.wordpress.com/ LinkedIn: http://fr.linkedin.com/in/rmannibucau Github: https://github.com/rmannibucau 2014-09-24 3:59 GMT+02:00 Marius Kruger <[email protected]>: > 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
