Author: jgenender Date: Sun Feb 6 03:15:31 2005 New Revision: 151569 URL: http://svn.apache.org/viewcvs?view=rev&rev=151569 Log: Fix for GERONIMO-566. Updated JSR77 Naming for Tomcat. Updated builder to utilize geronimo transactions.
Modified: geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java Modified: geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java?view=diff&r1=151568&r2=151569 ============================================================================== --- geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java (original) +++ geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java Sun Feb 6 03:15:31 2005 @@ -19,6 +19,7 @@ import javax.management.MalformedObjectNameException; import javax.management.ObjectName; +import javax.transaction.UserTransaction; import java.io.File; import java.io.FileFilter; import java.io.IOException; @@ -28,6 +29,8 @@ import java.net.URL; import java.util.Enumeration; import java.util.LinkedList; +import java.util.Map; +import java.util.Collections; import java.util.jar.JarFile; import java.util.zip.ZipEntry; @@ -54,6 +57,8 @@ import org.apache.geronimo.xbeans.geronimo.jetty.JettyWebAppType; import org.apache.geronimo.xbeans.j2ee.WebAppDocument; import org.apache.geronimo.xbeans.j2ee.WebAppType; +import org.apache.geronimo.transaction.OnlineUserTransaction; +import org.apache.geronimo.naming.deployment.ENCConfigBuilder; /** @@ -65,10 +70,13 @@ private static final Log log = LogFactory.getLog(TomcatModuleBuilder.class); - public TomcatModuleBuilder(URI defaultParentId) { + private final ObjectName tomcatContainerObjectName; + + public TomcatModuleBuilder(URI defaultParentId, ObjectName tomcatContainerObjectName) { log.debug("TomcatModuleBuilder(" + defaultParentId + ")"); this.defaultParentId = defaultParentId; + this.tomcatContainerObjectName = tomcatContainerObjectName; } public String addGBeans(EARContext earContext, Module module, ClassLoader cl) throws DeploymentException { @@ -99,6 +107,11 @@ throw new DeploymentException("Could not construct module name", e); } + UserTransaction userTransaction = new OnlineUserTransaction(); + // TODO : Need to set up a proper compContext. Somehow need to get hands on the WebClassLoader for Tomcat + // Map compContext = buildComponentContext(earContext, webModule, webApp, jettyWebApp, userTransaction, webClassLoader); + Map compContext = Collections.EMPTY_MAP; + GBeanData gbean; try { gbean = new GBeanData(TomcatWebAppContext.GBEAN_INFO); @@ -107,9 +120,14 @@ gbean.setAttribute("webAppRoot", baseUri); gbean.setAttribute("webClassPath", webClassPath); + gbean.setAttribute("componentContext", compContext); + + gbean.setAttribute("userTransaction", userTransaction); + gbean.setReferencePattern("TransactionContextManager", earContext.getTransactionContextManagerObjectName()); + gbean.setReferencePattern("TrackedConnectionAssociator", earContext.getConnectionTrackerObjectName()); gbean.setAttribute("path", webModule.getContextRoot()); - gbean.setReferencePattern("Container", new ObjectName("*:type=WebContainer,container=Tomcat")); + gbean.setReferencePattern("Container", tomcatContainerObjectName); } catch (Exception e) { throw new DeploymentException("Unable to initialize webapp GBean", e); } @@ -173,6 +191,20 @@ return module; } + private Map buildComponentContext(EARContext earContext, Module webModule, WebAppType webApp, JettyWebAppType jettyWebApp, UserTransaction userTransaction, ClassLoader cl) throws DeploymentException { + return ENCConfigBuilder.buildComponentContext(earContext, + webModule, + userTransaction, + webApp.getEnvEntryArray(), + webApp.getEjbRefArray(), jettyWebApp.getEjbRefArray(), + webApp.getEjbLocalRefArray(), jettyWebApp.getEjbLocalRefArray(), + webApp.getResourceRefArray(), jettyWebApp.getResourceRefArray(), + webApp.getResourceEnvRefArray(), jettyWebApp.getResourceEnvRefArray(), + webApp.getMessageDestinationRefArray(), + webApp.getServiceRefArray(), + cl); + } + public Module createModule(Object plan, JarFile moduleFile, String targetPath, URL specDDUrl, URI earConfigId) throws DeploymentException { log.debug("createModule: " + plan + "; " + moduleFile + "; " + targetPath + "; " + specDDUrl + "; " @@ -328,9 +360,11 @@ static { GBeanInfoBuilder infoBuilder = new GBeanInfoBuilder(TomcatModuleBuilder.class, NameFactory.MODULE_BUILDER); infoBuilder.addAttribute("defaultParentId", URI.class, true); + infoBuilder.addAttribute("tomcatContainerObjectName", ObjectName.class, true); infoBuilder.addInterface(ModuleBuilder.class); - infoBuilder.setConstructor(new String[]{"defaultParentId"}); + infoBuilder.setConstructor(new String[]{"defaultParentId", + "tomcatContainerObjectName"}); GBEAN_INFO = infoBuilder.getBeanInfo(); }