diff --git a/http/jetty/pom.xml b/http/jetty/pom.xml
index a5cb433..6e6a5a4 100644
--- a/http/jetty/pom.xml
+++ b/http/jetty/pom.xml
@@ -94,6 +94,11 @@
         </dependency>
         <dependency>
             <groupId>org.mortbay.jetty</groupId>
+            <artifactId>jetty-management</artifactId>
+            <version>6.1.24</version>
+        </dependency>
+        <dependency>
+            <groupId>org.mortbay.jetty</groupId>
             <artifactId>jetty-sslengine</artifactId>
             <version>6.1.24</version>
         </dependency>
diff --git a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java
index 6053b5e..d57c627 100644
--- a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java
+++ b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java
@@ -67,6 +67,9 @@
     /** Felix specific property to control whether Jetty uses NIO or not for HTTPS. Valid values are "true", "false". Default is the value of org.apache.felix.http.nio */
     public static final String  FELIX_HTTPS_NIO = "org.apache.felix.https.nio";
 
+    /** Felix specific property to enable Jetty MBeans. Valid values are "true", "false". Default is false */
+    public static final String  FELIX_HTTP_MBEANS = "org.apache.felix.http.mbeans";
+
     private final BundleContext context;
     private boolean debug;
     private int httpPort;
@@ -81,6 +84,7 @@
     private String clientcert;
     private boolean useHttpNio;
     private boolean useHttpsNio;
+    private boolean registerMBeans;
 
     public JettyConfig(BundleContext context)
     {
@@ -123,6 +127,11 @@
         return this.useHttpsNio;
     }
 
+    public boolean isRegisterMBeans()
+    {
+        return this.registerMBeans;
+    }
+
     public int getHttpPort()
     {
         return this.httpPort;
@@ -187,6 +196,7 @@
         this.clientcert = getProperty(props, FELIX_HTTPS_CLIENT_CERT, "none");
         this.useHttpNio = getBooleanProperty(props, FELIX_HTTP_NIO, true);
         this.useHttpsNio = getBooleanProperty(props, FELIX_HTTPS_NIO, this.useHttpNio);
+        this.registerMBeans = getBooleanProperty(props, FELIX_HTTP_MBEANS, false);
     }
 
     private String getProperty(Dictionary props, String name, String defValue)
diff --git a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
index 328ae0a..096191f 100644
--- a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
+++ b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
@@ -51,6 +51,7 @@
     private DispatcherServlet dispatcher;
     private EventDispatcher eventDispatcher;
     private final HttpServiceController controller;
+    private MBeanServerTracker mbeanServerTracker;
 
     public JettyService(BundleContext context, DispatcherServlet dispatcher, EventDispatcher eventDispatcher,
         HttpServiceController controller)
@@ -131,6 +132,12 @@
             {
                 SystemLogger.error("Exception while stopping Jetty.", e);
             }
+
+            if (this.mbeanServerTracker != null)
+            {
+                this.mbeanServerTracker.close();
+                this.mbeanServerTracker = null;
+            }
         }
     }
 
@@ -145,7 +152,13 @@
 
             // HTTP/1.1 requires Date header if possible (it is)
             this.server.setSendDateHeader(true);
-            
+
+            if (this.config.isRegisterMBeans())
+            {
+                this.mbeanServerTracker = new MBeanServerTracker(this.context, this.server);
+                this.mbeanServerTracker.open();
+            }
+
             this.server.addUserRealm(realm);
 
             if (this.config.isUseHttp())
diff --git a/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/MBeanServerTracker.java b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/MBeanServerTracker.java
new file mode 100644
index 0000000..203155d
--- /dev/null
+++ b/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/MBeanServerTracker.java
@@ -0,0 +1,56 @@
+/*
+ * 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.http.jetty.internal;
+
+import javax.management.MBeanServer;
+
+import org.mortbay.jetty.Server;
+import org.mortbay.management.MBeanContainer;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.util.tracker.ServiceTracker;
+
+public class MBeanServerTracker extends ServiceTracker
+{
+
+    private final Server server;
+
+    public MBeanServerTracker(final BundleContext context, final Server server)
+    {
+        super(context, MBeanServer.class.getName(), null);
+        this.server = server;
+    }
+
+    @Override
+    public Object addingService(ServiceReference reference)
+    {
+        MBeanServer server = (MBeanServer) super.addingService(reference);
+        MBeanContainer mBeanContainer = new MBeanContainer(server);
+        this.server.getContainer().addEventListener(mBeanContainer);
+        return mBeanContainer;
+    }
+
+    @Override
+    public void removedService(ServiceReference reference, Object service)
+    {
+        MBeanContainer mBeanContainer = (MBeanContainer) service;
+        this.server.getContainer().removeEventListener(mBeanContainer);
+        super.removedService(reference, mBeanContainer.getMBeanServer());
+    }
+}
diff --git a/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.properties b/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.properties
index a175b74..7034cb2 100644
--- a/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.properties
+++ b/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.properties
@@ -83,4 +83,8 @@
 org.apache.felix.https.nio.name = NIO for HTTPS
 org.apache.felix.https.nio.description = Wether or not to use NIO for HTTP. \
  Defaults to the value of the NIO for HTTP property. Only used if HTTPS is \
- enabled.
\ No newline at end of file
+ enabled.
+
+org.apache.felix.http.mbeans.name = Register MBeans
+org.apache.felix.http.mbeans.description = Whether or not to use register \
+ JMX MBeans from the servlet container (Jetty).
\ No newline at end of file
diff --git a/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.xml b/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.xml
index e4a3602..82ceeed 100644
--- a/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.xml
+++ b/http/jetty/src/main/resources/OSGI-INF/metatype/metatype.xml
@@ -7,6 +7,7 @@
         <AD id="org.apache.felix.https.enable" type="Boolean" default="false" name="%org.apache.felix.https.enable.name" description="%org.apache.felix.https.enable.description"/>
         <AD id="org.osgi.service.http.port.secure" type="Integer" default="433" name="%org.osgi.service.http.port.secure.name" description="%org.osgi.service.http.port.secure.description"/>
         <AD id="org.apache.felix.https.nio" type="Boolean" default="true" name="%org.apache.felix.https.nio.name" description="%org.apache.felix.https.nio.description"/>
+        <AD id="org.apache.felix.http.mbeans" type="Boolean" default="false" name="%org.apache.felix.http.mbeans.name" description="%org.apache.felix.http.mbeans.description"/>
         <AD id="org.apache.felix.https.keystore" type="String" name="%org.apache.felix.https.keystore.name" description="%org.apache.felix.https.keystore.description"/>
         <AD id="org.apache.felix.https.keystore.password" type="String" name="%org.apache.felix.https.keystore.password.name" description="%org.apache.felix.https.keystore.password.description"/>
         <AD id="org.apache.felix.https.keystore.key.password" type="String" name="%org.apache.felix.https.keystore.key.password.name" description="%org.apache.felix.https.keystore.key.password.description"/>
