Author: rmannibucau
Date: Thu Nov 22 13:32:00 2012
New Revision: 1412548
URL: http://svn.apache.org/viewvc?rev=1412548&view=rev
Log:
reverting OPENEJB-1939 the fixed was not elegant and it broke TCKs. There are
other solution so waiting for user feedback before going further on this topic.
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/TomcatJndiBuilder.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=1412548&r1=1412547&r2=1412548&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
Thu Nov 22 13:32:00 2012
@@ -112,9 +112,6 @@ 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");
@@ -187,25 +184,20 @@ public class AutoConfig implements Dynam
resolvePersistenceRefs(appModule);
- 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();
+ 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);
}
return appModule;
}
@@ -713,12 +705,6 @@ 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
@@ -740,21 +726,16 @@ public class AutoConfig implements Dynam
}
String destinationId = (mappedName.length() == 0) ? ref.getName()
: mappedName;
- 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;
- }
+ 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
@@ -1044,20 +1025,6 @@ public class AutoConfig implements Dynam
}
}
- private void set(Properties properties, String key, String value) {
- if (value == null || value.length() == 0) return;
- properties.put(key, value);
- }
-
- private void set(Properties properties, String key, int value) {
- set(properties, key, value, 0);
- }
-
- private void set(Properties properties, String key, int value, int min) {
- if (value < min) return;
- properties.put(key, value);
- }
-
private String createContainer(Class<? extends ContainerInfo>
containerInfoType, EjbDeployment ejbDeployment, EnterpriseBean bean) throws
OpenEJBException {
if (!autoCreateContainers) {
throw new OpenEJBException("A container of type " + getType(bean)
+ " must be declared in the configuration file for bean: " + bean.getEjbName());
@@ -1085,12 +1052,6 @@ public class AutoConfig implements Dynam
EjbDeployment ejbDeployment,
AppResources appResources,
EjbModule ejbModule) throws
OpenEJBException {
- final Collection<String> ignoredResources = PROVIDED_RESOURCES.get();
- String ignoredResourcesPrefix = PROVIDED_RESOURCES_PREFIX.get();
- if (ignoredResourcesPrefix == null) {
- ignoredResourcesPrefix = "";
- }
-
// skip destinations with lookup name
if (ref.getLookupName() != null) {
return;
@@ -1122,13 +1083,6 @@ public class AutoConfig implements Dynam
ResourceLink link = ejbDeployment.getResourceLink(refName);
if (link == null) {
String id = (mappedName.length() == 0) ? ref.getName() :
mappedName;
- if (ignoredResources != null && (ignoredResources.contains(id)
|| ignoredResources.contains(correctedId(ignoredResourcesPrefix, id)))) {
- final String correctedId = ignoredResourcesPrefix +
correctedId(ignoredResourcesPrefix, id);
- ref.setLookupName(correctedId);
- ref.setName(correctedId);
- return;
- }
-
if (id.startsWith("java:")) {
id = id.substring("java:".length());
}
@@ -1151,25 +1105,6 @@ public class AutoConfig implements Dynam
}
}
- private static String correctedId(final String ignoredResourcesPrefix,
final String id) {
- String newId = id;
- String ignoredId = ignoredResourcesPrefix;
-
- // first unify beginning of the jndi name (we can get this / after
java:)
- if (newId.startsWith("java:/")) {
- newId = "java:" + newId.substring("java:/".length());
- }
- if (ignoredResourcesPrefix.startsWith("java:/")) {
- ignoredId = "java:" +
ignoredResourcesPrefix.substring("java:/".length());
- }
-
- // remove prefix if necessary
- if (newId.startsWith(ignoredId)) {
- return newId.substring(ignoredId.length());
- }
- return newId;
- }
-
private void processResourceEnvRef(JndiReference ref,
EjbDeployment ejbDeployment,
AppResources appResources,
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java?rev=1412548&r1=1412547&r2=1412548&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
Thu Nov 22 13:32:00 2012
@@ -70,6 +70,7 @@ import javax.ejb.spi.HandleDelegate;
import javax.naming.Binding;
import javax.naming.Context;
import javax.naming.LinkRef;
+import javax.naming.NameNotFoundException;
import javax.naming.NamingException;
import javax.naming.RefAddr;
import javax.persistence.EntityManager;
@@ -132,7 +133,7 @@ public class TomcatJndiBuilder {
this.useCrossClassLoaderRef = useCrossClassLoaderRef;
}
- public void mergeJndi(final Collection<String> tomcatResources) throws
OpenEJBException {
+ public void mergeJndi() throws OpenEJBException {
NamingResources naming = standardContext.getNamingResources();
@@ -159,17 +160,6 @@ public class TomcatJndiBuilder {
mergeRef(naming, ref, moduleUri);
}
for (ResourceReferenceInfo ref : webAppInfo.jndiEnc.resourceRefs) {
- String id = ref.referenceName;
- if (id == null) {
- id = ref.resourceID;
- }
- if (id != null && id.startsWith("comp/env/")) {
- id = id.substring("comp/env/".length());
- }
- if (id != null && tomcatResources != null &&
tomcatResources.contains(id)) {
- continue;
- }
-
mergeRef(naming, ref);
}
for (ResourceEnvReferenceInfo ref :
webAppInfo.jndiEnc.resourceEnvRefs) {
@@ -232,8 +222,16 @@ public class TomcatJndiBuilder {
}
Object value = normalize(entry.getValue());
- if (ignoreNames.contains(removeCompEnv(key))) {
- continue;
+ if (ignoreNames.contains(removeCompEnv(key))) { // keep
tomcat resources
+ try {
+ // tomcat can get the reference but the bound value
+ // can come from OpenEJB (ejb-jar.xml for instance)
+ // so check the lookup can be resolved before
skipping it
+ root.lookup(key);
+ continue;
+ } catch (NameNotFoundException nnfe) {
+ // no-op: let it be rebound or bound
+ }
}
Contexts.createSubcontexts(root, key);
@@ -346,6 +344,7 @@ public class TomcatJndiBuilder {
}
} catch (Exception e) {
+ // no-op
}
return value;
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=1412548&r1=1412547&r2=1412548&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
Thu Nov 22 13:32:00 2012
@@ -39,9 +39,7 @@ 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;
@@ -50,7 +48,6 @@ import org.apache.catalina.loader.Webapp
import org.apache.catalina.session.StandardManager;
import org.apache.catalina.startup.Constants;
import org.apache.catalina.startup.ContextConfig;
-import org.apache.catalina.startup.ContextRuleSet;
import org.apache.catalina.startup.HostConfig;
import org.apache.catalina.startup.RealmRuleSet;
import org.apache.catalina.startup.SetAllPropertiesRule;
@@ -77,7 +74,6 @@ 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;
@@ -90,12 +86,10 @@ import org.apache.openejb.jee.EnvEntry;
import org.apache.openejb.jee.WebApp;
import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.util.LinkResolver;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
import org.apache.tomcat.InstanceManager;
import org.apache.tomcat.util.digester.Digester;
-import org.apache.tomcat.util.digester.RuleSet;
import org.apache.tomee.catalina.cluster.ClusterObserver;
import org.apache.tomee.catalina.cluster.TomEEClusterListener;
import org.apache.tomee.catalina.event.AfterApplicationCreated;
@@ -114,7 +108,6 @@ import javax.el.ELResolver;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
-import javax.persistence.EntityManagerFactory;
import javax.servlet.ServletContext;
import javax.servlet.SessionTrackingMode;
import javax.servlet.jsp.JspApplicationContext;
@@ -364,7 +357,7 @@ public class TomcatWebAppBuilder impleme
digester.addSetNext("Context/Manager/Store", "setStore",
"org.apache.catalina.Store");
digester.addRuleSet(new RealmRuleSet("Context/"));
digester.addCallMethod("Context/WatchedResource",
"addWatchedResource", 0);
-
digester.addObjectCreate("Context/Resource","org.apache.catalina.deploy.ContextResource");
+ digester.addObjectCreate("Context/Resource",
"org.apache.catalina.deploy.ContextResource");
digester.addRule("Context/Resource", new SetAllPropertiesRule());
digester.addRule("Context/Resource", new
SetNextNamingRule("addResource", "org.apache.catalina.deploy.ContextResource"));
@@ -913,19 +906,6 @@ public class TomcatWebAppBuilder impleme
ContextInfo contextInfo = getContextInfo(standardContext);
ClassLoader classLoader = standardContext.getLoader().getClassLoader();
- final LifecycleListener[] listeners =
standardContext.findLifecycleListeners();
- if (listeners != null) { // force init of tomcat resources
- for (LifecycleListener listener : listeners) {
- if (OpenEJBContextConfig.class.isInstance(listener)) {
- ((OpenEJBContextConfig) listener).configureStart();
- }
- }
- }
-
- final Collection<String> tomcatResources =
getResourcesNames(standardContext.getNamingResources());
- AutoConfig.PROVIDED_RESOURCES.set(tomcatResources);
- AutoConfig.PROVIDED_RESOURCES_PREFIX.set("java:/comp/env/");
-
if (contextInfo == null) {
final AppModule appModule = loadApplication(standardContext);
if (appModule != null) {
@@ -959,8 +939,6 @@ public class TomcatWebAppBuilder impleme
} else {
contextInfo.standardContext = standardContext;
}
- contextInfo.resourceNames = tomcatResources;
-
final String id = getId(standardContext);
WebAppInfo webAppInfo = null;
@@ -1019,7 +997,7 @@ public class TomcatWebAppBuilder impleme
final TomcatJndiBuilder jndiBuilder = new
TomcatJndiBuilder(standardContext, webAppInfo, injections);
NamingUtil.setCurrentContext(standardContext);
try {
- jndiBuilder.mergeJndi(tomcatResources);
+ jndiBuilder.mergeJndi();
} finally {
NamingUtil.setCurrentContext(null);
}
@@ -1069,41 +1047,6 @@ 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>();
@@ -1144,10 +1087,7 @@ public class TomcatWebAppBuilder impleme
}
container = container.getParent();
}
- if (container != null) {
- return undeploy(standardContext, container);
- }
- return false;
+ return container != null && undeploy(standardContext, container);
}
}
@@ -1315,6 +1255,7 @@ public class TomcatWebAppBuilder impleme
}
}
} catch (NamingException e) {
+ // no-op
}
}
@@ -1657,8 +1598,6 @@ public class TomcatWebAppBuilder impleme
* @return a openejb application module
*/
private AppModule loadApplication(final StandardContext standardContext) {
- final ServletContext servletContext =
standardContext.getServletContext();
-
// don't use getId since the app id shouldnt get the host (jndi)
// final TomcatDeploymentLoader tomcatDeploymentLoader = new
TomcatDeploymentLoader(standardContext, getId(standardContext));
@@ -1896,7 +1835,6 @@ public class TomcatWebAppBuilder impleme
public StandardContext standardContext;
public HostConfig deployer;
public Host host;
- public LinkResolver<EntityManagerFactory> emfLinkResolver;
public Collection<String> resourceNames = Collections.emptyList();
@Override