diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/deppack/DepPackServlet.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/deppack/DepPackServlet.java
index 33d74a8..bea5087 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/deppack/DepPackServlet.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/deppack/DepPackServlet.java
@@ -36,7 +36,6 @@
 import org.json.JSONException;
 import org.json.JSONWriter;
 import org.osgi.service.deploymentadmin.DeploymentAdmin;
-import org.osgi.service.deploymentadmin.DeploymentException;
 import org.osgi.service.deploymentadmin.DeploymentPackage;
 
 
@@ -55,7 +54,7 @@
     private static final String ACTION_UNINSTALL = "uninstalldp";
     private static final String PARAMETER_PCK_FILE = "pckfile";
 
-    private static final String DEPL_SERVICE = DeploymentAdmin.class.getName();
+    private static final String DEPL_SERVICE = "org.osgi.service.deploymentadmin.DeploymentAdmin";
 
     // templates
     private final String TEMPLATE;
@@ -94,7 +93,7 @@
                         resp.sendRedirect( uri );
                         return;
                     }
-                    catch ( DeploymentException e )
+                    catch ( /*Deployment*/ Exception e )
                     {
                         throw new ServletException( "Unable to deploy package.", e );
                     }
@@ -118,7 +117,7 @@
                             pck.uninstall();
                         }
                     }
-                    catch ( DeploymentException e )
+                    catch ( /*Deployment*/ Exception e )
                     {
                         throw new ServletException( "Unable to undeploy package.", e );
                     }
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/servlet/PluginHolder.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/servlet/PluginHolder.java
index 5fa2d79..95a9770 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/servlet/PluginHolder.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/servlet/PluginHolder.java
@@ -239,7 +239,10 @@
         for ( int i = 0; i < plugins.length; i++ )
         {
             final Plugin plugin = plugins[i];
-            if (!plugin.isEnabled() || null == plugin.getConsolePlugin()) continue;
+
+            if (!plugin.isEnabled()) {
+                continue;
+            }
 
             final String label = plugin.getLabel();
             String title = plugin.getTitle();
@@ -745,7 +748,7 @@
         protected AbstractWebConsolePlugin doGetConsolePlugin()
         {
             if (null == plugin) {
-                if (!isEnabled()) 
+                if (!isEnabled())
                 {
                     if (doLog)
                     {
@@ -759,7 +762,7 @@
                 {
                     Class pluginClass = getClass().getClassLoader().loadClass(pluginClassName);
                     plugin = (AbstractWebConsolePlugin) pluginClass.newInstance();
-    
+
                     if (plugin instanceof OsgiManagerPlugin)
                     {
                         ((OsgiManagerPlugin) plugin).activate(getBundle().getBundleContext());
