Author: rmannibucau
Date: Wed Oct 19 20:27:56 2011
New Revision: 1186457
URL: http://svn.apache.org/viewvc?rev=1186457&view=rev
Log:
TOMEE-38 in tomcat comp/ is not always available so trying to do bindings in
configure_start event
Modified:
openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
Modified:
openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java?rev=1186457&r1=1186456&r2=1186457&view=diff
==============================================================================
---
openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
(original)
+++
openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
Wed Oct 19 20:27:56 2011
@@ -26,12 +26,15 @@ import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import javax.ejb.spi.HandleDelegate;
import javax.naming.Context;
import javax.naming.LinkRef;
import javax.naming.NamingException;
import javax.naming.RefAddr;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
+import javax.transaction.TransactionManager;
+import javax.transaction.TransactionSynchronizationRegistry;
import javax.transaction.UserTransaction;
import org.apache.catalina.core.NamingContextListener;
import org.apache.catalina.core.StandardContext;
@@ -59,6 +62,7 @@ import org.apache.openejb.assembler.clas
import org.apache.openejb.assembler.classic.WebAppInfo;
import org.apache.openejb.assembler.classic.WsBuilder;
import org.apache.openejb.core.WebContext;
+import org.apache.openejb.core.ivm.naming.SystemComponentReference;
import org.apache.openejb.core.webservices.HandlerChainData;
import org.apache.openejb.core.webservices.PortRefData;
import org.apache.openejb.loader.SystemInstance;
@@ -73,10 +77,13 @@ import org.apache.tomee.common.NamingUti
import org.apache.tomee.common.PersistenceContextFactory;
import org.apache.tomee.common.PersistenceUnitFactory;
import org.apache.tomee.common.ResourceFactory;
+import org.apache.tomee.common.SystemComponentFactory;
import org.apache.tomee.common.UserTransactionFactory;
import org.apache.tomee.common.WsFactory;
+import org.omg.CORBA.ORB;
import static org.apache.tomee.common.EnumFactory.ENUM_VALUE;
+import static org.apache.tomee.common.NamingUtil.COMPONENT_TYPE;
import static org.apache.tomee.common.NamingUtil.DEPLOYMENT_ID;
import static org.apache.tomee.common.NamingUtil.EXTENDED;
import static org.apache.tomee.common.NamingUtil.EXTERNAL;
@@ -193,6 +200,23 @@ public class TomcatJndiBuilder {
}
}
+ // try to force some binding which probably failed earlier (see in
TomcatWebappBuilder)
+ try {
+ Context comp = (Context)
ContextBindings.getClassLoader().lookup("comp");
+ TransactionManager transactionManager =
SystemInstance.get().getComponent(TransactionManager.class);
+ comp.rebind("TransactionManager", transactionManager);
+
+ // bind TransactionSynchronizationRegistry
+ TransactionSynchronizationRegistry synchronizationRegistry =
SystemInstance.get().getComponent(TransactionSynchronizationRegistry.class);
+ comp.rebind("TransactionSynchronizationRegistry",
synchronizationRegistry);
+
+ comp.rebind("ORB", new SystemComponentReference(ORB.class));
+ comp.rebind("HandleDelegate", new
SystemComponentReference(HandleDelegate.class));
+ } catch (Exception ignored) {
+ ignored.printStackTrace();
+ // no-op
+ }
+
ContextAccessController.setReadOnly(standardContext.getNamingContextListener().getName());
}
@@ -540,13 +564,24 @@ public class TomcatJndiBuilder {
addEntry = true;
}
+ resourceEnv.setType(ref.resourceEnvRefType);
if (UserTransaction.class.getName().equals(ref.resourceEnvRefType)) {
resourceEnv.setProperty(Constants.FACTORY,
UserTransactionFactory.class.getName());
- resourceEnv.setType(ref.resourceEnvRefType);
+ } else if
(TransactionManager.class.getName().equals(ref.resourceEnvRefType)) {
+ resourceEnv.setProperty(Constants.FACTORY,
SystemComponentFactory.class.getName());
+ resourceEnv.setProperty(COMPONENT_TYPE,
TransactionManager.class.getName());
+ } else if
(TransactionSynchronizationRegistry.class.getName().equals(ref.resourceEnvRefType))
{
+ resourceEnv.setProperty(Constants.FACTORY,
SystemComponentFactory.class.getName());
+ resourceEnv.setProperty(COMPONENT_TYPE,
TransactionSynchronizationRegistry.class.getName());
+ } else if (ORB.class.getName().equals(ref.resourceEnvRefType)) {
+ resourceEnv.setProperty(Constants.FACTORY,
SystemComponentFactory.class.getName());
+ resourceEnv.setProperty(COMPONENT_TYPE, ORB.class.getName());
+ } else if
(HandleDelegate.class.getName().equals(ref.resourceEnvRefType)) {
+ resourceEnv.setProperty(Constants.FACTORY,
SystemComponentFactory.class.getName());
+ resourceEnv.setProperty(COMPONENT_TYPE,
HandleDelegate.class.getName());
} else {
resourceEnv.setProperty(Constants.FACTORY,
ResourceFactory.class.getName());
resourceEnv.setProperty(NAME,
ref.referenceName.replaceAll("^comp/env/", ""));
- resourceEnv.setType(ref.resourceEnvRefType);
if (ref.resourceID != null) {
resourceEnv.setProperty(RESOURCE_ID, ref.resourceID);
Modified:
openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1186457&r1=1186456&r2=1186457&view=diff
==============================================================================
---
openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
(original)
+++
openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
Wed Oct 19 20:27:56 2011
@@ -562,7 +562,7 @@ public class TomcatWebAppBuilder impleme
openejbContext = (Context) openejbContext.lookup("openejb");
Context root = (Context)
ContextBindings.getClassLoader().lookup("");
- Context comp = (Context)
ContextBindings.getClassLoader().lookup("comp");
+ Context comp = (Context)
ContextBindings.getClassLoader().lookup("comp"); // usually fails
// Context root = ncl.getNamingContext();
// Context comp = (Context) root.lookup("comp");