Mantis - Resin
Viewing Issue Advanced Details
2613 major always 04-20-08 21:57 04-22-08 09:50
markus  
ferg  
normal  
closed 3.1.6  
fixed  
none    
none 3.1.6  
0002613: Webbeans+Amber causes AmberRuntimeException, illegal instance class
I'm testing Amber and webbeans on MacOS X 10.5.2/Java 1.5.0_13, and with the combination of a Component that references a persistence bean that is going to be enhanced, I get (at deploy)

[06:44:05.277] {main} WebApp[http://localhost:8080/resintest] [^] error
[06:44:05.279] {main} com.caucho.amber.AmberRuntimeException: 'imba.db.Movie' with classloader EnvironmentClassLoader[web-app:http://localhost:8080/resintest] [^] is an illegal instance class
[06:44:05.279] {main} at com.caucho.amber.type.AbstractEnhancedType.getInstanceClass(AbstractEnhancedType.java:287)
[06:44:05.279] {main} at com.caucho.amber.type.EntityType.getInstanceClass(EntityType.java:58)
[06:44:05.279] {main} at com.caucho.amber.entity.AmberEntityHome.init(AmberEntityHome.java:186)
[06:44:05.279] {main} at com.caucho.amber.manager.AmberPersistenceUnit.initEntityHomes(AmberPersistenceUnit.java:1398)
[06:44:05.279] {main} at com.caucho.amber.manager.AmberContainer.startPersistenceUnits(AmberContainer.java:809)
[06:44:05.279] {main} at com.caucho.amber.manager.AmberContainer.start(AmberContainer.java:567)
[06:44:05.279] {main} at com.caucho.config.j2ee.InjectIntrospector.generatePersistenceContext(InjectIntrospector.java:476)
[06:44:05.279] {main} at com.caucho.config.j2ee.InjectIntrospector.introspect(InjectIntrospector.java:377)
[06:44:05.279] {main} at com.caucho.config.j2ee.InjectIntrospector.introspectInjectImpl(InjectIntrospector.java:210)
[06:44:05.279] {main} at com.caucho.config.j2ee.InjectIntrospector.introspectInject(InjectIntrospector.java:183)
[06:44:05.279] {main} at com.caucho.webbeans.component.ClassComponent.bind(ClassComponent.java:390)
[06:44:05.279] {main} at com.caucho.webbeans.cfg.WbWebBeans.bind(WbWebBeans.java:285)
[06:44:05.279] {main} at com.caucho.webbeans.manager.WebBeansContainer.bind(WebBeansContainer.java:958)
[06:44:05.279] {main} at com.caucho.webbeans.manager.WebBeansContainer.environmentStart(WebBeansContainer.java:995)
[06:44:05.279] {main} at com.caucho.loader.EnvironmentClassLoader.start(EnvironmentClassLoader.java:572)
[06:44:05.279] {main} at com.caucho.server.webapp.WebApp.start(WebApp.java:1823)
[06:44:05.279] {main} at com.caucho.server.deploy.DeployController.startImpl(DeployController.java:667)
[06:44:05.279] {main} at com.caucho.server.deploy.StartAutoRedeployAutoStrategy.startOnInit(StartAutoRedeployAutoStrategy.java:72)
[06:44:05.279] {main} at com.caucho.server.deploy.DeployController.startOnInit(DeployController.java:549)
[06:44:05.279] {main} at com.caucho.server.deploy.DeployContainer.start(DeployContainer.java:160)
[06:44:05.279] {main} at com.caucho.server.webapp.WebAppContainer.start(WebAppContainer.java:659)
[06:44:05.279] {main} at com.caucho.server.host.Host.start(Host.java:437)
[06:44:05.279] {main} at com.caucho.server.deploy.DeployController.startImpl(DeployController.java:667)
[06:44:05.279] {main} at com.caucho.server.deploy.StartAutoRedeployAutoStrategy.startOnInit(StartAutoRedeployAutoStrategy.java:72)
[06:44:05.279] {main} at com.caucho.server.deploy.DeployController.startOnInit(DeployController.java:549)
[06:44:05.279] {main} at com.caucho.server.deploy.DeployContainer.start(DeployContainer.java:160)
[06:44:05.279] {main} at com.caucho.server.host.HostContainer.start(HostContainer.java:484)
[06:44:05.279] {main} at com.caucho.server.cluster.Server.start(Server.java:1217)
[06:44:05.279] {main} at com.caucho.server.cluster.Cluster.startServer(Cluster.java:710)
[06:44:05.279] {main} at com.caucho.server.cluster.ClusterServer.startServer(ClusterServer.java:528)
[06:44:05.279] {main} at com.caucho.server.resin.Resin.start(Resin.java:695)
[06:44:05.279] {main} at com.caucho.server.resin.Resin.initMain(Resin.java:1139)
[06:44:05.279] {main} at com.caucho.server.resin.Resin.main(Resin.java:1341)


When the components @Component annotation is removed the web-app works (and the persistence beans are properly enhanced), but of course the components are not available.

To me it looks like the initialization order is wrong and that the Amber container should be started before any webbeans are loaded. Now a webbean that references the imba.db.Movie bean is loaded, the Amber is trying to enhance it, but since the original class is already loaded it fails to enhance it.
Tested on both 3.1.5 and 3.1.6 (3.1.s080417).

Notes
(0003001)
ferg   
04-22-08 09:50   
jpa/004{0,1}

If possible, please see if you can reproduce this on the next snapshot. If it's still an issue, please open a new report with more information about the configuration (e.g. order of the resin-web.xml, etc.)