-
1. Re: JDK11 Wildfly 14 and EJB Schedule,Singleton
pmm Oct 24, 2018 7:49 AM (in response to ramboid)The interesting part in the stack trace is
Caused by: org.jboss.weld.exceptions.WeldException: WELD-001524: Unable to load proxy class for bean Session bean [class WorkerBean with qualifiers [@Any @Default]; local interfaces are [WorkerBean] with class class WorkerBean using classloader ModuleClassLoader for Module "deployment.crontimer11.jar" from Service Module Loader
at org.jboss.weld.core@3.0.5.Final//org.jboss.weld.bean.proxy.ProxyFactory.getProxyClass(ProxyFactory.java:370)
at org.jboss.weld.core@3.0.5.Final//org.jboss.weld.module.ejb.SessionBeanProxyInstantiator.<init>(SessionBeanProxyInstantiator.java:48)
at org.jboss.weld.core@3.0.5.Final//org.jboss.weld.module.ejb.SessionBeanImpl.initializeAfterBeanDiscovery(SessionBeanImpl.java:283)
at org.jboss.weld.core@3.0.5.Final//org.jboss.weld.bootstrap.ConcurrentBeanDeployer$AfterBeanDiscoveryInitializerFactory.doWork(ConcurrentBeanDeployer.java:111)
at org.jboss.weld.core@3.0.5.Final//org.jboss.weld.bootstrap.ConcurrentBeanDeployer$AfterBeanDiscoveryInitializerFactory.doWork(ConcurrentBeanDeployer.java:102)
at org.jboss.weld.core@3.0.5.Final//org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:62)
at org.jboss.weld.core@3.0.5.Final//org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:55)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
at org.jboss.threads@2.3.2.Final//org.jboss.threads.JBossThread.run(JBossThread.java:485)
Caused by: java.lang.RuntimeException: java.lang.ClassFormatError: Illegal class name "/WorkerBean$Proxy$_$$_Weld$EnterpriseProxy$" in class file /WorkerBean$Proxy$_$$_Weld$EnterpriseProxy$
at org.jboss.weld.core@3.0.5.Final//org.jboss.weld.util.bytecode.ClassFileUtils.toClass(ClassFileUtils.java:113)
at org.jboss.weld.core@3.0.5.Final//org.jboss.weld.bean.proxy.ProxyFactory.createProxyClass(ProxyFactory.java:469)
at org.jboss.weld.core@3.0.5.Final//org.jboss.weld.bean.proxy.ProxyFactory.getProxyClass(ProxyFactory.java:362)
... 11 more
Caused by: java.lang.ClassFormatError: Illegal class name "/WorkerBean$Proxy$_$$_Weld$EnterpriseProxy$" in class file /WorkerBean$Proxy$_$$_Weld$EnterpriseProxy$
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.jboss.weld.core@3.0.5.Final//org.jboss.weld.util.bytecode.ClassFileUtils.toClass2(ClassFileUtils.java:120)
at org.jboss.weld.core@3.0.5.Final//org.jboss.weld.util.bytecode.ClassFileUtils.toClass(ClassFileUtils.java:109)
... 13 more
-
2. Re: JDK11 Wildfly 14 and EJB Schedule,Singleton
ramboid Oct 24, 2018 8:15 AM (in response to pmm)I found a Jira case about WELD messages in this link: [WELD-2244] Unable to create proxy for large class - JBoss Issue Tracker. It looks like some versions of WELD used to fail "When a proxy is created while decorating a bean with many methods".
The code of the WorkerBean has two annotations (Is that too much "decoration"?) as follows:
import javax.ejb.Singleton;
import javax.ejb.Lock;
import javax.ejb.LockType;
import java.util.concurrent.atomic.AtomicBoolean;@Singleton
public class WorkerBean {
private AtomicBoolean busy = new AtomicBoolean(false);
@Lock(LockType.READ)
public void doTimerWork() throws InterruptedException {
if (!busy.compareAndSet(false, true)) {
System.out.println("WorkerBean not busy compareAndSet ....");
return;
}
try {
System.out.println("WorkerBean execute ....");
//Thread.sleep(20000L);
} finally {
busy.set(false);
}
}
}