diff --git a/build-web/build.xml b/build-web/build.xml
index 782de92..5770275 100644
--- a/build-web/build.xml
+++ b/build-web/build.xml
@@ -10,6 +10,7 @@
         <pathelement location="../org.eclipse.virgo.web.enterprise.applistener"/>
         <pathelement location="../org.eclipse.virgo.web.enterprise.jsf.support"/>
         <pathelement location="../org.eclipse.virgo.web.enterprise.openejb.initialiser"/>
+        <pathelement location="../org.eclipse.virgo.web.enterprise.openejb.tomcat.factory"/>
         <pathelement location="../org.eclipse.virgo.web.enterprise.openwebbeans.initialiser"/>
         <pathelement location="../org.eclipse.virgo.web.enterprise.services.accessor"/>
         <pathelement location="../org.eclipse.virgo.web.enterprise.security"/>
diff --git a/build.versions b/build.versions
index 3e68e9e..a87f63b 100644
--- a/build.versions
+++ b/build.versions
@@ -57,6 +57,9 @@
 org.apache.catalina=7.0.35.v201302131125
 org.apache.catalina.ha=7.0.35.v201302131607
 org.apache.catalina.tribes=7.0.35.v201302140645
+org.apache.juli.extras=7.0.35.v201302120746
+org.apache.tomcat.util=7.0.35.v201302140645
+org.apache.tomcat.api=7.0.35.v201302120746
 org.apache.taglibs=1.1.2.v20110517
 javax.servlet.jsp=2.2.0.v201112011158
 javax.servlet.jsp.jstl=1.2.0.v20110728
diff --git a/org.eclipse.virgo.web.enterprise.appdeployer/src/main/java/org/eclipse/virgo/web/enterprise/openejb/deployer/VirgoDeployerEjb.java b/org.eclipse.virgo.web.enterprise.appdeployer/src/main/java/org/eclipse/virgo/web/enterprise/openejb/deployer/VirgoDeployerEjb.java
index d4d1329..6d8b4e1 100755
--- a/org.eclipse.virgo.web.enterprise.appdeployer/src/main/java/org/eclipse/virgo/web/enterprise/openejb/deployer/VirgoDeployerEjb.java
+++ b/org.eclipse.virgo.web.enterprise.appdeployer/src/main/java/org/eclipse/virgo/web/enterprise/openejb/deployer/VirgoDeployerEjb.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2012 SAP AG
+ * Copyright (c) 2012 - 2014 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
@@ -20,9 +20,6 @@
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -43,7 +40,7 @@
 
 import org.apache.catalina.core.StandardContext;
 import org.apache.catalina.deploy.ContextResource;
-import org.apache.catalina.deploy.NamingResources;
+import org.apache.catalina.deploy.ContextResourceEnvRef;
 import org.apache.catalina.deploy.ResourceBase;
 import org.apache.naming.ContextAccessController;
 import org.apache.openejb.AppContext;
@@ -59,17 +56,14 @@
 import org.apache.openejb.assembler.classic.PersistenceUnitInfo;
 import org.apache.openejb.assembler.classic.WebAppInfo;
 import org.apache.openejb.config.AppModule;
-import org.apache.openejb.config.AutoConfig;
 import org.apache.openejb.config.ConfigurationFactory;
 import org.apache.openejb.config.DeploymentLoader;
 import org.apache.openejb.config.DeploymentModule;
 import org.apache.openejb.config.DynamicDeployer;
 import org.apache.openejb.config.FinderFactory;
-import org.apache.openejb.config.ServiceUtils;
 import org.apache.openejb.config.WebModule;
 import org.apache.openejb.config.WebappAggregatedArchive;
 import org.apache.openejb.config.sys.Resource;
-import org.apache.openejb.config.sys.ServiceProvider;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.Contexts;
 import org.apache.xbean.finder.AnnotationFinder;
@@ -108,9 +102,8 @@
 	private static final String META_INF = "META-INF";
 	private static final String DISABLED_SUFFIX = ".disabled";
 	private static final String RESOURCES_XML = "resources.xml";
-	private static final String PROVIDER = "provider";
 	private static final String TRANSACTION_TYPE_PROP = "transactionType";
