Author: rmannibucau
Date: Sun Oct 7 21:51:00 2012
New Revision: 1395389
URL: http://svn.apache.org/viewvc?rev=1395389&view=rev
Log:
TOMEE-452 ignoring resources from context.xml in AutoConfig
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java?rev=1395389&r1=1395388&r2=1395389&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
Sun Oct 7 21:51:00 2012
@@ -110,6 +110,9 @@ public class AutoConfig implements Dynam
private static Set<String> ignoredReferenceTypes = new TreeSet<String>();
public static final String AUTOCREATE_JTA_DATASOURCE_FROM_NON_JTA_ONE_KEY
= "openejb.autocreate.jta-datasource-from-non-jta-one";
+ public static final ThreadLocal<Collection<String>> PROVIDED_RESOURCES =
new ThreadLocal<Collection<String>>();
+ public static final ThreadLocal<String> PROVIDED_RESOURCES_PREFIX = new
ThreadLocal<String>();
+
static{
// Context objects are automatically handled
ignoredReferenceTypes.add("javax.ejb.SessionContext");
@@ -182,20 +185,25 @@ public class AutoConfig implements Dynam
resolvePersistenceRefs(appModule);
- for (EjbModule ejbModule : appModule.getEjbModules()) {
- deploy(ejbModule, appResources);
- }
- for (ClientModule clientModule : appModule.getClientModules()) {
- deploy(clientModule, appResources);
- }
- for (ConnectorModule connectorModule :
appModule.getConnectorModules()) {
- deploy(connectorModule);
- }
- for (WebModule webModule : appModule.getWebModules()) {
- deploy(webModule, appResources);
- }
- for (PersistenceModule persistenceModule :
appModule.getPersistenceModules()) {
- deploy(appModule, persistenceModule);
+ try {
+ for (EjbModule ejbModule : appModule.getEjbModules()) {
+ deploy(ejbModule, appResources);
+ }
+ for (ClientModule clientModule : appModule.getClientModules()) {
+ deploy(clientModule, appResources);
+ }
+ for (ConnectorModule connectorModule :
appModule.getConnectorModules()) {
+ deploy(connectorModule);
+ }
+ for (WebModule webModule : appModule.getWebModules()) {
+ deploy(webModule, appResources);
+ }
+ for (PersistenceModule persistenceModule :
appModule.getPersistenceModules()) {
+ deploy(appModule, persistenceModule);
+ }
+ } finally {
+ PROVIDED_RESOURCES.remove();
+ PROVIDED_RESOURCES_PREFIX.remove();
}
return appModule;
}
@@ -703,6 +711,12 @@ public class AutoConfig implements Dynam
}
private void processJndiRefs(String moduleId, JndiConsumer jndiConsumer,
AppResources appResources, ClassLoader classLoader) throws OpenEJBException {
+ final Collection<String> ignoredResources = PROVIDED_RESOURCES.get();
+ String ignoredResourcesPrefix = PROVIDED_RESOURCES_PREFIX.get();
+ if (ignoredResourcesPrefix == null) {
+ ignoredResourcesPrefix = "";
+ }
+
// Resource reference
for (ResourceRef ref : jndiConsumer.getResourceRef()) {
// skip destinations with lookup name
@@ -724,16 +738,21 @@ public class AutoConfig implements Dynam
}
String destinationId = (mappedName.length() == 0) ? ref.getName()
: mappedName;
- try {
- destinationId = getResourceId(moduleId, destinationId,
refType, appResources);
- } catch (OpenEJBException ex) {
- if (!(ref instanceof ContextRef)) {
- throw ex;
- } else { // let jaxrs provider manage it
- continue;
+ if (ignoredResources != null &&
ignoredResources.contains(destinationId)) {
+ ref.setLookupName(ignoredResourcesPrefix + destinationId);
+ ref.setName("openejb/" + moduleId + "/" + destinationId);
+ } else {
+ try {
+ destinationId = getResourceId(moduleId, destinationId,
refType, appResources);
+ } catch (OpenEJBException ex) {
+ if (!(ref instanceof ContextRef)) {
+ throw ex;
+ } else { // let jaxrs provider manage it
+ continue;
+ }
}
+ ref.setMappedName(destinationId);
}
- ref.setMappedName(destinationId);
}
// Resource env reference
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1395389&r1=1395388&r2=1395389&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
Sun Oct 7 21:51:00 2012
@@ -38,7 +38,9 @@ import org.apache.catalina.core.Standard
import org.apache.catalina.deploy.ApplicationParameter;
import org.apache.catalina.deploy.ContextEnvironment;
import org.apache.catalina.deploy.ContextResource;
+import org.apache.catalina.deploy.ContextResourceEnvRef;
import org.apache.catalina.deploy.ContextResourceLink;
+import org.apache.catalina.deploy.ContextService;
import org.apache.catalina.deploy.ContextTransaction;
import org.apache.catalina.deploy.NamingResources;
import org.apache.catalina.ha.CatalinaCluster;
@@ -69,6 +71,7 @@ import org.apache.openejb.assembler.clas
import org.apache.openejb.assembler.classic.WebAppInfo;
import org.apache.openejb.cdi.CdiBuilder;
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.WebModule;
@@ -836,6 +839,10 @@ public class TomcatWebAppBuilder impleme
ContextInfo contextInfo = getContextInfo(standardContext);
final ClassLoader classLoader =
standardContext.getLoader().getClassLoader();
if (contextInfo == null) {
+ final Collection<String> tomcatResources =
getResourcesNames(standardContext.getNamingResources());
+ AutoConfig.PROVIDED_RESOURCES.set(tomcatResources);
+ AutoConfig.PROVIDED_RESOURCES_PREFIX.set("java:/comp/env/");
+
final AppModule appModule = loadApplication(standardContext);
if (appModule != null) {
try {
@@ -966,6 +973,41 @@ public class TomcatWebAppBuilder impleme
}
}
+ private Collection<String> getResourcesNames(final NamingResources
namingResources) {
+ final Collection<String> names = new ArrayList<String>();
+ for (ContextResource resource : namingResources.findResources()) {
+ final String name = resource.getName();
+ if (name != null) {
+ names.add(resource.getName());
+ }
+ }
+ for (ContextEnvironment resource : namingResources.findEnvironments())
{
+ final String name = resource.getName();
+ if (name != null) {
+ names.add(resource.getName());
+ }
+ }
+ for (ContextResourceLink resource :
namingResources.findResourceLinks()) {
+ final String name = resource.getName();
+ if (name != null) {
+ names.add(resource.getName());
+ }
+ }
+ for (ContextService resource : namingResources.findServices()) {
+ final String name = resource.getName();
+ if (name != null) {
+ names.add(resource.getName());
+ }
+ }
+ for (ContextResourceEnvRef resource :
namingResources.findResourceEnvRefs()) {
+ final String name = resource.getName();
+ if (name != null) {
+ names.add(resource.getName());
+ }
+ }
+ return names;
+ }
+
private static void updateInjections(final Collection<Injection>
injections, final ClassLoader classLoader, final boolean keepInjection) {
final Iterator<Injection> it = injections.iterator();
final List<Injection> newOnes = new ArrayList<Injection>();