You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2011/10/19 22:27:57 UTC
svn commit: r1186457 - in
/openejb/trunk/openejb/assembly/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina:
TomcatJndiBuilder.java TomcatWebAppBuilder.java
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");