diff --git a/karaf/management/pom.xml b/karaf/management/pom.xml
index dcdfbf4..dfc5997 100644
--- a/karaf/management/pom.xml
+++ b/karaf/management/pom.xml
@@ -35,14 +35,6 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.springframework.osgi</groupId>
-            <artifactId>spring-osgi-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-context</artifactId>
-        </dependency>
-        <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.osgi.core</artifactId>
             <scope>provided</scope>
@@ -74,10 +66,9 @@
                         <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
                         <Import-Package>
                             javax.management,
-                            org.springframework.jmx.support,
                             *
                         </Import-Package>
-                        <Export-Package>org.apache.servicemix.management*</Export-Package>
+                        <Export-Package>org.apache.felix.karaf.management*</Export-Package>
                         <Spring-Context>*;publish-context:=false</Spring-Context>
                     </instructions>
                 </configuration>
diff --git a/karaf/management/src/main/java/org/apache/felix/karaf/management/ConnectorServerFactory.java b/karaf/management/src/main/java/org/apache/felix/karaf/management/ConnectorServerFactory.java
new file mode 100644
index 0000000..4ab9f39
--- /dev/null
+++ b/karaf/management/src/main/java/org/apache/felix/karaf/management/ConnectorServerFactory.java
@@ -0,0 +1,138 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.felix.karaf.management;
+
+import java.io.IOException;
+import java.util.Map;
+
+import javax.management.JMException;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.remote.JMXConnectorServer;
+import javax.management.remote.JMXConnectorServerFactory;
+import javax.management.remote.JMXServiceURL;
+
+public class ConnectorServerFactory {
+
+    private MBeanServer server;
+    private String serviceUrl;
+    private Map environment;
+    private ObjectName objectName;
+    private boolean threaded = false;
+    private boolean daemon = false;
+    private JMXConnectorServer connectorServer;
+
+    public MBeanServer getServer() {
+        return server;
+    }
+
+    public void setServer(MBeanServer server) {
+        this.server = server;
+    }
+
+    public String getServiceUrl() {
+        return serviceUrl;
+    }
+
+    public void setServiceUrl(String serviceUrl) {
+        this.serviceUrl = serviceUrl;
+    }
+
+    public Map getEnvironment() {
+        return environment;
+    }
+
+    public void setEnvironment(Map environment) {
+        this.environment = environment;
+    }
+
+    public ObjectName getObjectName() {
+        return objectName;
+    }
+
+    public void setObjectName(ObjectName objectName) {
+        this.objectName = objectName;
+    }
+
+    public boolean isThreaded() {
+        return threaded;
+    }
+
+    public void setThreaded(boolean threaded) {
+        this.threaded = threaded;
+    }
+
+    public boolean isDaemon() {
+        return daemon;
+    }
+
+    public void setDaemon(boolean daemon) {
+        this.daemon = daemon;
+    }
+
+    public void init() throws Exception {
+        if (this.server == null) {
+            throw new IllegalArgumentException("server must be set");
+        }
+        JMXServiceURL url = new JMXServiceURL(this.serviceUrl);
+        this.connectorServer = JMXConnectorServerFactory.newJMXConnectorServer(url, this.environment, this.server);
+        if (this.objectName != null) {
+            this.server.registerMBean(this.connectorServer, this.objectName);
+        }
+        try {
+            if (this.threaded) {
+                Thread connectorThread = new Thread() {
+                    public void run() {
+                        try {
+                            connectorServer.start();
+                        } catch (IOException ex) {
+                            throw new RuntimeException("Could not start JMX connector server", ex);
+                        }
+                    }
+                };
+                connectorThread.setName("JMX Connector Thread [" + this.serviceUrl + "]");
+                connectorThread.setDaemon(this.daemon);
+                connectorThread.start();
+            }
+            else {
+                this.connectorServer.start();
+            }
+        } catch (Exception ex) {
+            doUnregister(this.objectName);
+            throw ex;
+        }
+    }
+
+    public void destroy() throws Exception {
+        try {
+            this.connectorServer.stop();
+        } finally {
+            doUnregister(this.objectName);
+        }
+    }
+
+    protected void doUnregister(ObjectName objectName) {
+        try {
+            if (this.objectName != null && this.server.isRegistered(objectName)) {
+                this.server.unregisterMBean(objectName);
+            }
+        }
+        catch (JMException ex) {
+            // Ignore
+        }
+    }
+}
diff --git a/karaf/management/src/main/java/org/apache/servicemix/management/JaasAuthenticator.java b/karaf/management/src/main/java/org/apache/felix/karaf/management/JaasAuthenticator.java
similarity index 98%
rename from karaf/management/src/main/java/org/apache/servicemix/management/JaasAuthenticator.java
rename to karaf/management/src/main/java/org/apache/felix/karaf/management/JaasAuthenticator.java
index 1353d3f..a3897ed 100644
--- a/karaf/management/src/main/java/org/apache/servicemix/management/JaasAuthenticator.java
+++ b/karaf/management/src/main/java/org/apache/felix/karaf/management/JaasAuthenticator.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.management;
+package org.apache.felix.karaf.management;
 
 import java.io.IOException;
 
