Issue Details (XML | Word | Printable)

Key: OPENEJB-951
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Manu T George
Reporter: Sergey Zhemzhitskiy
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
OpenEJB

There are problems to deploy ejb with custom annotation where values are enums

Created: 04/Nov/08 08:07 AM   Updated: 24/Nov/08 04:49 PM
Return to search
Component/s: None
Affects Version/s: 3.1
Fix Version/s: 3.1.1

Time Tracking:
Original Estimate: 168h
Original Estimate - 168h
Remaining Estimate: 168h
Remaining Estimate - 168h
Time Spent: Not Specified
Remaining Estimate - 168h

File Attachments:
  Size
Java Source File Licensed for inclusion in ASF works MeasureSensible.java 2008-11-04 08:09 AM Sergey Zhemzhitskiy 0.4 kB
Java Source File Licensed for inclusion in ASF works MeasureSensivity.java 2008-11-04 08:10 AM Sergey Zhemzhitskiy 0.1 kB

Resolution Date: 24/Nov/08 04:47 PM


 Description  « Hide
test:
   [testng] [Parser] Running:
   [testng] D:\WorkDirectory\FBS-WORK\dev\trunk\server\fbs\fbs-ejb\build\test\classes\testng.xml
   [testng]
   [testng] Apache OpenEJB 3.1 build: 20081009-03:31
   [testng] http://openejb.apache.org/
   [testng] INFO - openejb.home = D:\WorkDirectory\FBS-WORK\dev\trunk\server\fbs\fbs-ejb
   [testng] INFO - openejb.base = D:\WorkDirectory\FBS-WORK\dev\trunk\server\fbs\fbs-ejb
   [testng] INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
   [testng] INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
   [testng] INFO - Configuring Service(id=database, type=Resource, provider-id=Default JDBC Database)
   [testng] INFO - Found EjbModule in classpath: D:\WorkDirectory\FBS-WORK\dev\trunk\server\fbs\fbs-ejb\build\test\classes
   [testng] INFO - Beginning load: D:\WorkDirectory\FBS-WORK\dev\trunk\server\fbs\fbs-ejb\build\test\classes
   [testng] INFO - Configuring enterprise application: classpath.ear
   [testng] ERROR - FATAL ERROR: Unknown error in Assembler. Please send the following stack trace and this message to user@openejb.org :
   [testng] java.lang.ArrayStoreException: sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy
   [testng] at sun.reflect.annotation.AnnotationParser.parseEnumArray(AnnotationParser.java:673)
   [testng] at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:462)
   [testng] at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:286)
   [testng] at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:222)
   [testng] at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69)
   [testng] at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52)
   [testng] at java.lang.reflect.Method.declaredAnnotations(Method.java:676)
   [testng] at java.lang.reflect.Method.getDeclaredAnnotations(Method.java:669)
   [testng] at java.lang.reflect.AccessibleObject.getAnnotations(AccessibleObject.java:179)
   [testng] at org.apache.openejb.finder.ClassFinder$Annotatable.<init>(ClassFinder.java:425)
   [testng] at org.apache.openejb.finder.ClassFinder$MethodInfo.<init>(ClassFinder.java:555)
   [testng] at org.apache.openejb.finder.ClassFinder.<init>(ClassFinder.java:165)
   [testng] at org.apache.openejb.finder.ClassFinder.<init>(ClassFinder.java:146)
   [testng] at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:703)
   [testng] at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:526)
   [testng] at org.apache.openejb.config.AnnotationDeployer.deploy(AnnotationDeployer.java:181)
   [testng] at org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:228)
   [testng] at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:588)
   [testng] at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:538)
   [testng] at org.apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguration(ConfigurationFactory.java:362)
   [testng] at org.apache.openejb.assembler.classic.Assembler.getOpenEjbConfiguration(Assembler.java:297)
   [testng] at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:276)
   [testng] at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:150)
   [testng] at org.apache.openejb.OpenEJB.init(OpenEJB.java:299)
   [testng] at org.apache.openejb.OpenEJB.init(OpenEJB.java:278)
   [testng] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   [testng] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   [testng] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   [testng] at java.lang.reflect.Method.invoke(Method.java:585)
   [testng] at org.apache.openejb.loader.OpenEJBInstance.init(OpenEJBInstance.java:36)
   [testng] at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:69)
   [testng] at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:52)
   [testng] at org.apache.openejb.client.LocalInitialContextFactory.getInitialContext(LocalInitialContextFactory.java:41)
   [testng] at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
   [testng] at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
   [testng] at javax.naming.InitialContext.init(InitialContext.java:223)
   [testng] at javax.naming.InitialContext.<init>(InitialContext.java:197)
   [testng] at de.firstbrand.fbs.test.SessionBeanTestCase.startContainer(SessionBeanTestCase.java:51)
   [testng] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   [testng] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   [testng] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   [testng] at java.lang.reflect.Method.invoke(Method.java:585)
   [testng] at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
   [testng] at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:398)
   [testng] at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:145)
   [testng] at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:82)
   [testng] at org.testng.TestRunner.beforeRun(TestRunner.java:501)
   [testng] at org.testng.TestRunner.run(TestRunner.java:469)
   [testng] at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
   [testng] at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
   [testng] at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
   [testng] at org.testng.SuiteRunner.run(SuiteRunner.java:198)
   [testng] at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
   [testng] at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
   [testng] at org.testng.TestNG.run(TestNG.java:708)
   [testng] at org.testng.TestNG.privateMain(TestNG.java:860)
   [testng] at org.testng.TestNG.main(TestNG.java:833)
   [testng]
   [testng] FATAL - OpenEJB has encountered a fatal error and cannot be started: Assembler failed to build the container system.
   [testng] org.apache.openejb.OpenEJBException: java.lang.ArrayStoreException: sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy: sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy
   [testng] at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:290)
   [testng] at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:150)
   [testng] at org.apache.openejb.OpenEJB.init(OpenEJB.java:299)
   [testng] at org.apache.openejb.OpenEJB.init(OpenEJB.java:278)
   [testng] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   [testng] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   [testng] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   [testng] at java.lang.reflect.Method.invoke(Method.java:585)
   [testng] at org.apache.openejb.loader.OpenEJBInstance.init(OpenEJBInstance.java:36)
   [testng] at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:69)
   [testng] at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:52)
   [testng] at org.apache.openejb.client.LocalInitialContextFactory.getInitialContext(LocalInitialContextFactory.java:41)
   [testng] at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
   [testng] at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
   [testng] at javax.naming.InitialContext.init(InitialContext.java:223)
   [testng] at javax.naming.InitialContext.<init>(InitialContext.java:197)
   [testng] at de.firstbrand.fbs.test.SessionBeanTestCase.startContainer(SessionBeanTestCase.java:51)
   [testng] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   [testng] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   [testng] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   [testng] at java.lang.reflect.Method.invoke(Method.java:585)
   [testng] at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
   [testng] at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:398)
   [testng] at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:145)
   [testng] at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:82)
   [testng] at org.testng.TestRunner.beforeRun(TestRunner.java:501)
   [testng] at org.testng.TestRunner.run(TestRunner.java:469)
   [testng] at org.testng.SuiteRunner.runTest(SuiteRunner.java:324)
   [testng] at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:319)
   [testng] at org.testng.SuiteRunner.privateRun(SuiteRunner.java:292)
   [testng] at org.testng.SuiteRunner.run(SuiteRunner.java:198)
   [testng] at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:823)
   [testng] at org.testng.TestNG.runSuitesLocally(TestNG.java:790)
   [testng] at org.testng.TestNG.run(TestNG.java:708)
   [testng] at org.testng.TestNG.privateMain(TestNG.java:860)
   [testng] at org.testng.TestNG.main(TestNG.java:833)
   [testng] Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy
   [testng] at sun.reflect.annotation.AnnotationParser.parseEnumArray(AnnotationParser.java:673)
   [testng] at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:462)
   [testng] at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:286)
   [testng] at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:222)
   [testng] at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69)
   [testng] at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52)
   [testng] at java.lang.reflect.Method.declaredAnnotations(Method.java:676)
   [testng] at java.lang.reflect.Method.getDeclaredAnnotations(Method.java:669)
   [testng] at java.lang.reflect.AccessibleObject.getAnnotations(AccessibleObject.java:179)
   [testng] at org.apache.openejb.finder.ClassFinder$Annotatable.<init>(ClassFinder.java:425)
   [testng] at org.apache.openejb.finder.ClassFinder$MethodInfo.<init>(ClassFinder.java:555)
   [testng] at org.apache.openejb.finder.ClassFinder.<init>(ClassFinder.java:165)
   [testng] at org.apache.openejb.finder.ClassFinder.<init>(ClassFinder.java:146)
   [testng] at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:703)
   [testng] at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:526)
   [testng] at org.apache.openejb.config.AnnotationDeployer.deploy(AnnotationDeployer.java:181)
   [testng] at org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:228)
   [testng] at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:588)
   [testng] at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:538)
   [testng] at org.apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguration(ConfigurationFactory.java:362)
   [testng] at org.apache.openejb.assembler.classic.Assembler.getOpenEjbConfiguration(Assembler.java:297)
   [testng] at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:276)
   [testng] ... 35 more
   [testng] FAILED CONFIGURATION: @BeforeTest startContainer
   [testng] javax.naming.NamingException: Attempted to load OpenEJB. java.lang.ArrayStoreException: sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy: sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy [R
.openejb.OpenEJBException: java.lang.ArrayStoreException: sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy: sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy]
   [testng] at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:54)
   [testng] at org.apache.openejb.client.LocalInitialContextFactory.getInitialContext(LocalInitialContextFactory.java:41)
   [testng] at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
   [testng] at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
   [testng] at javax.naming.InitialContext.init(InitialContext.java:223)
   [testng] at javax.naming.InitialContext.<init>(InitialContext.java:197)
   [testng] at de.firstbrand.fbs.test.SessionBeanTestCase.startContainer(SessionBeanTestCase.java:51)
   [testng] at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:290)
   [testng] at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:150)
   [testng] at org.apache.openejb.OpenEJB.init(OpenEJB.java:299)
   [testng] at org.apache.openejb.OpenEJB.init(OpenEJB.java:278)
   [testng] at org.apache.openejb.loader.OpenEJBInstance.init(OpenEJBInstance.java:36)
   [testng] at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:69)
   [testng] at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:52)
   [testng] ... 25 more
   [testng] at org.apache.openejb.finder.ClassFinder$Annotatable.<init>(ClassFinder.java:425)
   [testng] at org.apache.openejb.finder.ClassFinder$MethodInfo.<init>(ClassFinder.java:555)
   [testng] at org.apache.openejb.finder.ClassFinder.<init>(ClassFinder.java:165)
   [testng] at org.apache.openejb.finder.ClassFinder.<init>(ClassFinder.java:146)
   [testng] at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:703)
   [testng] at org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:526)
   [testng] at org.apache.openejb.config.AnnotationDeployer.deploy(AnnotationDeployer.java:181)
   [testng] at org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:228)
   [testng] at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:588)
   [testng] at org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:538)
   [testng] at org.apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguration(ConfigurationFactory.java:362)
   [testng] at org.apache.openejb.assembler.classic.Assembler.getOpenEjbConfiguration(Assembler.java:297)
   [testng] at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:276)
   [testng] ... 35 more
   [testng] ... Removed 34 stack frames
   [testng] FAILED CONFIGURATION: @BeforeClass serviceLookup
   [testng] javax.naming.NameNotFoundException: Name "java:openejb/ejb/ArticleServiceEJBLocal" not found.
   [testng] at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:172)
   [testng] at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:129)
   [testng] at javax.naming.InitialContext.lookup(InitialContext.java:351)
   [testng] at de.firstbrand.fbs.test.SessionBeanTestCase.getLocal(SessionBeanTestCase.java:111)
   [testng] at de.firstbrand.fbs.admin.service.ArticleServiceBeanTest.serviceLookup(ArticleServiceBeanTest.java:98)
   [testng] ... Removed 22 stack frames
   [testng] FAILED CONFIGURATION: @BeforeClass jndiLookup
   [testng] javax.naming.NameNotFoundException: Name "java:openejb/ejb/PersistanceProviderEJBLocal" not found.
   [testng] at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:172)
   [testng] at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:129)
   [testng] at javax.naming.InitialContext.lookup(InitialContext.java:351)
   [testng] at de.firstbrand.fbs.test.SessionBeanTestCase.getLocal(SessionBeanTestCase.java:111)
   [testng] at de.firstbrand.fbs.test.SessionBeanTestCase.jndiLookup(SessionBeanTestCase.java:76)
   [testng] ... Removed 22 stack frames

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Sergey Zhemzhitskiy added a comment - 04/Nov/08 08:12 AM
If some method of the EJB is annotated with MeasureSensible annotation (see attachments) and its value is not empty the stacktrace in description will occur.

Example: @MeasureSensible(MeasureSensivity.RESULT) will cause the error

Manu T George added a comment - 19/Nov/08 11:58 AM
Able to replicate the issue with RedeployTest. Investigating the cause

Manu T George added a comment - 24/Nov/08 09:40 AM
The errors seems not to occur in the latest IBM 1.5 JVMs.

Manu T George added a comment - 24/Nov/08 01:04 PM
The problem is that the Annotation classes are loaded by the application classloader while the enums are loaded by the temporary classloader. One fix is to modify the TempClassLoader to ensure that Enum classes are also loaded by the normal classloader.

A similar fix is there in OPENJPA-646

Manu T George added a comment - 24/Nov/08 04:49 PM
Fixed in trunk. Please verify and close