You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2010/05/26 02:19:32 UTC
svn commit: r948268 - in /geronimo/server/trunk/plugins:
j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/
j2ee/j2ee-server/src/main/history/ jetty8/jetty8-deployer/src/main/plan/
openejb/geronimo-openejb-builder/src/main/ja...
Author: djencks
Date: Wed May 26 00:19:32 2010
New Revision: 948268
URL: http://svn.apache.org/viewvc?rev=948268&view=rev
Log:
GERONIMO-5177 introduce sub-modules to allow deploying ejbs, rars, etc as parts of wars, ejbs, clients, etc. First draft
Modified:
geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/AppClientModule.java
geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/ApplicationInfo.java
geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/ConnectorModule.java
geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java
geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EJBModule.java
geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/Module.java
geronimo/server/trunk/plugins/j2ee/j2ee-server/src/main/history/dependencies.xml
geronimo/server/trunk/plugins/jetty8/jetty8-deployer/src/main/plan/plan.xml
geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java
geronimo/server/trunk/plugins/tomcat/tomcat7-deployer/src/main/plan/plan.xml
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/AppClientModule.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/AppClientModule.java?rev=948268&r1=948267&r2=948268&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/AppClientModule.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/AppClientModule.java Wed May 26 00:19:32 2010
@@ -52,7 +52,7 @@ public class AppClientModule extends Mod
Collection<ConnectorModule> resourceModules,
AnnotatedApplicationClient annotatedAppClient ) {
super(standAlone, moduleName, name, clientEnvironment, moduleFile, targetPath,
- specDD, vendorDD, originalSpecDD, null, annotatedAppClient );
+ specDD, vendorDD, originalSpecDD, null, annotatedAppClient, null, null );
this.serverEnvironment = serverEnvironment;
this.appClientName = appClientName;
this.mainClassName = mainClassName;
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/ApplicationInfo.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/ApplicationInfo.java?rev=948268&r1=948267&r2=948268&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/ApplicationInfo.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/ApplicationInfo.java Wed May 26 00:19:32 2010
@@ -33,8 +33,6 @@ import org.apache.xmlbeans.XmlObject;
public class ApplicationInfo extends Module<XmlObject, XmlObject> {
private ConfigurationModuleType type;
- private LinkedHashSet<Module> modules;
- private ModuleList moduleLocations;
public ApplicationInfo(ConfigurationModuleType type,
Environment environment,
@@ -43,39 +41,21 @@ public class ApplicationInfo extends Mod
JarFile earFile,
XmlObject specDD,
XmlObject vendorDD,
- LinkedHashSet<Module> modules,
+ LinkedHashSet<Module<?,?>> modules,
ModuleList moduleLocations,
String originalSpecDD,
AnnotatedApp annotatedApp) {
- super(true, baseName, name, environment, earFile, "", specDD, vendorDD, originalSpecDD, null, annotatedApp);
+ super(true, baseName, name, environment, earFile, "", specDD, vendorDD, originalSpecDD, null, annotatedApp, moduleLocations, modules);
assert type != null;
assert environment != null;
assert modules != null;
assert moduleLocations != null;
this.type = type;
- this.modules = modules;
- this.moduleLocations = moduleLocations;
}
public ConfigurationModuleType getType() {
return type;
}
- public LinkedHashSet<Module> getModules() {
- return modules;
- }
-
- public void setModules(LinkedHashSet<Module> modules) {
- this.modules = modules;
- }
-
- public ModuleList getModuleLocations() {
- return moduleLocations;
- }
-
- public void setModuleLocations(ModuleList moduleLocations) {
- this.moduleLocations = moduleLocations;
- }
-
}
\ No newline at end of file
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/ConnectorModule.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/ConnectorModule.java?rev=948268&r1=948267&r2=948268&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/ConnectorModule.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/ConnectorModule.java Wed May 26 00:19:32 2010
@@ -39,7 +39,7 @@ public class ConnectorModule<T, U> exten
String originalSpecDD,
AnnotatedApp annotatedApp) {
super(standAlone, moduleName, name, environment, moduleFile,
- targetPath, specDD, vendorDD, originalSpecDD, null, annotatedApp );
+ targetPath, specDD, vendorDD, originalSpecDD, null, annotatedApp, null, null );
}
public ConfigurationModuleType getType() {
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java?rev=948268&r1=948267&r2=948268&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java Wed May 26 00:19:32 2010
@@ -356,7 +356,7 @@ public class EARConfigBuilder implements
jarFile,
null,
null,
- new LinkedHashSet<Module>(Collections.singleton(module)),
+ new LinkedHashSet<Module<?,?>>(Collections.<Module<?,?>>singleton(module)),
new ModuleList(),
null,
null);
@@ -426,7 +426,7 @@ public class EARConfigBuilder implements
// todo change module so you can extract the real module path back out.. then we can eliminate
// the moduleLocations and have addModules return the modules
ModuleList moduleLocations = new ModuleList();
- LinkedHashSet<Module> modules = new LinkedHashSet<Module>();
+ LinkedHashSet<Module<?,?>> modules = new LinkedHashSet<Module<?,?>>();
try {
addModules(earFile, application, gerApplication, moduleLocations, modules, environment, earName, idBuilder);
if (application == null) {
@@ -474,7 +474,7 @@ public class EARConfigBuilder implements
annotatedApp);
}
- private ApplicationType createDefaultSpecPlan(Set<Module> modules) {
+ private ApplicationType createDefaultSpecPlan(Set<Module<?,?>> modules) {
ApplicationType application = ApplicationType.Factory.newInstance();
for (Module module : modules) {
ConfigurationModuleType configurationModuleType = module.getType();
@@ -833,7 +833,7 @@ public class EARConfigBuilder implements
return filter;
}
- private void addModules(JarFile earFile, ApplicationType application, GerApplicationType gerApplication, ModuleList moduleLocations, LinkedHashSet<Module> modules, Environment environment, AbstractName earName, ModuleIDBuilder idBuilder) throws DeploymentException {
+ private void addModules(JarFile earFile, ApplicationType application, GerApplicationType gerApplication, ModuleList moduleLocations, LinkedHashSet<Module<?,?>> modules, Environment environment, AbstractName earName, ModuleIDBuilder idBuilder) throws DeploymentException {
Map<String, Object> altVendorDDs = new HashMap<String, Object>();
try {
mapVendorPlans(gerApplication, altVendorDDs, earFile);
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EJBModule.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EJBModule.java?rev=948268&r1=948267&r2=948268&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EJBModule.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EJBModule.java Wed May 26 00:19:32 2010
@@ -41,7 +41,7 @@ public class EJBModule extends Module<Xm
String originalSpecDD,
AnnotatedApp annotatedApp) {
super(standAlone, moduleName, name, environment, moduleFile,
- targetPath, specDD, vendorDD, originalSpecDD, null, annotatedApp);
+ targetPath, specDD, vendorDD, originalSpecDD, null, annotatedApp, null, null);
}
public ConfigurationModuleType getType() {
Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/Module.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/Module.java?rev=948268&r1=948267&r2=948268&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/Module.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/Module.java Wed May 26 00:19:32 2010
@@ -18,12 +18,14 @@ package org.apache.geronimo.j2ee.deploym
import java.net.URI;
import java.util.HashMap;
+import java.util.LinkedHashSet;
import java.util.Map;
import java.util.jar.JarFile;
import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.deployment.Deployable;
import org.apache.geronimo.deployment.DeployableJarFile;
+import org.apache.geronimo.deployment.ModuleList;
import org.apache.geronimo.gbean.AbstractName;
import org.apache.geronimo.j2ee.deployment.annotation.AnnotatedApp;
import org.apache.geronimo.kernel.config.ConfigurationData;
@@ -56,20 +58,30 @@ public abstract class Module<T, U> {
private ClassFinder classFinder;
protected final Map sharedContext = new HashMap();
+ protected LinkedHashSet<Module<?,?>> modules = new LinkedHashSet<Module<?,?>>();
+ protected ModuleList moduleLocations = new ModuleList();
- protected Module(boolean standAlone,
- AbstractName moduleName,
- String name,
- Environment environment,
- JarFile moduleFile,
- String targetPath,
- T specDD,
- U vendorDD,
- String originalSpecDD,
- String namespace,
- AnnotatedApp annotatedApp) {
+ protected Module(boolean standAlone,
+ AbstractName moduleName,
+ String name,
+ Environment environment,
+ JarFile moduleFile,
+ String targetPath,
+ T specDD,
+ U vendorDD,
+ String originalSpecDD,
+ String namespace,
+ AnnotatedApp annotatedApp,
+ ModuleList moduleLocations,
+ LinkedHashSet<Module<?,?>> modules) {
this(standAlone, moduleName, name, environment, new DeployableJarFile(moduleFile),
targetPath, specDD, vendorDD, originalSpecDD, namespace, annotatedApp);
+ if (moduleLocations != null) {
+ this.moduleLocations = moduleLocations;
+ }
+ if (modules != null) {
+ this.modules = modules;
+ }
}
protected Module(boolean standAlone,
@@ -269,4 +281,19 @@ public abstract class Module<T, U> {
}
}
+ public LinkedHashSet<Module<?,?>> getModules() {
+ return modules;
+ }
+
+ public void setModules(LinkedHashSet<Module<?,?>> modules) {
+ this.modules = modules;
+ }
+
+ public ModuleList getModuleLocations() {
+ return moduleLocations;
+ }
+
+ public void setModuleLocations(ModuleList moduleLocations) {
+ this.moduleLocations = moduleLocations;
+ }
}
Modified: geronimo/server/trunk/plugins/j2ee/j2ee-server/src/main/history/dependencies.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/j2ee-server/src/main/history/dependencies.xml?rev=948268&r1=948267&r2=948268&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/j2ee-server/src/main/history/dependencies.xml (original)
+++ geronimo/server/trunk/plugins/j2ee/j2ee-server/src/main/history/dependencies.xml Wed May 26 00:19:32 2010
@@ -27,8 +27,33 @@
<type>jar</type>
</dependency>
<dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-osgi-registry</artifactId>
+ <type>jar</type>
+ </dependency>
+ <dependency>
<groupId>org.apache.servicemix.bundles</groupId>
<artifactId>org.apache.servicemix.bundles.howl</artifactId>
<type>jar</type>
</dependency>
+ <dependency>
+ <groupId>org.apache.servicemix.bundles</groupId>
+ <artifactId>org.apache.servicemix.bundles.xpp3</artifactId>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>xbean-bundleutils</artifactId>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>xbean-finder</artifactId>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>xbean-reflect</artifactId>
+ <type>jar</type>
+ </dependency>
</plugin-artifact>
Modified: geronimo/server/trunk/plugins/jetty8/jetty8-deployer/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/jetty8-deployer/src/main/plan/plan.xml?rev=948268&r1=948267&r2=948268&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/jetty8-deployer/src/main/plan/plan.xml (original)
+++ geronimo/server/trunk/plugins/jetty8/jetty8-deployer/src/main/plan/plan.xml Wed May 26 00:19:32 2010
@@ -123,6 +123,9 @@ wsdl=text/xml
<pattern>
<name>OpenWebBeansModuleBuilderExtension</name>
</pattern>
+ <pattern>
+ <name>EJBBuilder</name>
+ </pattern>
</references>
<reference name="ResourceEnvironmentSetter">
<name>ResourceRefBuilder</name>
Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java?rev=948268&r1=948267&r2=948268&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java Wed May 26 00:19:32 2010
@@ -55,11 +55,15 @@ import org.apache.geronimo.gbean.GBeanIn
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.gbean.GBeanLifecycle;
import org.apache.geronimo.gbean.ReferencePatterns;
+import org.apache.geronimo.gbean.annotation.GBean;
+import org.apache.geronimo.gbean.annotation.ParamAttribute;
+import org.apache.geronimo.gbean.annotation.ParamReference;
import org.apache.geronimo.j2ee.deployment.EARContext;
import org.apache.geronimo.j2ee.deployment.Module;
import org.apache.geronimo.j2ee.deployment.ModuleBuilder;
import org.apache.geronimo.j2ee.deployment.ModuleBuilderExtension;
import org.apache.geronimo.j2ee.deployment.NamingBuilder;
+import org.apache.geronimo.j2ee.deployment.WebModule;
import org.apache.geronimo.j2ee.deployment.annotation.AnnotatedEjbJar;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.apache.geronimo.j2ee.jndi.JndiKey;
@@ -133,11 +137,15 @@ import org.slf4j.LoggerFactory;
/**
* Master builder for processing EJB JAR deployments and creating the
- * correspinding runtime objects (GBeans, etc.).
+ * corresponding runtime objects (GBeans, etc.).
+ *
+ * Acts as either a ModuleBuilder (for standalone ejb jars or ejb jars in an ear) or as a ModuleBuilderExtension
+ * for ejbs embedded in a web app.
*
* @version $Revision: 479481 $ $Date: 2006-11-26 16:52:20 -0800 (Sun, 26 Nov 2006) $
*/
-public class EjbModuleBuilder implements ModuleBuilder, GBeanLifecycle {
+@GBean(j2eeType = NameFactory.MODULE_BUILDER)
+public class EjbModuleBuilder implements ModuleBuilder, GBeanLifecycle, ModuleBuilderExtension {
private static final Logger log = LoggerFactory.getLogger(EjbModuleBuilder.class);
private static final String OPENEJBJAR_NAMESPACE = XmlUtil.OPENEJBJAR_QNAME.getNamespaceURI();
@@ -159,13 +167,13 @@ public class EjbModuleBuilder implements
private final ResourceEnvironmentSetter resourceEnvironmentSetter;
private final Collection<ModuleBuilderExtension> moduleBuilderExtensions;
- public EjbModuleBuilder(Environment defaultEnvironment,
- String defaultCmpJTADataSource,
- String defaultCmpNonJTADataSource,
- Collection<ModuleBuilderExtension> moduleBuilderExtensions,
- Collection<NamespaceDrivenBuilder> serviceBuilders,
- NamingBuilder namingBuilders,
- ResourceEnvironmentSetter resourceEnvironmentSetter) {
+ public EjbModuleBuilder(@ParamAttribute(name = "defaultEnvironment")Environment defaultEnvironment,
+ @ParamAttribute(name = "defaultCmpJTADataSource")String defaultCmpJTADataSource,
+ @ParamAttribute(name = "defaultCmpNonJTADataSource")String defaultCmpNonJTADataSource,
+ @ParamReference(name = "ModuleBuilderExtensions", namingType = NameFactory.MODULE_BUILDER)Collection<ModuleBuilderExtension> moduleBuilderExtensions,
+ @ParamReference(name = "ServiceBuilders", namingType = NameFactory.MODULE_BUILDER)Collection<NamespaceDrivenBuilder> serviceBuilders,
+ @ParamReference(name = "NamingBuilders", namingType = NameFactory.MODULE_BUILDER)NamingBuilder namingBuilders,
+ @ParamReference(name = "ResourceEnvironmentSetter", namingType = NameFactory.MODULE_BUILDER)ResourceEnvironmentSetter resourceEnvironmentSetter) {
this.defaultEnvironment = defaultEnvironment;
this.defaultCmpJTADataSource = defaultCmpJTADataSource;
this.defaultCmpNonJTADataSource = defaultCmpNonJTADataSource;
@@ -192,14 +200,17 @@ public class EjbModuleBuilder implements
System.setProperty("openejb.naming", "xbean");
}
+ @Override
public void doStart() throws Exception {
XmlBeansUtil.registerNamespaceUpdates(NAMESPACE_UPDATES);
}
+ @Override
public void doStop() {
XmlBeansUtil.unregisterNamespaceUpdates(NAMESPACE_UPDATES);
}
+ @Override
public void doFail() {
doStop();
}
@@ -217,18 +228,51 @@ public class EjbModuleBuilder implements
return EjbModuleBuilder.OPENEJBJAR_NAMESPACE;
}
+ @Override
public Module createModule(Bundle bundle, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
return null;
}
+ @Override
public Module createModule(File plan, JarFile moduleFile, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
return createModule(plan, moduleFile, "ejb.jar", null, null, null, naming, idBuilder);
}
+ @Override
public Module createModule(Object plan, JarFile moduleFile, String targetPath, URL specDDUrl, Environment environment, Object moduleContextInfo, AbstractName earName, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
return createModule(plan, moduleFile, targetPath, specDDUrl, environment, earName, naming, idBuilder);
}
+ //ModuleBuilderExtension entry points
+ @Override
+ public void createModule(Module module, Bundle bundle, Naming naming, ModuleIDBuilder moduleIDBuilder) throws DeploymentException {
+ //May be implemented for EBA support ?
+ }
+
+ @Override
+ public void createModule(Module module,
+ Object plan,
+ JarFile moduleFile,
+ String targetPath,
+ URL specDDUrl,
+ Environment environment,
+ Object moduleContextInfo,
+ AbstractName earName,
+ Naming naming,
+ ModuleIDBuilder idBuilder) throws DeploymentException {
+ //check for web module
+ if (module instanceof WebModule) {
+ //check for WEB-INF/ejb-jar.xml
+ Module ejbModule = createModule(null, moduleFile, targetPath, null, environment, earName, naming, idBuilder);
+ if (ejbModule != null) {
+ module.getModules().add(ejbModule);
+ //???
+ module.getModuleLocations().add(targetPath);
+ }
+ }
+
+ }
+
private Module createModule(Object plan, JarFile moduleFile, String targetPath, URL specDDUrl, Environment earEnvironment, AbstractName earName, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
if (moduleFile == null) throw new NullPointerException("moduleFile is null");
if (targetPath == null) throw new NullPointerException("targetPath is null");
@@ -427,9 +471,16 @@ public class EjbModuleBuilder implements
}
- public void installModule(JarFile earFile, EARContext earContext, Module module, Collection configurationStores, ConfigurationStore targetConfigurationStore, Collection repository) throws DeploymentException {
- installModule(module, earContext);
- EARContext moduleContext;
+ @Override
+ public void installModule(JarFile earFile,
+ EARContext earContext,
+ Module module,
+ Collection configurationStores,
+ ConfigurationStore targetConfigurationStore,
+ Collection repository) throws DeploymentException {
+ if (module instanceof EjbModule) {
+ installModule(module, earContext);
+ EARContext moduleContext;
// if (module.isStandAlone()) {
moduleContext = earContext;
// } else {
@@ -454,17 +505,25 @@ public class EjbModuleBuilder implements
// throw e;
// }
// }
- module.setEarContext(moduleContext);
- module.setRootEarContext(earContext);
- if (((EjbModule) module).getEjbJar().getAssemblyDescriptor() != null) {
- namingBuilder.buildEnvironment(null, null, module.getEnvironment());
- }
- for (ModuleBuilderExtension builder : moduleBuilderExtensions) {
- try {
- builder.installModule(earFile, earContext, module, configurationStores, targetConfigurationStore, repository);
- } catch (Throwable t) {
- String builderName = builder.getClass().getSimpleName();
- log.error(builderName + ".installModule() failed: " + t.getMessage(), t);
+ module.setEarContext(moduleContext);
+ module.setRootEarContext(earContext);
+ if (((EjbModule) module).getEjbJar().getAssemblyDescriptor() != null) {
+ namingBuilder.buildEnvironment(null, null, module.getEnvironment());
+ }
+ for (ModuleBuilderExtension builder : moduleBuilderExtensions) {
+ try {
+ builder.installModule(earFile, earContext, module, configurationStores, targetConfigurationStore, repository);
+ } catch (Throwable t) {
+ String builderName = builder.getClass().getSimpleName();
+ log.error(builderName + ".installModule() failed: " + t.getMessage(), t);
+ }
+ }
+ } else {
+ LinkedHashSet<Module<?,?>> modules = module.getModules();
+ for (Module<?,?> subModule: modules) {
+ if (subModule instanceof EjbModule) {
+ installModule(earFile, earContext, subModule, configurationStores, targetConfigurationStore, repository);
+ }
}
}
}
@@ -503,61 +562,71 @@ public class EjbModuleBuilder implements
return true;
}
+ @Override
public void initContext(EARContext earContext, Module module, Bundle bundle) throws DeploymentException {
- EjbModule ejbModule = (EjbModule) module;
+ if (module instanceof EjbModule) {
+ EjbModule ejbModule = (EjbModule) module;
- EjbJarInfo ejbJarInfo = getEjbJarInfo(earContext, ejbModule, bundle);
+ EjbJarInfo ejbJarInfo = getEjbJarInfo(earContext, ejbModule, bundle);
- ejbModule.setEjbJarInfo(ejbJarInfo);
+ ejbModule.setEjbJarInfo(ejbJarInfo);
- // update the original spec dd with the metadata complete dd
- EjbJar ejbJar = ejbModule.getEjbJar();
- ejbModule.setOriginalSpecDD(XmlUtil.marshal(ejbModule.getEjbJar()));
+ // update the original spec dd with the metadata complete dd
+ EjbJar ejbJar = ejbModule.getEjbJar();
+ ejbModule.setOriginalSpecDD(XmlUtil.marshal(ejbModule.getEjbJar()));
- // Get the geronimo-openejb plan
- GeronimoEjbJarType geronimoEjbJarType = (GeronimoEjbJarType) ejbModule.getEjbModule().getAltDDs().get("geronimo-openejb.xml");
+ // Get the geronimo-openejb plan
+ GeronimoEjbJarType geronimoEjbJarType = (GeronimoEjbJarType) ejbModule.getEjbModule().getAltDDs().get("geronimo-openejb.xml");
- // We must set all mapped name references back to null or Geronimo will blow up
+ // We must set all mapped name references back to null or Geronimo will blow up
// unmapReferences(ejbJar, geronimoEjbJarType);
- // create a xmlbeans version of the ejb-jar.xml file, because the jndi code is coupled based on xmlbeans objects
- EjbJarType ejbJarType = XmlUtil.convertToXmlbeans(ejbJar);
- ejbModule.setSpecDD(ejbJarType);
-
- // convert the plan to xmlbeans since geronimo naming is coupled on xmlbeans objects
- OpenejbGeronimoEjbJarType geronimoOpenejb = XmlUtil.convertToXmlbeans(geronimoEjbJarType);
- ejbModule.setVendorDD(geronimoOpenejb);
-
- // todo move namingBuilders.buildEnvironment() here when geronimo naming supports it
-
- // initialize the naming builders
- if (ejbJarType.getAssemblyDescriptor() != null) {
- namingBuilder.initContext(ejbJarType.getAssemblyDescriptor(),
- geronimoOpenejb,
- ejbModule);
- }
-
- EjbDeploymentBuilder ejbDeploymentBuilder = new EjbDeploymentBuilder(earContext, ejbModule, namingBuilder, resourceEnvironmentSetter);
- ejbModule.setEjbBuilder(ejbDeploymentBuilder);
- ejbDeploymentBuilder.initContext();
-
- // Add extra gbean declared in the geronimo-openejb.xml file
- serviceBuilders.build(geronimoOpenejb, earContext, ejbModule.getEarContext());
-
- ClassPathList manifestcp = new ClassPathList();
- manifestcp.add(module.getTargetPath());
- EARContext moduleContext = module.getEarContext();
- ModuleList moduleLocations = EARContext.MODULE_LIST_KEY.get(module.getRootEarContext().getGeneralData());
- URI baseUri = URI.create(module.getTargetPath());
- moduleContext.getCompleteManifestClassPath(module.getDeployable(), baseUri, URI.create("."), manifestcp, moduleLocations);
- moduleContext.getGeneralData().put(EARContext.CLASS_PATH_LIST_KEY, manifestcp);
+ // create a xmlbeans version of the ejb-jar.xml file, because the jndi code is coupled based on xmlbeans objects
+ EjbJarType ejbJarType = XmlUtil.convertToXmlbeans(ejbJar);
+ ejbModule.setSpecDD(ejbJarType);
+
+ // convert the plan to xmlbeans since geronimo naming is coupled on xmlbeans objects
+ OpenejbGeronimoEjbJarType geronimoOpenejb = XmlUtil.convertToXmlbeans(geronimoEjbJarType);
+ ejbModule.setVendorDD(geronimoOpenejb);
+
+ // todo move namingBuilders.buildEnvironment() here when geronimo naming supports it
+
+ // initialize the naming builders
+ if (ejbJarType.getAssemblyDescriptor() != null) {
+ namingBuilder.initContext(ejbJarType.getAssemblyDescriptor(),
+ geronimoOpenejb,
+ ejbModule);
+ }
+
+ EjbDeploymentBuilder ejbDeploymentBuilder = new EjbDeploymentBuilder(earContext, ejbModule, namingBuilder, resourceEnvironmentSetter);
+ ejbModule.setEjbBuilder(ejbDeploymentBuilder);
+ ejbDeploymentBuilder.initContext();
+
+ // Add extra gbean declared in the geronimo-openejb.xml file
+ serviceBuilders.build(geronimoOpenejb, earContext, ejbModule.getEarContext());
+
+ ClassPathList manifestcp = new ClassPathList();
+ manifestcp.add(module.getTargetPath());
+ EARContext moduleContext = module.getEarContext();
+ ModuleList moduleLocations = EARContext.MODULE_LIST_KEY.get(module.getRootEarContext().getGeneralData());
+ URI baseUri = URI.create(module.getTargetPath());
+ moduleContext.getCompleteManifestClassPath(module.getDeployable(), baseUri, URI.create("."), manifestcp, moduleLocations);
+ moduleContext.getGeneralData().put(EARContext.CLASS_PATH_LIST_KEY, manifestcp);
- for (ModuleBuilderExtension builder : moduleBuilderExtensions) {
- try {
- builder.initContext(earContext, module, bundle);
- } catch (Throwable t) {
- String builderName = builder.getClass().getSimpleName();
- log.error(builderName + ".initContext() failed: " + t.getMessage(), t);
+ for (ModuleBuilderExtension builder : moduleBuilderExtensions) {
+ try {
+ builder.initContext(earContext, module, bundle);
+ } catch (Throwable t) {
+ String builderName = builder.getClass().getSimpleName();
+ log.error(builderName + ".initContext() failed: " + t.getMessage(), t);
+ }
+ }
+ } else {
+ LinkedHashSet<Module<?,?>> modules = module.getModules();
+ for (Module<?,?> subModule: modules) {
+ if (subModule instanceof EjbModule) {
+ initContext(earContext, subModule, bundle);
+ }
}
}
}
@@ -769,7 +838,21 @@ public class EjbModuleBuilder implements
* Does the meaty work of processing the deployment information and
* creating GBeans for all the EJBs in the JAR, etc.
*/
+ @Override
public void addGBeans(EARContext earContext, Module module, Bundle bundle, Collection repositories) throws DeploymentException {
+ if (module instanceof EjbModule) {
+ doAddGBeans(earContext, module, bundle, repositories);
+ } else {
+ LinkedHashSet<Module<?,?>> modules = module.getModules();
+ for (Module<?,?> subModule: modules) {
+ if (subModule instanceof EjbModule) {
+ doAddGBeans(earContext, subModule, bundle, repositories);
+ }
+ }
+ }
+ }
+
+ public void doAddGBeans(EARContext earContext, Module module, Bundle bundle, Collection repositories) throws DeploymentException {
EjbModule ejbModule = (EjbModule) module;
EjbDeploymentBuilder ejbDeploymentBuilder = ejbModule.getEjbBuilder();
@@ -992,31 +1075,4 @@ public class EjbModuleBuilder implements
}
- public static final GBeanInfo GBEAN_INFO;
-
- static {
- GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(EjbModuleBuilder.class, NameFactory.MODULE_BUILDER);
- infoBuilder.addAttribute("defaultEnvironment", Environment.class, true);
- infoBuilder.addAttribute("defaultCmpJTADataSource", String.class, true);
- infoBuilder.addAttribute("defaultCmpNonJTADataSource", String.class, true);
- infoBuilder.addReference("ModuleBuilderExtensions", ModuleBuilderExtension.class, NameFactory.MODULE_BUILDER);
- infoBuilder.addReference("ServiceBuilders", NamespaceDrivenBuilder.class, NameFactory.MODULE_BUILDER);
- infoBuilder.addReference("NamingBuilders", NamingBuilder.class, NameFactory.MODULE_BUILDER);
- infoBuilder.addReference("ResourceEnvironmentSetter", ResourceEnvironmentSetter.class, NameFactory.MODULE_BUILDER);
-
- infoBuilder.setConstructor(new String[]{
- "defaultEnvironment",
- "defaultCmpJTADataSource",
- "defaultCmpNonJTADataSource",
- "ModuleBuilderExtensions",
- "ServiceBuilders",
- "NamingBuilders",
- "ResourceEnvironmentSetter"});
- GBEAN_INFO = infoBuilder.getBeanInfo();
- }
-
- public static GBeanInfo getGBeanInfo() {
- return GBEAN_INFO;
- }
-
}
Modified: geronimo/server/trunk/plugins/tomcat/tomcat7-deployer/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/tomcat7-deployer/src/main/plan/plan.xml?rev=948268&r1=948267&r2=948268&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/tomcat7-deployer/src/main/plan/plan.xml (original)
+++ geronimo/server/trunk/plugins/tomcat/tomcat7-deployer/src/main/plan/plan.xml Wed May 26 00:19:32 2010
@@ -66,6 +66,9 @@
<pattern>
<name>OpenWebBeansModuleBuilderExtension</name>
</pattern>
+ <pattern>
+ <name>EJBBuilder</name>
+ </pattern>
</references>
<reference name="ResourceEnvironmentSetter">
<name>ResourceRefBuilder</name>