diff --git a/karaf/management/src/main/java/org/apache/felix/karaf/management/MBeanServerFactory.java b/karaf/management/src/main/java/org/apache/felix/karaf/management/MBeanServerFactory.java
new file mode 100644
index 0000000..6bbc780
--- /dev/null
+++ b/karaf/management/src/main/java/org/apache/felix/karaf/management/MBeanServerFactory.java
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.felix.karaf.management;
+
+import java.lang.management.ManagementFactory;
+import java.util.List;
+
+import javax.management.MBeanServer;
+
+public class MBeanServerFactory {
+
+    private boolean locateExistingServerIfPossible = false;
+    private String agentId;
+    private String defaultDomain;
+    private boolean registerWithFactory = true;
+    private MBeanServer server;
+    private boolean newlyRegistered = false;
+
+    public boolean isLocateExistingServerIfPossible() {
+        return locateExistingServerIfPossible;
+    }
+
+    public void setLocateExistingServerIfPossible(boolean locateExistingServerIfPossible) {
+        this.locateExistingServerIfPossible = locateExistingServerIfPossible;
+    }
+
+    public String getAgentId() {
+        return agentId;
+    }
+
+    public void setAgentId(String agentId) {
+        this.agentId = agentId;
+    }
+
+    public String getDefaultDomain() {
+        return defaultDomain;
+    }
+
+    public void setDefaultDomain(String defaultDomain) {
+        this.defaultDomain = defaultDomain;
+    }
+
+    public boolean isRegisterWithFactory() {
+        return registerWithFactory;
+    }
+
+    public void setRegisterWithFactory(boolean registerWithFactory) {
+        this.registerWithFactory = registerWithFactory;
+    }
+
+    public boolean isNewlyRegistered() {
+        return newlyRegistered;
+    }
+
+    public void setNewlyRegistered(boolean newlyRegistered) {
+        this.newlyRegistered = newlyRegistered;
+    }
+
+    public MBeanServer getServer() throws Exception {
+        if (this.server == null) {
+            init();
+        }
+        return server;
+    }
+
+    public void init() throws Exception {
+        if (this.locateExistingServerIfPossible || this.agentId != null) {
+            try {
+                List servers = javax.management.MBeanServerFactory.findMBeanServer(agentId);
+                MBeanServer server = null;
+                if (servers != null && servers.size() > 0) {
+                    this.server = (MBeanServer) servers.get(0);
+                }
+                if (server == null && agentId == null) {
+                    this.server = ManagementFactory.getPlatformMBeanServer();
+                }
+                if (this.server == null) {
+                    throw new Exception("Unable to locate MBeanServer");
+                }
+            } catch (Exception ex) {
+                if (this.agentId != null) {
+                    throw ex;
+                }
+            }
+        }
+        if (this.server == null) {
+            if (this.registerWithFactory) {
+                this.server = javax.management.MBeanServerFactory.createMBeanServer(this.defaultDomain);
+            } else {
+                this.server = javax.management.MBeanServerFactory.newMBeanServer(this.defaultDomain);
+            }
+            this.newlyRegistered = this.registerWithFactory;
+        }
+    }
+
+    public void destroy() throws Exception {
+        if (this.newlyRegistered) {
+            javax.management.MBeanServerFactory.releaseMBeanServer(this.server);
+        }
+    }
+
+}
diff --git a/karaf/management/src/main/java/org/apache/servicemix/management/RmiRegistryFactoryBean.java b/karaf/management/src/main/java/org/apache/felix/karaf/management/RmiRegistryFactory.java
similarity index 83%
rename from karaf/management/src/main/java/org/apache/servicemix/management/RmiRegistryFactoryBean.java
rename to karaf/management/src/main/java/org/apache/felix/karaf/management/RmiRegistryFactory.java
index 1a5a995..640789a 100644
--- a/karaf/management/src/main/java/org/apache/servicemix/management/RmiRegistryFactoryBean.java
+++ b/karaf/management/src/main/java/org/apache/felix/karaf/management/RmiRegistryFactory.java
@@ -14,22 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.servicemix.management;
+package org.apache.felix.karaf.management;
 
 import java.rmi.RemoteException;
 import java.rmi.registry.LocateRegistry;
 import java.rmi.registry.Registry;
 import java.rmi.server.UnicastRemoteObject;
 
-import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.FactoryBean;
-import org.springframework.beans.factory.InitializingBean;
-
 /**
  * 
  * @author gnodet
  */
