diff --git a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/Configuration.java b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/Configuration.java
index fd97f9d..fc51f5c 100644
--- a/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/Configuration.java
+++ b/eventadmin/impl/src/main/java/org/apache/felix/eventadmin/impl/Configuration.java
@@ -18,6 +18,9 @@
  */
 package org.apache.felix.eventadmin.impl;
 
+import java.security.AccessControlContext;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 
 import java.util.Dictionary;
 import java.util.Hashtable;
@@ -172,9 +175,13 @@
 
     private ServiceRegistration m_managedServiceReg;
 
+    // the access control context
+    private final AccessControlContext acc;
+
     public Configuration( BundleContext bundleContext )
     {
         m_bundleContext = bundleContext;
+        this.acc = AccessController.getContext();
 
         // default configuration
         configure( null );
@@ -219,10 +226,24 @@
             @Override
             public void run()
             {
-                synchronized ( Configuration.this )
+                if (System.getSecurityManager() != null)
                 {
-                    Configuration.this.configure( config );
-                    Configuration.this.startOrUpdate();
+                    AccessController.doPrivileged(
+                        new PrivilegedAction<Void>() {
+
+                            @Override
+                            public Void run() {
+                                updateFromConfigAdmin0( config );
+                                return null;
+                            }
+
+                        },
+                        acc
+                    );
+                }
+                else
+                {
+                    updateFromConfigAdmin0( config );
                 }
             }
 
@@ -230,6 +251,14 @@
 
     }
 
+    void updateFromConfigAdmin0(final Dictionary<String, ?> config) {
+        synchronized ( Configuration.this )
+        {
+            Configuration.this.configure( config );
+            Configuration.this.startOrUpdate();
+        }
+    }
+
     /**
      * Configures this instance.
      */
