This is an automated email from the ASF dual-hosted git repository. ffang pushed a commit to branch karaf-4.2.x in repository https://gitbox.apache.org/repos/asf/karaf.git
The following commit(s) were added to refs/heads/karaf-4.2.x by this push: new e173d00 [KARAF-6654]Remote JMX connection not working with security manager e173d00 is described below commit e173d002436d7d775570ef989c73d1cbb18d1230 Author: Freeman Fang <freeman.f...@gmail.com> AuthorDate: Tue Mar 23 18:05:44 2021 -0400 [KARAF-6654]Remote JMX connection not working with security manager (cherry picked from commit 5144a1eba5687dab0f016a9bf95e58e6687a26ad) --- .../management/internal/MBeanInvocationHandler.java | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/management/server/src/main/java/org/apache/karaf/management/internal/MBeanInvocationHandler.java b/management/server/src/main/java/org/apache/karaf/management/internal/MBeanInvocationHandler.java index b26ef2a..2a5015e 100644 --- a/management/server/src/main/java/org/apache/karaf/management/internal/MBeanInvocationHandler.java +++ b/management/server/src/main/java/org/apache/karaf/management/internal/MBeanInvocationHandler.java @@ -21,6 +21,8 @@ import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; +import java.security.AccessController; +import java.security.PrivilegedExceptionAction; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -56,11 +58,24 @@ public class MBeanInvocationHandler implements InvocationHandler { return null; } + + try { - return method.invoke(wrapped, args); - } catch (InvocationTargetException e) { - throw e.getCause(); + return AccessController.doPrivilegedWithCombiner(new PrivilegedExceptionAction<Object>() { + @Override + public Object run() throws Exception { + try { + return method.invoke(wrapped, args); + } catch (InvocationTargetException e) { + return null; + } + } + }); + } catch (Exception pae) { + Throwable cause = pae.getCause(); + throw cause == null ? pae:cause; } + } public MBeanServer getDelegate() {