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() {

Reply via email to