-	private static final String STANDARD_CONTEXT_PROPERTY = "CatalinaStandardContext";
+	private static final String STANDARD_CONTEXT_PROPERTY = "standardContext";
 	private static final String DATA_SOURCE = "DataSource";
 	private static final String OPENEJB_JDBC_DRIVER = "JdbcDriver";
 	private static final String TOMCAT_DRIVER_CLASS_NAME = "driverClassName";
@@ -118,11 +111,11 @@
 	private static final String TOMCAT_JDBC_URL = "url";
 	private static final String OPENEJB_USERNAME = "UserName";
 	private static final String TOMCAT_USERNAME = "username";
+	private static final String TOMCAT_PROVIDER_FACTORY = "org.eclipse.virgo.tomcat:ProvidedByTomcat";
 	private final DeploymentLoader deploymentLoader;
 	private final ConfigurationFactory configurationFactory;
 	private final Assembler assembler;
 
-	private List<ServiceProvider> resourceProviders;
 	private final String webContextPath;
 	private final ClassLoader servletClassLoader;
 	private DynamicDeployer dynamicDeployer = null;
@@ -142,13 +135,6 @@
 			configurationFactory = new ConfigurationFactory();
 		}
 		assembler = (Assembler) SystemInstance.get().getComponent(org.apache.openejb.spi.Assembler.class);
