You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by Marius Kruger <am...@gmail.com> on 2010/09/23 23:46:52 UTC
NPE in TempClassLoader
the error asked so nicely to send the stacktrace below.
I'm trying to load an alternative ejb implementation for testing
purposes similar to:
http://openejb.979440.n4.nabble.com/Is-it-possible-to-insert-a-mock-implementation-of-EJB-that-is-being-referenced-using-EJB-annotation-td981106.html
so I'm trying to specify my alternative in the ejb-jar.xml (in
src/test/resources/META-INF)
<?xml version="1.0" encoding="ASCII"?>
<ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:ejb="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" version="3.0">
<display-name>DDS Service</display-name>
<enterprise-beans><session><ejb-name>za.co.enerweb.dds.ejb.MockEmailSender</ejb-name></session></enterprise-beans>
</ejb-jar>
(using openejb-core-3.1.3-20100806.053716-36.jar)
==
ERROR - FATAL ERROR: Unknown error in Assembler. Please send the
following stack trace and this message to users@openejb.apache.org :
java.lang.NullPointerException
at org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.java:90)
at org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.java:66)
at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:1055)
at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:684)
at org.apache.openejb.config.AnnotationDeployer.deploy(AnnotationDeployer.java:194)
at org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:248)
at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:612)
at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:562)
at org.apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguration(ConfigurationFactory.java:391)
at org.apache.openejb.assembler.classic.Assembler.getOpenEjbConfiguration(Assembler.java:300)
at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:279)
at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:125)
at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:60)
at org.apache.openejb.OpenEJB.init(OpenEJB.java:271)
at org.apache.openejb.OpenEJB.init(OpenEJB.java:250)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.openejb.loader.OpenEJBInstance.init(OpenEJBInstance.java:36)
at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:71)
at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:53)
at org.apache.openejb.client.LocalInitialContextFactory.getInitialContext(LocalInitialContextFactory.java:42)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:197)
at za.co.enerweb.toolbox.openejb.AbstractOpenEjbTest.inject(AbstractOpenEjbTest.java:49)
at za.co.enerweb.toolbox.openejb.AbstractOpenEjbTest.injectContext(AbstractOpenEjbTest.java:34)
at za.co.enerweb.toolbox.openejb.AbstractOpenEjbTest.<init>(AbstractOpenEjbTest.java:23)
at za.co.enerweb.emailservice.AbstractSendEmailTest.<init>(AbstractSendEmailTest.java:23)
at za.co.enerweb.dds.ejb.DdsEmailSenderEjbTest.<init>(DdsEmailSenderEjbTest.java:20)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
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.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
FATAL - OpenEJB has encountered a fatal error and cannot be started:
Assembler failed to build the container system.
org.apache.openejb.OpenEJBException: java.lang.NullPointerException: null
at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:293)
at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:125)
at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:60)
at org.apache.openejb.OpenEJB.init(OpenEJB.java:271)
at org.apache.openejb.OpenEJB.init(OpenEJB.java:250)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.openejb.loader.OpenEJBInstance.init(OpenEJBInstance.java:36)
at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:71)
at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:53)
at org.apache.openejb.client.LocalInitialContextFactory.getInitialContext(LocalInitialContextFactory.java:42)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:197)
at za.co.enerweb.toolbox.openejb.AbstractOpenEjbTest.inject(AbstractOpenEjbTest.java:49)
at za.co.enerweb.toolbox.openejb.AbstractOpenEjbTest.injectContext(AbstractOpenEjbTest.java:34)
at za.co.enerweb.toolbox.openejb.AbstractOpenEjbTest.<init>(AbstractOpenEjbTest.java:23)
at za.co.enerweb.emailservice.AbstractSendEmailTest.<init>(AbstractSendEmailTest.java:23)
at za.co.enerweb.dds.ejb.DdsEmailSenderEjbTest.<init>(DdsEmailSenderEjbTest.java:20)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
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.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.NullPointerException
at org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.java:90)
at org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.java:66)
at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:1055)
at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:684)
at org.apache.openejb.config.AnnotationDeployer.deploy(AnnotationDeployer.java:194)
at org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:248)
at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:612)
at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:562)
at org.apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguration(ConfigurationFactory.java:391)
at org.apache.openejb.assembler.classic.Assembler.getOpenEjbConfiguration(Assembler.java:300)
at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:279)
... 43 more
--
<>< Marius ><>
Re: NPE in TempClassLoader
Posted by David Blevins <da...@visi.com>.
On Sep 23, 2010, at 2:46 PM, Marius Kruger wrote:
> the error asked so nicely to send the stacktrace below.
>
> I'm trying to load an alternative ejb implementation for testing
> purposes similar to:
>
> http://openejb.979440.n4.nabble.com/Is-it-possible-to-insert-a-mock-implementation-of-EJB-that-is-being-referenced-using-EJB-annotation-td981106.html
>
> so I'm trying to specify my alternative in the ejb-jar.xml (in
> src/test/resources/META-INF)
>
> <?xml version="1.0" encoding="ASCII"?>
> <ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns="http://java.sun.com/xml/ns/javaee"
> xmlns:ejb="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
> http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" version="3.0">
> <display-name>DDS Service</display-name>
> <enterprise-beans><session><ejb-name>za.co.enerweb.dds.ejb.MockEmailSender</ejb-name></session></enterprise-beans>
> </ejb-jar>
>
> (using openejb-core-3.1.3-20100806.053716-36.jar)
>
> ==
> ERROR - FATAL ERROR: Unknown error in Assembler. Please send the
> following stack trace and this message to users@openejb.apache.org :
> java.lang.NullPointerException
> at org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.java:90)
> at org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.java:66)
> at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:1055)
Duplicated this one and it's a simple matter of the ejb-name specified in xml not matching anything that was discovered. Long story short, per spec the ejb-name of an annotated bean defaults to clazz.getSimpleName() rather than clazz.getName(). So things weren't lining up. I cleaned up all the exception handling around this:
OPENEJB-1373: Validation: <ejb-class> omitted with no corresponding annotated bean
OPENEJB-1372: Default openejb.descriptors.output to true when there are validation failures
We're re-rolling the 3.1.3 binaries right now so these changes should be there.
-David