-public class RmiRegistryFactoryBean implements FactoryBean, InitializingBean, DisposableBean {
+public class RmiRegistryFactory {
 
     private int port = Registry.REGISTRY_PORT;
     private Registry registry;
@@ -83,15 +79,7 @@
         return registry;
     }
 
-    public Class getObjectType() {
-        return Registry.class;
-    }
-
-    public boolean isSingleton() {
-        return true;
-    }
-
-    public void afterPropertiesSet() throws RemoteException {
+    public void init() throws RemoteException {
         if (registry == null && locate) {
             try {
                 Registry reg = LocateRegistry.getRegistry(getPort());
diff --git a/karaf/management/src/main/resources/META-INF/spring/servicemix-management.xml b/karaf/management/src/main/resources/META-INF/spring/karaf-management.xml
similarity index 73%
rename from karaf/management/src/main/resources/META-INF/spring/servicemix-management.xml
rename to karaf/management/src/main/resources/META-INF/spring/karaf-management.xml
index 6a9bcc3..5ccd002 100644
--- a/karaf/management/src/main/resources/META-INF/spring/servicemix-management.xml
+++ b/karaf/management/src/main/resources/META-INF/spring/karaf-management.xml
@@ -36,9 +36,11 @@
   http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd">
 
     <!-- MBeanServer bean -->
-    <bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean">
+    <bean id="mbeanServerFactory" class="org.apache.felix.karaf.management.MBeanServerFactory" init-method="init" destroy-method="destroy">
         <property name="locateExistingServerIfPossible" value="true"/>
     </bean>
+    <bean id="mbeanServer" factory-bean="mbeanServerFactory" factory-method="getServer">
+    </bean>
 
     <!-- Export the MBeanServer as an OSGi service -->
     <osgi:service ref="mbeanServer">
@@ -48,36 +50,40 @@
     </osgi:service>
 
     <!-- Create a RMI registry -->
-    <bean id="rmiRegistry" class="org.apache.servicemix.management.RmiRegistryFactoryBean">
+    <bean id="rmiRegistryFactory" class="org.apache.felix.karaf.management.RmiRegistryFactory" init-method="init" destroy-method="destroy">
         <property name="create" value="true" />
         <property name="locate" value="true" />
         <property name="port" value="${rmiRegistryPort}" />
     </bean>
+    <bean id="rmiRegistry" factory-bean="rmiRegistryFactory" factory-method="getObject"/>
 
     <!-- Create a JMX connector ServiceFactory -->
-    <bean id="jmxConnectorService" class="org.springframework.jmx.support.ConnectorServerFactoryBean">
+    <bean id="jmxConnectorServiceFactory" class="org.apache.felix.karaf.management.ConnectorServerFactory" init-method="init" destroy-method="destroy">
         <property name="server" ref="mbeanServer" />
         <property name="serviceUrl" value="${serviceUrl}" />
         <property name="daemon" value="${daemon}" />
         <property name="threaded" value="${threaded}" />
-        <property name="objectName" value="${objectName}" />
-        <property name="environment" ref="jmxConnectorEnvironment" />
+        <property name="objectName">
+            <bean class="javax.management.ObjectName" factory-method="getInstance">
+                <constructor-arg value="${objectName}"/>
+            </bean>
+        </property>
+        <property name="environment">
+            <map>
+                <entry key="jmx.remote.authenticator" value-ref="jaasAuthenticator" />
+            </map>
+        </property>
     </bean>
 
-    <!-- Environment map for connectors -->
-    <util:map id="jmxConnectorEnvironment">
-        <entry key="jmx.remote.authenticator" value-ref="jaasAuthenticator" />
-    </util:map>
-
     <!-- JAAS authenticator -->
-    <bean id="jaasAuthenticator" class="org.apache.servicemix.management.JaasAuthenticator">
+    <bean id="jaasAuthenticator" class="org.apache.felix.karaf.management.JaasAuthenticator">
         <property name="realm" value="${jmxRealm}" />
     </bean>
 
     <!-- Property place holder -->
-    <osgix:cm-properties id="cmProps" persistent-id="org.apache.servicemix.management">
+    <osgix:cm-properties id="cmProps" persistent-id="org.apache.felix.karaf.management">
         <prop key="rmiRegistryPort">1099</prop>
-        <prop key="jmxRealm">servicemix</prop>
+        <prop key="jmxRealm">karaf</prop>
         <prop key="serviceUrl">service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi</prop>
         <prop key="daemon">true</prop>
         <prop key="threaded">true</prop>
diff --git a/karaf/management/src/test/configs/factories/management.properties b/karaf/management/src/test/configs/factories/management.properties
index 10c22db..3887ba8 100644
--- a/karaf/management/src/test/configs/factories/management.properties
+++ b/karaf/management/src/test/configs/factories/management.properties
@@ -17,7 +17,7 @@
 #
 ################################################################################
 
-service.pid=org.apache.servicemix.management.JmxConnectorServiceFactory
+service.pid=org.apache.felix.karaf.management.JmxConnectorServiceFactory
 instances=1
 keys=objectName,serviceUrl,threaded,daemon,
 objectName.1=connector:name=rmi
