diff --git a/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java b/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
index 002cea3..7b197fe 100644
--- a/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
+++ b/framework/src/main/java/org/apache/felix/framework/ExtensionManager.java
@@ -91,30 +91,38 @@
     static
     {
         // pre-init the url sub-system as otherwise we don't work on gnu/classpath
-        ExtensionManager extensionManager = new ExtensionManager();
-        try
+        ExtensionManager extensionManager = null;
+
+        if (!"true".equalsIgnoreCase(Felix.m_secureAction.getSystemProperty(
+            FelixConstants.FELIX_EXTENSIONS_DISABLE, "false")))
         {
-            (new URL("http://felix.extensions:9/")).openConnection();
-        }
-        catch (Throwable t)
-        {
-            // This doesn't matter much - we only need the above to init the url subsystem
+            try
+            {
+                (new URL("http://felix.extensions:9/")).openConnection();
+            }
+            catch (Throwable t)
+            {
+                // This doesn't matter much - we only need the above to init the url subsystem
+            }
+
+            // We use the secure action of Felix to add a new instance to the parent
+            // classloader.
+            try
+            {
+                extensionManager = new ExtensionManager();
+
+                Felix.m_secureAction.addURLToURLClassLoader(Felix.m_secureAction.createURL(
+                    Felix.m_secureAction.createURL(null, "http:", extensionManager),
+                    "http://felix.extensions:9/", extensionManager),
+                    Felix.class.getClassLoader());
+            }
+            catch (Throwable ex)
+            {
+                // extension bundles will not be supported.
+                extensionManager = null;
+            }
         }
 
-        // We use the secure action of Felix to add a new instance to the parent
-        // classloader.
-        try
-        {
-            Felix.m_secureAction.addURLToURLClassLoader(Felix.m_secureAction.createURL(
-                Felix.m_secureAction.createURL(null, "http:", extensionManager),
-                "http://felix.extensions:9/", extensionManager),
-                Felix.class.getClassLoader());
-        }
-        catch (Throwable ex)
-        {
-            // extension bundles will not be supported.
-            extensionManager = null;
-        }
         m_extensionManager = extensionManager;
     }
 
diff --git a/framework/src/main/java/org/apache/felix/framework/util/FelixConstants.java b/framework/src/main/java/org/apache/felix/framework/util/FelixConstants.java
index a61443a..a48de4b 100644
--- a/framework/src/main/java/org/apache/felix/framework/util/FelixConstants.java
+++ b/framework/src/main/java/org/apache/felix/framework/util/FelixConstants.java
@@ -65,4 +65,5 @@
     String FAKE_URL_PROTOCOL_VALUE = "location:";
     String FELIX_EXTENSION_ACTIVATOR = "Felix-Activator";
     String SECURITY_DEFAULT_POLICY = "felix.security.defaultpolicy";
+    String FELIX_EXTENSIONS_DISABLE = "felix.extensions.disable";
 }
