Sven Linstaedt created DELTASPIKE-1039:
------------------------------------------
Summary: LinkageError on container reboot
Key: DELTASPIKE-1039
URL: https://issues.apache.org/jira/browse/DELTASPIKE-1039
Project: DeltaSpike
Issue Type: Bug
Components: PartialBean
Affects Versions: 1.5.1
Environment: Weld 2.3.1.Final, Oracle JVM 1.7.0_79
Reporter: Sven Linstaedt
When starting a CDI container multiple times (e.g. during execution of multiple
tests), the class generator used by the PartialBean module tries to redefine an
already generating class, causing java.lang.LinkageError. This could be simply
reproduces by having the partial bean module with an partial bean definition in
the classpath and (re-)starting the CdiContainer a second time:
{code}
public class Main {
public static void main(String[] args) {
CdiContainer container = CdiContainerLoader.getCdiContainer();
container.boot();
container.shutdown();
container.boot();
}
}
{code}
{noformat}
Exception in thread "main" org.jboss.weld.exceptions.DefinitionException:
Exception List with 1 exceptions:
Exception 0 :
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at
org.apache.deltaspike.proxy.impl.AsmProxyClassGenerator.loadClass(AsmProxyClassGenerator.java:465)
at
org.apache.deltaspike.proxy.impl.AsmProxyClassGenerator.generateProxyClass(AsmProxyClassGenerator.java:66)
at
org.apache.deltaspike.proxy.api.DeltaSpikeProxyFactory.createProxyClass(DeltaSpikeProxyFactory.java:125)
at
org.apache.deltaspike.proxy.api.DeltaSpikeProxyFactory.getProxyClass(DeltaSpikeProxyFactory.java:88)
at
org.apache.deltaspike.proxy.api.DeltaSpikeProxyContextualLifecycle.<init>(DeltaSpikeProxyContextualLifecycle.java:62)
at
org.apache.deltaspike.partialbean.impl.PartialBeanBindingExtension.createPartialBean(PartialBeanBindingExtension.java:186)
at
org.apache.deltaspike.partialbean.impl.PartialBeanBindingExtension.createBeans(PartialBeanBindingExtension.java:150)
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.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:88)
at
org.jboss.weld.injection.MethodInvocationStrategy$SpecialParamPlusBeanManagerStrategy.invoke(MethodInvocationStrategy.java:144)
at
org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:309)
at
org.jboss.weld.event.ExtensionObserverMethodImpl.sendEvent(ExtensionObserverMethodImpl.java:124)
at
org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:287)
at
org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:265)
at
org.jboss.weld.event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:271)
at
org.jboss.weld.event.ObserverNotifier.notify(ObserverNotifier.java:260)
at
org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:154)
at
org.jboss.weld.event.ObserverNotifier.fireEvent(ObserverNotifier.java:148)
at
org.jboss.weld.bootstrap.events.AbstractContainerEvent.fire(AbstractContainerEvent.java:53)
at
org.jboss.weld.bootstrap.events.AbstractDefinitionContainerEvent.fire(AbstractDefinitionContainerEvent.java:42)
at
org.jboss.weld.bootstrap.events.AfterBeanDiscoveryImpl.fire(AfterBeanDiscoveryImpl.java:61)
at
org.jboss.weld.bootstrap.WeldStartup.deployBeans(WeldStartup.java:423)
at
org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:83)
at org.jboss.weld.environment.se.Weld.initialize(Weld.java:557)
at
org.apache.deltaspike.cdise.weld.WeldContainerControl.boot(WeldContainerControl.java:68)
at kn.gvs.shipmentoperating.Main.main(Main.java:12)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
org.apache.deltaspike.proxy.impl.AsmProxyClassGenerator.loadClass(AsmProxyClassGenerator.java:452)
... 28 more
Caused by: java.lang.LinkageError: loader (instance of
sun/misc/Launcher$AppClassLoader): attempted duplicate class definition for
name:
"kn/gvs/shipmentoperating/dashboard/ui/controller/ShipmentTaskController/Factory$$DSPartialBeanProxy"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
... 32 more
at
org.jboss.weld.bootstrap.events.AbstractDefinitionContainerEvent.fire(AbstractDefinitionContainerEvent.java:44)
at
org.jboss.weld.bootstrap.events.AfterBeanDiscoveryImpl.fire(AfterBeanDiscoveryImpl.java:61)
at
org.jboss.weld.bootstrap.WeldStartup.deployBeans(WeldStartup.java:423)
at
org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:83)
at org.jboss.weld.environment.se.Weld.initialize(Weld.java:557)
at
org.apache.deltaspike.cdise.weld.WeldContainerControl.boot(WeldContainerControl.java:68)
{noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)