Anubhav Mishra created AMQ-9459:
-----------------------------------
Summary: Add appropriate JVM Args to allow access to sun.nio.*
classes
Key: AMQ-9459
URL: https://issues.apache.org/jira/browse/AMQ-9459
Project: ActiveMQ Classic
Issue Type: Bug
Affects Versions: 5.17.6
Reporter: Anubhav Mishra
When ActiveMQ running ActiveMQ on Java 17 or later JRE, it encounters following
exception:
{code:java}
ERROR | Could not set property soTimeout on
ServerSocket[addr=/0:0:0:0:0:0:0:0,localport=xxxxx] |
org.apache.activemq.util.IntrospectionSupport | main
java.lang.reflect.InaccessibleObjectException: Unable to make public void
sun.nio.ch.ServerSocketAdaptor.setSoTimeout(int) throws
java.net.SocketException accessible: module java.base does not "opens
sun.nio.ch" to unnamed module @4739cd70
at
java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
at
java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at
java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
at
org.apache.activemq.util.IntrospectionSupport.setProperty(IntrospectionSupport.java:179)
at
org.apache.activemq.util.IntrospectionSupport.setProperties(IntrospectionSupport.java:155)
at
org.apache.activemq.transport.tcp.TcpTransportServer.configureServerSocket(TcpTransportServer.java:202)
at
org.apache.activemq.transport.tcp.TcpTransportServer.bind(TcpTransportServer.java:144)
at
org.apache.activemq.transport.auto.nio.AutoNioSslTransportFactory.doBind(AutoNioSslTransportFactory.java:122)
at
org.apache.activemq.transport.TransportFactorySupport.bind(TransportFactorySupport.java:40)
at
org.apache.activemq.broker.TransportConnector.createTransportServer(TransportConnector.java:340)
at
org.apache.activemq.broker.TransportConnector.getServer(TransportConnector.java:148)
at
org.apache.activemq.broker.TransportConnector.asManagedConnector(TransportConnector.java:113)
at
org.apache.activemq.broker.BrokerService.registerConnectorMBean(BrokerService.java:2241)
at
org.apache.activemq.broker.BrokerService.startTransportConnector(BrokerService.java:2728)
at
org.apache.activemq.broker.BrokerService.startAllConnectors(BrokerService.java:2624)
at
org.apache.activemq.broker.BrokerService.doStartBroker(BrokerService.java:762)
at
org.apache.activemq.broker.BrokerService.startBroker(BrokerService.java:724)
at
org.apache.activemq.broker.BrokerService.start(BrokerService.java:622) {code}
According to Oracle, with [JEP 403 (link1)|https://openjdk.java.net/jeps/403]
and [JEP 403 (link2)|https://bugs.openjdk.java.net/browse/JDK-8263547] which
has been decided to be *delivered from JDK 17 and onwards* , the setAccessible
approach which was introduced as part of
https://issues.apache.org/jira/browse/AMQ-7121 wont work.
Fix: Adding the following in activemq file should do the job:
--add-opens java.base/sun.nio.ch=ALL-UNNAMED
--
This message was sent by Atlassian Jira
(v8.20.10#820010)