diff --git a/org.eclipse.virgo.web.enterprise.applistener/src/main/java/org/eclipse/virgo/web/enterprise/applistener/internal/NamingResourcesListener.java b/org.eclipse.virgo.web.enterprise.applistener/src/main/java/org/eclipse/virgo/web/enterprise/applistener/internal/NamingResourcesListener.java
new file mode 100644
index 0000000..6ab67fa
--- /dev/null
+++ b/org.eclipse.virgo.web.enterprise.applistener/src/main/java/org/eclipse/virgo/web/enterprise/applistener/internal/NamingResourcesListener.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2012 SAP AG
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Violeta Georgieva - initial contribution
+ *******************************************************************************/
+
+package org.eclipse.virgo.web.enterprise.applistener.internal;
+
+import org.apache.catalina.Context;
+import org.apache.catalina.Lifecycle;
+import org.apache.catalina.LifecycleEvent;
+import org.apache.catalina.LifecycleListener;
+import org.apache.catalina.deploy.ContextEjb;
+import org.apache.catalina.deploy.ContextLocalEjb;
+import org.apache.catalina.deploy.NamingResources;
+
+public class NamingResourcesListener implements LifecycleListener {
+
+    @Override
+    public void lifecycleEvent(LifecycleEvent event) {
+        Object container = event.getLifecycle();
+
+        if (!(container instanceof Context)) {
+            return;
+        }
+
+        if (Lifecycle.CONFIGURE_START_EVENT.equals(event.getType())) {
+            NamingResources namingResources = ((Context) container).getNamingResources();
+
+            ContextEjb[] ejbs = namingResources.findEjbs();
+            for (int i = 0; ejbs != null && i < ejbs.length; i++) {
+                namingResources.removeEjb(ejbs[i].getName());
+            }
+
+            ContextLocalEjb[] localEjbs = namingResources.findLocalEjbs();
+            for (int i = 0; localEjbs != null && i < localEjbs.length; i++) {
+                namingResources.removeLocalEjb(localEjbs[i].getName());
+            }
+        }
+    }
+
+}
