-
Bug
-
Resolution: Done
-
Major
-
23.0.0.Final
As soon as a deployment containing an EJB (in my case it is a @Remote interface) is deployed to the application server, I get the following exception:
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private static final java.lang.reflect.Method jdk.proxy26.$Proxy153.m0 accessible: module jdk.proxy26 does not "opens jdk.proxy26" to unnamed module @652c95fd at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:177) at java.base/java.lang.reflect.Field.setAccessible(Field.java:171) at org.jboss.ejb-client@4.0.39.Final//org.jboss.ejb.client.EJBProxyInformation$1.doCompute(EJBProxyInformation.java:101) at org.jboss.ejb-client@4.0.39.Final//org.jboss.ejb.client.EJBProxyInformation$1.computeValue(EJBProxyInformation.java:72) at org.jboss.ejb-client@4.0.39.Final//org.jboss.ejb.client.EJBProxyInformation$1.computeValue(EJBProxyInformation.java:66) at java.base/java.lang.ClassValue.getFromHashMap(ClassValue.java:228) at java.base/java.lang.ClassValue.getFromBackup(ClassValue.java:210) at java.base/java.lang.ClassValue.get(ClassValue.java:116) at org.jboss.ejb-client@4.0.39.Final//org.jboss.ejb.client.EJBProxyInformation.forViewType(EJBProxyInformation.java:242) at org.jboss.ejb-client@4.0.39.Final//org.jboss.ejb.client.EJBLocator.getProxyInformation(EJBLocator.java:375) at org.jboss.ejb-client@4.0.39.Final//org.jboss.ejb.client.EJBLocator.getProxyConstructor(EJBLocator.java:370) at org.jboss.ejb-client@4.0.39.Final//org.jboss.ejb.client.EJBLocator.createProxyInstance(EJBLocator.java:387) at org.jboss.ejb-client@4.0.39.Final//org.jboss.ejb.client.EJBClient.createProxy(EJBClient.java:161) at org.jboss.ejb-client@4.0.39.Final//org.jboss.ejb.client.EJBClient.createProxy(EJBClient.java:156) at org.jboss.as.ejb3@23.0.0.Final//org.jboss.as.ejb3.component.session.StatelessRemoteViewInstanceFactory.createViewInstance(StatelessRemoteViewInstanceFactory.java:53) at org.jboss.as.ee@23.0.0.Final//org.jboss.as.ee.component.ViewService$View.createInstance(ViewService.java:184) at org.jboss.as.ee@23.0.0.Final//org.jboss.as.ee.component.ViewService$View.createInstance(ViewService.java:174) at org.jboss.as.weld.ejb@23.0.0.Final//org.jboss.as.weld.services.bootstrap.WeldEjbInjectionServices$LazyResourceReferenceFactory.createResource(WeldEjbInjectionServices.java:290)
Release notes of Java 16 lists the following change:
Proxy Classes Are Not Open for Reflective Access (JDK-8159746) core-libs/java.lang:reflect All proxy classes are not open for reflective access in Java SE 16. Prior to Java SE 16, if java.lang.reflect.Proxy was used to implement only public exported proxy interfaces, the proxy class was generated in an unnamed module which was open for reflective access. In Java SE 16, the proxy class is generated in an exported package in a named module. Programs that assume the private members of a proxy class can be made accessible via setAccessible(true) will fail with InaccessibleObjectException. Proxy classes are already defined in dynamic modules in other cases since Java SE 9. Such programs would already fail when it calls setAccessible(true) to those proxy classes prior to this change.
I tried to debug that error, but as I'm pretty inexperienced related to Java modules, all I can say is:
- The EJB Proxy class is generated in a dynamic module with a variable name (jdk.proxy*XXX*)
- It is not possible to --add-opens to that dynamic module
- blocks
-
RESTEASY-2903 Ignore remote EJB tests until WildFly ships with the new EJB client
- Closed
- is duplicated by
-
WFLY-14680 Fix failure that occurs when org.jboss.ejb.client.EJBProxyInformation calls java.lang.reflect.Field.setAccessible on JDK16
- Resolved
- is incorporated by
-
WFLY-14802 Upgrade jboss-ejb-client to 4.0.40.Final
- Closed
- is triggering
-
WFLY-15594 Make sure EJB proxy methods are cached correctly
- Open
- relates to
-
WFLY-14680 Fix failure that occurs when org.jboss.ejb.client.EJBProxyInformation calls java.lang.reflect.Field.setAccessible on JDK16
- Resolved