2 years ago
#57672
vvitaliykuts
Java 11 java.util.MissingResourceException: Can't find bundle for base name sun.security.util.Resources, locale en_US when calling jmx Bean
We recently migrated our app to java 11 and we are experiencing issues when using jmx to access mbeans. We used JDK Mission Control and also jmx term (https://docs.cyclopsgroup.org/welcome, it is based on jconsole) to access. MBeans are exposed via Spring (5.2.5.RELEASE).
The same functionality worked fine with java 7 and it looks like it works with java11 adoptjdk (not fully verified on the same conditions, just checked when app runs in Intellij).
It could be some problem with locale we use to run but changing of locale doesn't have any difference.
Environment: java: openjdk version "11.0.13" 2021-10-19 LTS OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing) Vendor is RedHat
linux: NAME="Red Hat Enterprise Linux Server" VERSION="7.9 (Maipo)"
locale:
LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
Exception:
javax.management.RuntimeMBeanException: java.util.MissingResourceException: Can't find bundle for base name sun.security.util.Resources, locale en_US
at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.rethrow(DefaultMBeanServerInterceptor.java:829)
at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.rethrowMaybeMBeanException(DefaultMBeanServerInterceptor.java:842)
at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:811)
at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1466)
at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1307)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1406)
at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:827)
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 java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:562)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:796)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:677)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:676)
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:829)
at java.rmi/sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:303)
at java.rmi/sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:279)
at java.rmi/sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161)
at jdk.remoteref/jdk.jmx.remote.internal.rmi.PRef.invoke(Unknown Source)
at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl_Stub.invoke(Unknown Source)
at java.management.rmi/javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.invoke(RMIConnector.java:1021)
at org.openjdk.jmc.rjmx.internal.MCMBeanServerConnection.invoke(MCMBeanServerConnection.java:258)
at org.openjdk.jmc.rjmx.internal.MBeanOperationWrapper$1.call(MBeanOperationWrapper.java:104)
at org.openjdk.jmc.rjmx.ui.operations.ExecuteOperationForm$4.run(ExecuteOperationForm.java:182)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.util.MissingResourceException: Can't find bundle for base name sun.security.util.Resources, locale en_US
at java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2055)
at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1689)
at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1582)
at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1556)
at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:857)
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
at java.base/sun.security.util.ResourcesMgr.getBundle(ResourcesMgr.java:54)
at java.base/sun.security.util.ResourcesMgr.getString(ResourcesMgr.java:40)
at java.base/javax.security.auth.Subject.collectionNullClean(Subject.java:1004)
at java.base/javax.security.auth.Subject$SecureSet.containsAll(Subject.java:1279)
at java.base/javax.security.auth.Subject$SecureSet.equals(Subject.java:1382)
at java.base/java.util.Collections$SynchronizedSet.equals(Collections.java:2143)
at java.base/javax.security.auth.SubjectDomainCombiner.combine(SubjectDomainCombiner.java:196)
at java.management/com.sun.jmx.remote.security.JMXSubjectDomainCombiner.combine(JMXSubjectDomainCombiner.java:71)
at java.base/java.security.AccessControlContext.optimize(AccessControlContext.java:608)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.getCombinedACC(ProtectionDomain.java:109)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.management/javax.management.modelmbean.RequiredModelMBean.resolveMethod(RequiredModelMBean.java:1047)
at java.management/javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:1005)
at org.springframework.jmx.export.SpringModelMBean.invoke(SpringModelMBean.java:90)
at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:809)
at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1466)
at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1307)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1406)
at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:827)
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 java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:562)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:796)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:677)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:676)
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:829)
Caused by: java.lang.IllegalStateException: Recursive update
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1760)
at java.base/sun.security.util.ResourcesMgr.getBundle(ResourcesMgr.java:54)
at java.base/sun.security.util.ResourcesMgr.getString(ResourcesMgr.java:40)
at java.base/javax.security.auth.Subject.collectionNullClean(Subject.java:1004)
at java.base/javax.security.auth.Subject$SecureSet.containsAll(Subject.java:1279)
at java.base/javax.security.auth.Subject$SecureSet.equals(Subject.java:1382)
at java.base/java.util.Collections$SynchronizedSet.equals(Collections.java:2143)
at java.base/javax.security.auth.SubjectDomainCombiner.combine(SubjectDomainCombiner.java:196)
at java.management/com.sun.jmx.remote.security.JMXSubjectDomainCombiner.combine(JMXSubjectDomainCombiner.java:71)
at java.base/java.security.AccessControlContext.optimize(AccessControlContext.java:608)
at java.base/java.security.AccessController.getContext(AccessController.java:839)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:424)
at java.base/java.util.ResourceBundle$ResourceBundleProviderHelper.loadResourceBundle(ResourceBundle.java:3602)
at java.base/java.util.ResourceBundle.loadBundle(ResourceBundle.java:1844)
at java.base/java.util.ResourceBundle.findBundle(ResourceBundle.java:1774)
at java.base/java.util.ResourceBundle.findBundle(ResourceBundle.java:1728)
at java.base/java.util.ResourceBundle.findBundle(ResourceBundle.java:1728)
at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1662)
... 42 more
java
spring
redhat
jmx
java-11
0 Answers
Your Answer