-
-		try {
-			resourceProviders = ServiceUtils
-					.getServiceProvidersByServiceType("Resource");
-		} catch (OpenEJBException e) {
-			resourceProviders = new ArrayList<ServiceProvider>(0);
-		}
 	}
 	
 	public AppInfo deploy(String loc, StandardContext standardContext) throws OpenEJBException {
@@ -524,88 +510,60 @@
 			StandardContext standardContext) {
 		ContextResource[] contextResources = standardContext
 				.getNamingResources().findResources();
+        ContextResourceEnvRef[] contextEnvResources = standardContext
+                .getNamingResources().findResourceEnvRefs();
 
-		if (contextResources == null) {
-			return;
+		if (contextResources != null) {
+    		for (ContextResource contextResource : contextResources) {
+    			if (!"UserTransaction".equals(contextResource.getName())) {
+    				Resource resource = createResource(contextResource,
+    						standardContext, appModule.getModuleId());
+    				appModule.getResources().add(resource);
+    			}
+    		}
 		}
 
-		for (ContextResource contextResource : contextResources) {
-			if (isResourceTypeSupported(contextResource)) {
-				Resource resource = createResource(contextResource,
-						standardContext, appModule.getModuleId());
-				appModule.getResources().add(resource);
-			}
-		}
-
-		final Collection<String> tomcatResources = getResourcesNames(standardContext
-				.getNamingResources());
-		AutoConfig.PROVIDED_RESOURCES.set(tomcatResources);
-		AutoConfig.PROVIDED_RESOURCES_PREFIX.set("java:/comp/env/");
+		if (contextEnvResources != null) {
+            for (ContextResourceEnvRef contextEnvResource : contextEnvResources) {
+                if (!"UserTransaction".equals(contextEnvResource.getName())) {
+                    Resource resource = createResource(contextEnvResource,
+                            standardContext, appModule.getModuleId());
+                    appModule.getResources().add(resource);
+                }
+            }
+        }
 	}
 
-	private Collection<String> getResourcesNames(
-			final NamingResources namingResources) {
-		final Collection<String> names = new ArrayList<String>();
-		final Collection<ResourceBase> tomcatResources = new ArrayList<ResourceBase>();
-		tomcatResources.addAll(Arrays.asList(namingResources.findResources()));
-		tomcatResources
-				.addAll(Arrays.asList(namingResources.findEnvironments()));
-		tomcatResources.addAll(Arrays.asList(namingResources
-				.findResourceLinks()));
-		tomcatResources.addAll(Arrays.asList(namingResources.findServices()));
-		tomcatResources.addAll(Arrays.asList(namingResources
-				.findResourceEnvRefs()));
-
-		for (ResourceBase resource : tomcatResources) {
-			String processedResourceName = getResourceNameFromTomcatResource(
-					names, resource);
-			if (processedResourceName != null) {
-				names.add(processedResourceName);
-			}
-		}
-		return names;
-	}
-
-	private String getResourceNameFromTomcatResource(
-			final Collection<String> names, ResourceBase resource) {
-		final String name = resource.getName();
-		final String mappedName = (String) resource.getProperty("mappedName");
-		String processedResourceName = name;
-		if (mappedName != null && !mappedName.isEmpty()) {
-			processedResourceName = mappedName;
-		}
-		return processedResourceName;
-	}
-
-	private Resource createResource(final ContextResource contextResource,
+	private Resource createResource(final ResourceBase resourceBase,
 			StandardContext standardContext, final String appModuleId) {
-		final String id = appModuleId + '/' + contextResource.getName();
-		final String type = contextResource.getType();
-		String provider = (String) contextResource.getProperty(PROVIDER);
-		Resource resource = new Resource(id, type, provider);
-		populateResourceProperties(contextResource, resource, standardContext);
+	    final String mappedName = (String) resourceBase.getProperty("mappedName");
+		final String id;
+        if (mappedName == null) {
+            id = appModuleId + '/' + resourceBase.getName();
+        } else {
+            id = appModuleId + '/' + mappedName;
+        }
+	    final String type = resourceBase.getType();
+		Resource resource = new Resource(id, type, TOMCAT_PROVIDER_FACTORY);
+		populateResourceProperties(resourceBase, resource, standardContext);
 		return resource;
 	}
 
-	private void populateResourceProperties(ContextResource contextResource,
+	private void populateResourceProperties(ResourceBase resourceBase,
 			Resource resource, StandardContext standardContext) {
 		Properties resProperties = resource.getProperties();
-		Iterator<String> ctxResPropertiesItr = contextResource.listProperties();
-		boolean isDataSource = contextResource.getType().contains(DATA_SOURCE);
+		resProperties.setProperty("jndiName", resourceBase.getName());
+		resProperties.put(STANDARD_CONTEXT_PROPERTY, standardContext);
+		Iterator<String> ctxResPropertiesItr = resourceBase.listProperties();
+		boolean isDataSource = resourceBase.getType().contains(DATA_SOURCE);
 		while (ctxResPropertiesItr.hasNext()) {
 			String key = ctxResPropertiesItr.next();
-			if (PROVIDER.equals(key) || key.length() == 0) {
-				continue;
-			}
-			final Object value = contextResource.getProperty(key);
+			final Object value = resourceBase.getProperty(key);
 			if (isDataSource) {
 				key = transformKey(key);
 			}
 			resProperties.put(key, value);
 		}
-		if (isDataSource) {
-			resProperties.put(STANDARD_CONTEXT_PROPERTY, standardContext);
-		}
 	}
 
 	private String transformKey(String key) {
@@ -626,30 +584,4 @@
 
 		return transformedKey;
 	}
-
-	private boolean isResourceTypeSupported(ContextResource contextResource) {
-		String resourceType = contextResource.getType();
-		for (ServiceProvider serviceProvider : resourceProviders) {
-			if (serviceProvider.getTypes().contains(resourceType)) {
-				return true;
-			}
-		}
-
-		String provider = (String) contextResource.getProperty(PROVIDER);
-		if (provider == null) {
-			return false;
-		}
-
-		try {
-			ServiceProvider serviceProvider = ServiceUtils
-					.getServiceProvider(provider);
-			if (serviceProvider.getTypes().contains(resourceType)) {
-				return true;
-			}
-		} catch (OpenEJBException e) {
-			return false;
-		}
-
-		return false;
-	}
 }
diff --git a/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/.classpath b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/.classpath
new file mode 100755
index 0000000..0921b08
--- /dev/null
+++ b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/.classpath
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/test/java"/>
+	<classpathentry kind="src" path="src/test/resources"/>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry kind="src" path="src/main/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/7.0.35.v201302131125/org.apache.catalina-7.0.35.v201302131125.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.catalina/7.0.35.v201302131125/org.apache.catalina.source-7.0.35.v201302131125.jar"/>
+	<classpathentry kind="var" path="IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.openejb.core/4.5.2.virgo-1/org.apache.openejb.core-4.5.2.virgo-1.jar" sourcepath="/IVY_CACHE/org.eclipse.virgo.mirrored/org.apache.openejb.core/4.0.0.beta-2_v201205260545-virgo-2/org.apache.openejb.core.source-4.0.0.beta-2_v201205260545-virgo-2.jar"/>
+	<classpathentry kind="var" path="IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-4.7.0.jar" sourcepath="/IVY_CACHE/org.junit/com.springsource.org.junit/4.7.0/com.springsource.org.junit-sources-4.7.0.jar"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/.project b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/.project
new file mode 100755
index 0000000..85ccce3
--- /dev/null
+++ b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.virgo.web.enterprise.openejb.tomcat.factory</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/build.properties b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/build.properties
new file mode 100755
index 0000000..41eb6ad
--- /dev/null
+++ b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/build.xml b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/build.xml
new file mode 100755
index 0000000..cf8e458
--- /dev/null
+++ b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/build.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="org.eclipse.virgo.web.enterprise.openejb.tomcat.factory">
+
+	<property name="findbugs.exclude.file" value="${basedir}/findbugs-exclude.xml"/>
+	<property file="${basedir}/../build.properties"/>
+	<property file="${basedir}/../build.versions"/>
+	<import file="${basedir}/../virgo-build/standard/default.xml"/>
+
+</project>
diff --git a/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/ivy.xml b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/ivy.xml
new file mode 100755
index 0000000..a21baa9
--- /dev/null
+++ b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/ivy.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ivy-module xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd" version="2.0">
+
+	<info organisation="${project.organisation}" module="${ant.project.name}"/>
+
+	<configurations>
+		<include file="${virgo.build.dir}/common/default-ivy-configurations.xml"/>
+	</configurations>
+
+	<publications>
+		<artifact name="${ant.project.name}"/>
+		<artifact name="${ant.project.name}-sources" type="src" ext="jar"/>
+	</publications>
+
+	<dependencies>
+    <dependency org="org.eclipse.virgo.mirrored" name="org.apache.openejb.core" rev="${org.apache.openejb.core}" conf="compile->runtime"/>
+    <dependency org="org.eclipse.virgo.mirrored" name="org.apache.catalina" rev="${org.apache.catalina}" conf="compile->runtime"/>
+
+    <!-- Test dependencies -->
+    <dependency org="org.junit" name="com.springsource.org.junit" rev="${org.junit}" conf="test->runtime"/>
+    <dependency org="org.eclipse.virgo.mirrored" name="org.apache.juli.extras" rev="${org.apache.juli.extras}" conf="test->runtime"/>
+    <dependency org="org.eclipse.virgo.mirrored" name="org.apache.tomcat.util" rev="${org.apache.tomcat.util}" conf="test->runtime"/>
+    <dependency org="org.eclipse.virgo.mirrored" name="org.apache.tomcat.api" rev="${org.apache.tomcat.api}" conf="test->runtime"/>
+    <dependency org="org.eclipse.virgo.mirrored" name="org.apache.coyote" rev="${org.apache.coyote}" conf="test->runtime"/>
+    <dependency org="org.eclipse.virgo.mirrored" name="javax.servlet" rev="${javax.servlet}" conf="compile->runtime"/>
+    <dependency org="org.eclipse.virgo.mirrored" name="org.apache.openejb.loader" rev="${org.apache.openejb.loader}" conf="compile->runtime"/>
+	</dependencies>
+
+</ivy-module>
diff --git a/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/main/java/org/eclipse/virgo/web/enterprise/openejb/tomcat/factory/TomcatResourceFactory.java b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/main/java/org/eclipse/virgo/web/enterprise/openejb/tomcat/factory/TomcatResourceFactory.java
new file mode 100755
index 0000000..4617112
--- /dev/null
+++ b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/main/java/org/eclipse/virgo/web/enterprise/openejb/tomcat/factory/TomcatResourceFactory.java
@@ -0,0 +1,29 @@
+package org.eclipse.virgo.web.enterprise.openejb.tomcat.factory;
+
+import javax.naming.Context;
+import javax.naming.NamingException;
+
+import org.apache.catalina.core.StandardContext;
+
+import org.apache.openejb.util.Logger;
+import org.apache.openejb.util.LogCategory;
+
+public class TomcatResourceFactory {
+    private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB.createChild("tr"), TomcatResourceFactory.class);
+
+    private static final String COMP_ENV_SUBCONTEXT = "comp/env/";
+
+    public static Object create(String jndiName, StandardContext standardContext) throws NamingException {
+        if (standardContext == null) {
+            return null;
+        }
+
+        Context context = standardContext.getNamingContextListener().getNamingContext();
+        try {
+            return context.lookup(COMP_ENV_SUBCONTEXT + jndiName);
+        } catch (NamingException e) {
+            LOGGER.error("Error while looking up " + jndiName, e);
+            throw(e);
+        }
+    }
+}
diff --git a/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/main/resources/META-INF/org.eclipse.virgo.tomcat/service-jar.xml b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/main/resources/META-INF/org.eclipse.virgo.tomcat/service-jar.xml
new file mode 100755
index 0000000..b240d21
--- /dev/null
+++ b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/main/resources/META-INF/org.eclipse.virgo.tomcat/service-jar.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <ServiceJar>
+  <ServiceProvider
+        id="ProvidedByTomcat"
+        types="javax.sql.DataSource,DataSource,javax.jms.ConnectionFactory,ConnectionFactory,java.lang.Object"
+        service="Resource"
+        class-name="org.eclipse.virgo.web.enterprise.openejb.tomcat.factory.TomcatResourceFactory"
+        factory-name="create"
+        constructor="jndiName, standardContext">
+        jndiName
+        standardContext
+   </ServiceProvider>
+ </ServiceJar>
diff --git a/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/main/resources/about.html b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/main/resources/about.html
new file mode 100755
index 0000000..c258ef5
--- /dev/null
+++ b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/main/resources/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 5, 2006</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/test/java/.gitignore b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/test/java/.gitignore
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/test/java/.gitignore
diff --git a/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/test/java/org/eclipse/virgo/web/enterprise/openejb/tomcat/factory/TomcatResourceFactoryTest.java b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/test/java/org/eclipse/virgo/web/enterprise/openejb/tomcat/factory/TomcatResourceFactoryTest.java
new file mode 100755
index 0000000..faa6d6c
--- /dev/null
+++ b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/test/java/org/eclipse/virgo/web/enterprise/openejb/tomcat/factory/TomcatResourceFactoryTest.java
@@ -0,0 +1,48 @@
+package org.eclipse.virgo.web.enterprise.openejb.tomcat.factory;
+
+import java.util.Hashtable;
+
+import javax.naming.NamingException;
+
+import junit.framework.Assert;
+
+import org.apache.catalina.core.NamingContextListener;
+import org.apache.catalina.core.StandardContext;
+import org.apache.naming.NamingContext;
+import org.junit.Test;
+
+public class TomcatResourceFactoryTest {
+	
+	private static final String name = "testName";
+	private static final String searchName = "comp/env/testName";
+
+	@Test
+	public void testCreate() throws Exception {
+		NamingContext namingContext = new MyNamingContext(null, null);
+		NamingContextListener namingContextListener = new MyNamingContextListener(namingContext);
+		StandardContext standardContext = new StandardContext();
+		standardContext.setNamingContextListener(namingContextListener);
+		
+		TomcatResourceFactory.create(name, standardContext);
+	}
+	
+	class MyNamingContextListener extends NamingContextListener {
+		public MyNamingContextListener(NamingContext context) {
+			namingContext = context;
+		}
+	}
+
+	class MyNamingContext extends NamingContext {
+
+		public MyNamingContext(Hashtable<String, Object> env, String name)
+				throws NamingException {
+			super(env, name);
+			// TODO Auto-generated constructor stub
+		}
+		
+		public Object lookup(String name) {
+			Assert.assertEquals("Wrong lookup name", searchName, name);
+			return null;
+		}
+	}
+}
diff --git a/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/test/resources/.gitignore b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/test/resources/.gitignore
new file mode 100755
index 0000000..acee03f
--- /dev/null
+++ b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/src/test/resources/.gitignore
@@ -0,0 +1,2 @@
+bin
+*.class
diff --git a/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/template.mf b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/template.mf
new file mode 100755
index 0000000..c96066b
--- /dev/null
+++ b/org.eclipse.virgo.web.enterprise.openejb.tomcat.factory/template.mf
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Virgo Web Enterprise OpenEJB Generic Service Provider
+Bundle-SymbolicName: org.eclipse.virgo.web.enterprise.openejb.tomcat.factory
+Bundle-Version: ${version}
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Import-Template: javax.naming;version="0",
+ org.apache.catalina;version="0",
+ org.apache.catalina.core;version="0"
+Excluded-Imports: 
+ org.apache.openejb.util;version="0",
+ org.apache.naming;version="0"                  
+Excluded-Exports:
+ *
+Fragment-Host: org.apache.openejb.core
