diff --git a/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/OptionalFeaturesHandler.java b/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/OptionalFeaturesHandler.java
index bc73c8a..5f2d54d 100644
--- a/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/OptionalFeaturesHandler.java
+++ b/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/OptionalFeaturesHandler.java
@@ -107,22 +107,58 @@
                 {
                     if ( event.getType() == ServiceEvent.REGISTERED )
                     {
-                        this.bindEventAdmin(event.getServiceReference());
+                        new Thread()
+                        {
+                            public void run()
+                            {
+                                try {
+                                    Thread.sleep(500);
+                                } catch (InterruptedException ignore) {}
+                                bindEventAdmin(event.getServiceReference());
+                            }
+                        }.start();
                     }
                     else if ( event.getType() == ServiceEvent.UNREGISTERING )
                     {
-                        this.unbindEventAdmin(event.getServiceReference());
+                        new Thread()
+                        {
+                            public void run()
+                            {
+                                try {
+                                    Thread.sleep(500);
+                                } catch (InterruptedException ignore) {}
+                                unbindEventAdmin(event.getServiceReference());
+                            }
+                        }.start();
                     }
                 }
                 else if ( objectClasses[i].equals(CONFIGURATION_ADMIN_CLASS_NAME) )
                 {
                     if ( event.getType() == ServiceEvent.REGISTERED )
                     {
-                        this.bindConfigAdmin(event.getServiceReference());
+                        new Thread()
+                        {
+                            public void run()
+                            {
+                                try {
+                                    Thread.sleep(500);
+                                } catch (InterruptedException ignore) {}
+                                bindConfigAdmin(event.getServiceReference());
+                            }
+                        }.start();
                     }
                     else if ( event.getType() == ServiceEvent.UNREGISTERING )
                     {
-                        this.unbindConfigAdmin(event.getServiceReference());
+                        new Thread()
+                        {
+                            public void run()
+                            {
+                                try {
+                                    Thread.sleep(500);
+                                } catch (InterruptedException ignore) {}
+                                unbindConfigAdmin(event.getServiceReference());
+                            }
+                        }.start();
                     }
                 }
             }
@@ -148,7 +184,7 @@
 
     private void unbindEventAdmin(final ServiceReference ref)
     {
-        if ( this.eventAdminReference == ref )
+        if ( this.eventAdminReference != null && this.eventAdminReference.equals(ref) )
         {
             this.eventAdminReference = null;
             this.plugin.setEventAdminAvailable(false);
diff --git a/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/PluginServlet.java b/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/PluginServlet.java
index 0cfcc2a..ebdf884 100644
--- a/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/PluginServlet.java
+++ b/webconsole-plugins/event/src/main/java/org/apache/felix/webconsole/plugins/event/internal/PluginServlet.java
@@ -39,10 +39,10 @@
     private final EventCollector collector;
 
     /** Is the event admin available? */
-    private boolean eventAdminAvailable = false;
+    private volatile boolean eventAdminAvailable = false;
 
     /** Is the config admin available? */
-    private boolean configAdminAvailable = false;
+    private volatile boolean configAdminAvailable = false;
 
     public PluginServlet()
     {
