diff --git a/jaas/src/main/java/org/apache/felix/jaas/internal/JaasConfigFactory.java b/jaas/src/main/java/org/apache/felix/jaas/internal/JaasConfigFactory.java
index 6235afa..143964d 100644
--- a/jaas/src/main/java/org/apache/felix/jaas/internal/JaasConfigFactory.java
+++ b/jaas/src/main/java/org/apache/felix/jaas/internal/JaasConfigFactory.java
@@ -19,10 +19,13 @@
 
 package org.apache.felix.jaas.internal;
 
-import static org.apache.felix.jaas.internal.Util.trimToNull;
-
-import java.util.*;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 
 import org.apache.felix.jaas.LoginModuleFactory;
 import org.apache.felix.scr.annotations.Component;
@@ -37,6 +40,8 @@
 import org.osgi.service.cm.ManagedServiceFactory;
 import org.osgi.service.log.LogService;
 
+import static org.apache.felix.jaas.internal.Util.trimToNull;
+
 @Component(label = "%jaas.name",
         description = "%jaas.description",
         metatype = true,
@@ -73,7 +78,7 @@
 
     private final BundleContext context;
 
-    private final Map<String, ServiceRegistration> registrations = new ConcurrentHashMap<String, ServiceRegistration>();
+    private final ConcurrentMap<String, ServiceRegistration> registrations = new ConcurrentHashMap<String, ServiceRegistration>();
 
     public JaasConfigFactory(BundleContext context, LoginModuleCreator factory, Logger log)
     {
@@ -126,7 +131,13 @@
 
         ServiceRegistration reg = context.registerService(
             LoginModuleFactory.class.getName(), lmf, new Properties());
-        registrations.put(pid, reg);
+        ServiceRegistration oldReg = registrations.put(pid, reg);
+
+        //Remove earlier registration if any
+        if(oldReg != null)
+        {
+            oldReg.unregister();
+        }
     }
 
     @Override
