You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2012/07/12 13:34:42 UTC
svn commit: r1360637 - in /ofbiz/trunk/framework: base/ base/config/
base/src/org/ofbiz/base/container/ start/src/org/ofbiz/base/start/ testtools/
Author: jacopoc
Date: Thu Jul 12 11:34:41 2012
New Revision: 1360637
URL: http://svn.apache.org/viewvc?rev=1360637&view=rev
Log:
Unified all the different variants of *-containers.xml files into one; this has been made possible because now you can declare the container loaders in the startup properties; also moved some container definitions from base/config to the proper component.
It is now very easy to control the way containers are loaded.
Removed:
ofbiz/trunk/framework/base/config/both-containers.xml
ofbiz/trunk/framework/base/config/install-containers.xml
ofbiz/trunk/framework/base/config/limited-containers.xml
ofbiz/trunk/framework/base/config/pos-containers.xml
ofbiz/trunk/framework/base/config/rmi-containers.xml
ofbiz/trunk/framework/base/config/test-containers.xml
ofbiz/trunk/framework/base/config/testlist-containers.xml
Modified:
ofbiz/trunk/framework/base/config/ofbiz-containers.xml
ofbiz/trunk/framework/base/ofbiz-component.xml
ofbiz/trunk/framework/base/src/org/ofbiz/base/container/ContainerLoader.java
ofbiz/trunk/framework/start/src/org/ofbiz/base/start/Config.java
ofbiz/trunk/framework/start/src/org/ofbiz/base/start/Start.java
ofbiz/trunk/framework/start/src/org/ofbiz/base/start/both.properties
ofbiz/trunk/framework/start/src/org/ofbiz/base/start/install.properties
ofbiz/trunk/framework/start/src/org/ofbiz/base/start/jetty.properties
ofbiz/trunk/framework/start/src/org/ofbiz/base/start/pos.properties
ofbiz/trunk/framework/start/src/org/ofbiz/base/start/rmi.properties
ofbiz/trunk/framework/start/src/org/ofbiz/base/start/start.properties
ofbiz/trunk/framework/start/src/org/ofbiz/base/start/test.properties
ofbiz/trunk/framework/start/src/org/ofbiz/base/start/testlist.properties
ofbiz/trunk/framework/testtools/ofbiz-component.xml
Modified: ofbiz/trunk/framework/base/config/ofbiz-containers.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/config/ofbiz-containers.xml?rev=1360637&r1=1360636&r2=1360637&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/config/ofbiz-containers.xml (original)
+++ ofbiz/trunk/framework/base/config/ofbiz-containers.xml Thu Jul 12 11:34:41 2012
@@ -20,13 +20,17 @@ under the License.
<ofbiz-containers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-containers.xsd">
- <loader name="main"/>
- <loader name="rmi"/>
- <!-- load the ofbiz component container (always first) -->
- <container name="component-container" class="org.ofbiz.base.container.ComponentContainer"/>
- <!-- load the cached classloader container (always second) -->
- <container name="classloader-container" class="org.ofbiz.base.container.ClassLoaderContainer"/>
+ <!-- load the ofbiz component container (always first) -->
+ <container name="component-container" loaders="main,rmi,pos,install" class="org.ofbiz.base.container.ComponentContainer"/>
+ <container name="component-container-test" loaders="test" class="org.ofbiz.base.container.ComponentContainer">
+ <property name="ofbiz.instrumenterClassName" value="org.ofbiz.base.config.CoberturaInstrumenter"/>
+ <property name="ofbiz.instrumenterFile" value="runtime/logs/cobertura-components.dat"/>
+ </container>
+ <container name="component-container-limited" loaders="limited" class="org.ofbiz.base.container.ComponentContainer">
+ <property name="update-classpath" value="false"/>
+ </container>
+ <container name="component-container" loaders="testlist" class="org.ofbiz.base.container.JustLoadComponentsContainer"/>
<!-- load JNDI/JOTM; this is no longer needed, leaving this in for now just in case someone wants to drop in JOTM from the specialized directory
<container name="jotm-container" class="org.ofbiz.jotm.container.JotmContainer">
Modified: ofbiz/trunk/framework/base/ofbiz-component.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/ofbiz-component.xml?rev=1360637&r1=1360636&r2=1360637&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/ofbiz-component.xml (original)
+++ ofbiz/trunk/framework/base/ofbiz-component.xml Thu Jul 12 11:34:41 2012
@@ -28,6 +28,9 @@ under the License.
<test-suite loader="main" location="testdef/basetests.xml"/>
+ <!-- load the cached classloader container (always second) -->
+ <container name="classloader-container" loaders="main,rmi,pos,install,test" class="org.ofbiz.base.container.ClassLoaderContainer"/>
+
<!-- load the naming (JNDI) server -->
<container name="naming-container" loaders="rmi" class="org.ofbiz.base.container.NamingServiceContainer">
<property name="host" value="0.0.0.0"/>
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/container/ContainerLoader.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/container/ContainerLoader.java?rev=1360637&r1=1360636&r2=1360637&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/container/ContainerLoader.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/container/ContainerLoader.java Thu Jul 12 11:34:41 2012
@@ -33,6 +33,7 @@ import org.ofbiz.base.start.Config;
import org.ofbiz.base.start.StartupException;
import org.ofbiz.base.start.StartupLoader;
import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.StringUtil;
import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.base.util.UtilXml;
@@ -79,13 +80,27 @@ public class ContainerLoader implements
this.loadedContainers.clear();
// get this loader's configuration file
this.configFile = config.containerConfig;
- Debug.logInfo("[Startup] Loading containers from " + configFile, module);
+
+ List<String> loaderProfiles = null;
+ for (Map loaderMap: config.loaders) {
+ if (module.equals((String)loaderMap.get("class"))) {
+ loaderProfiles = StringUtil.split((String)loaderMap.get("profiles"), ",");
+ }
+ }
+ List<String> loaders = null;
+ try {
+ loaders = ContainerConfig.getLoaders(configFile);
+ } catch (ContainerException e) {
+ throw new StartupException(e);
+ }
+ if (loaderProfiles != null) {
+ loaders.addAll(loaderProfiles);
+ }
+
+ Debug.logInfo("[Startup] Loading containers from " + configFile + " for loaders " + loaders, module);
Collection<ContainerConfig.Container> containers = null;
try {
containers = ContainerConfig.getContainers(configFile);
- if (UtilValidate.isEmpty(containers)) {
- throw new StartupException("No containers loaded; problem with configuration");
- }
} catch (ContainerException e) {
throw new StartupException(e);
}
@@ -93,28 +108,42 @@ public class ContainerLoader implements
if (this.unloading) {
return;
}
- Debug.logInfo("Loading container: " + containerCfg.name, module);
- Container tmpContainer = loadContainer(containerCfg, args);
- this.loadedContainers.add(tmpContainer);
- containerMap.put(containerCfg.name, tmpContainer);
-
- // TODO: Put container-specific code in the container.
- // This is only used in case of OFBiz running in Geronimo or WASCE. It allows to use the RMIDispatcher
- if (containerCfg.name.equals("rmi-dispatcher") && configFile.equals("limited-containers.xml")) {
- try {
- ContainerConfig.Container.Property initialCtxProp = containerCfg.getProperty("use-initial-context");
- String useCtx = initialCtxProp == null || initialCtxProp.value == null ? "false" : initialCtxProp.value;
- if (!useCtx.equalsIgnoreCase("true")) {
- //system.setProperty("java.security.policy", "client.policy"); maybe used if needed...
- if (System.getSecurityManager() == null) { // needed by WASCE with a client.policy file.
- System.setSecurityManager(new java.rmi.RMISecurityManager());
+ boolean matchingLoaderFound = false;
+ if (UtilValidate.isEmpty(containerCfg.loaders) && UtilValidate.isEmpty(loaders)) {
+ matchingLoaderFound = true;
+ } else {
+ for (String loader: loaders) {
+ if (UtilValidate.isEmpty(containerCfg.loaders) || containerCfg.loaders.contains(loader)) {
+ matchingLoaderFound = true;
+ break;
+ }
+ }
+ }
+ if (matchingLoaderFound) {
+ Debug.logInfo("Loading container: " + containerCfg.name, module);
+ Container tmpContainer = loadContainer(containerCfg, args);
+ this.loadedContainers.add(tmpContainer);
+ containerMap.put(containerCfg.name, tmpContainer);
+ Debug.logInfo("Loaded container: " + containerCfg.name, module);
+
+ // TODO: Put container-specific code in the container.
+ // This is only used in case of OFBiz running in Geronimo or WASCE. It allows to use the RMIDispatcher
+ if (containerCfg.name.equals("rmi-dispatcher") && configFile.equals("limited-containers.xml")) {
+ try {
+ ContainerConfig.Container.Property initialCtxProp = containerCfg.getProperty("use-initial-context");
+ String useCtx = initialCtxProp == null || initialCtxProp.value == null ? "false" : initialCtxProp.value;
+ if (!useCtx.equalsIgnoreCase("true")) {
+ //system.setProperty("java.security.policy", "client.policy"); maybe used if needed...
+ if (System.getSecurityManager() == null) { // needed by WASCE with a client.policy file.
+ System.setSecurityManager(new java.rmi.RMISecurityManager());
+ }
+ tmpContainer.start();
}
- tmpContainer.start();
+ } catch (ContainerException e) {
+ throw new StartupException("Cannot start() " + tmpContainer.getClass().getName(), e);
+ } catch (java.lang.AbstractMethodError e) {
+ throw new StartupException("Cannot start() " + tmpContainer.getClass().getName(), e);
}
- } catch (ContainerException e) {
- throw new StartupException("Cannot start() " + tmpContainer.getClass().getName(), e);
- } catch (java.lang.AbstractMethodError e) {
- throw new StartupException("Cannot start() " + tmpContainer.getClass().getName(), e);
}
}
}
@@ -122,12 +151,6 @@ public class ContainerLoader implements
return;
}
- List<String> loaders = null;
- try {
- loaders = ContainerConfig.getLoaders(configFile);
- } catch (ContainerException e) {
- throw new StartupException(e);
- }
List<ContainerConfig.Container> containersDefinedInComponents = ComponentConfig.getAllContainers();
for (ContainerConfig.Container containerCfg: containersDefinedInComponents) {
boolean matchingLoaderFound = false;
@@ -146,6 +169,7 @@ public class ContainerLoader implements
Container tmpContainer = loadContainer(containerCfg, args);
this.loadedContainers.add(tmpContainer);
containerMap.put(containerCfg.name, tmpContainer);
+ Debug.logInfo("Loaded component's container: " + containerCfg.name, module);
}
}
// Get hot-deploy container configuration files
Modified: ofbiz/trunk/framework/start/src/org/ofbiz/base/start/Config.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/org/ofbiz/base/start/Config.java?rev=1360637&r1=1360636&r2=1360637&view=diff
==============================================================================
--- ofbiz/trunk/framework/start/src/org/ofbiz/base/start/Config.java (original)
+++ ofbiz/trunk/framework/start/src/org/ofbiz/base/start/Config.java Thu Jul 12 11:34:41 2012
@@ -24,11 +24,7 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Properties;
-import java.util.TimeZone;
+import java.util.*;
public class Config {
public static final double REQUIRED_JDK = 1.6;
@@ -71,7 +67,7 @@ public class Config {
public String containerConfig;
public String instrumenterClassName;
public String instrumenterFile;
- public List<String> loaders;
+ public List<Map> loaders;
public String logDir;
public String ofbizHome;
public boolean requireCommJar = false;
@@ -420,14 +416,18 @@ public class Config {
instrumenterFile = getProp(props, "ofbiz.instrumenterFile", null);
// loader classes
- loaders = new ArrayList<String>();
+ loaders = new ArrayList<Map>();
int currentPosition = 1;
+ Map loader = null;
while (true) {
+ loader = new HashMap<String, String>();
String loaderClass = props.getProperty("ofbiz.start.loader" + currentPosition);
if (loaderClass == null || loaderClass.length() == 0) {
break;
} else {
- loaders.add(loaderClass);
+ loader.put("class", loaderClass);
+ loader.put("profiles", props.getProperty("ofbiz.start.loader" + currentPosition + ".loaders"));
+ loaders.add(loader);
currentPosition++;
}
}
Modified: ofbiz/trunk/framework/start/src/org/ofbiz/base/start/Start.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/org/ofbiz/base/start/Start.java?rev=1360637&r1=1360636&r2=1360637&view=diff
==============================================================================
--- ofbiz/trunk/framework/start/src/org/ofbiz/base/start/Start.java (original)
+++ ofbiz/trunk/framework/start/src/org/ofbiz/base/start/Start.java Thu Jul 12 11:34:41 2012
@@ -31,6 +31,7 @@ import java.net.Socket;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
/**
@@ -253,11 +254,12 @@ public class Start {
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
synchronized (this.loaders) {
// initialize the loaders
- for (String loaderClassName: config.loaders) {
+ for (Map loaderMap: config.loaders) {
if (this.serverState.get() == ServerState.STOPPING) {
return;
}
try {
+ String loaderClassName = (String)loaderMap.get("class");
Class<?> loaderClass = classloader.loadClass(loaderClassName);
StartupLoader loader = (StartupLoader) loaderClass.newInstance();
loader.load(config, loaderArgs.toArray(new String[loaderArgs.size()]));
Modified: ofbiz/trunk/framework/start/src/org/ofbiz/base/start/both.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/org/ofbiz/base/start/both.properties?rev=1360637&r1=1360636&r2=1360637&view=diff
==============================================================================
--- ofbiz/trunk/framework/start/src/org/ofbiz/base/start/both.properties (original)
+++ ofbiz/trunk/framework/start/src/org/ofbiz/base/start/both.properties Thu Jul 12 11:34:41 2012
@@ -46,6 +46,7 @@ ofbiz.start.loader1=org.ofbiz.base.splas
# --- StartupLoader implementations to load (in order)
ofbiz.start.loader2=org.ofbiz.base.container.ContainerLoader
+ofbiz.start.loader2.loaders=main,pos,rmi
# -- Splash Logo
ofbiz.start.splash.logo=framework/images/webapp/images/ofbiz_logo.gif
Modified: ofbiz/trunk/framework/start/src/org/ofbiz/base/start/install.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/org/ofbiz/base/start/install.properties?rev=1360637&r1=1360636&r2=1360637&view=diff
==============================================================================
--- ofbiz/trunk/framework/start/src/org/ofbiz/base/start/install.properties (original)
+++ ofbiz/trunk/framework/start/src/org/ofbiz/base/start/install.properties Thu Jul 12 11:34:41 2012
@@ -39,10 +39,11 @@
#ofbiz.log.dir=runtime/logs
# --- Location (relative to ofbiz.home) for (normal) container configuration
-ofbiz.container.config=framework/base/config/install-containers.xml
+#ofbiz.container.config=framework/base/config/ofbiz-containers.xml
# --- StartupLoader implementations to load (in order)
ofbiz.start.loader1=org.ofbiz.base.container.ContainerLoader
+ofbiz.start.loader1.loaders=install
# -- Enable the shutdown hook
#ofbiz.enable.hook=false
Modified: ofbiz/trunk/framework/start/src/org/ofbiz/base/start/jetty.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/org/ofbiz/base/start/jetty.properties?rev=1360637&r1=1360636&r2=1360637&view=diff
==============================================================================
--- ofbiz/trunk/framework/start/src/org/ofbiz/base/start/jetty.properties (original)
+++ ofbiz/trunk/framework/start/src/org/ofbiz/base/start/jetty.properties Thu Jul 12 11:34:41 2012
@@ -52,6 +52,7 @@ ofbiz.admin.key=so3du5kasd5dn
# --- StartupLoader implementations to load (in order)
ofbiz.start.loader1=org.ofbiz.base.container.ContainerLoader
+ofbiz.start.loader1.loaders=main,rmi
# -- Enable the shutdown hook
ofbiz.enable.hook=true
Modified: ofbiz/trunk/framework/start/src/org/ofbiz/base/start/pos.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/org/ofbiz/base/start/pos.properties?rev=1360637&r1=1360636&r2=1360637&view=diff
==============================================================================
--- ofbiz/trunk/framework/start/src/org/ofbiz/base/start/pos.properties (original)
+++ ofbiz/trunk/framework/start/src/org/ofbiz/base/start/pos.properties Thu Jul 12 11:34:41 2012
@@ -39,13 +39,14 @@
#ofbiz.log.dir=runtime/logs
# --- Location (relative to ofbiz.home) for (normal) container configuration
-ofbiz.container.config=framework/base/config/pos-containers.xml
+#ofbiz.container.config=framework/base/config/ofbiz-containers.xml
# -- StartupLoader implementation for Splash Screen
ofbiz.start.loader1=org.ofbiz.base.splash.SplashLoader
# --- StartupLoader implementations to load (in order)
ofbiz.start.loader2=org.ofbiz.base.container.ContainerLoader
+ofbiz.start.loader2.loaders=pos
# -- Splash Logo
ofbiz.start.splash.logo=framework/images/webapp/images/ofbiz_logo.gif
Modified: ofbiz/trunk/framework/start/src/org/ofbiz/base/start/rmi.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/org/ofbiz/base/start/rmi.properties?rev=1360637&r1=1360636&r2=1360637&view=diff
==============================================================================
--- ofbiz/trunk/framework/start/src/org/ofbiz/base/start/rmi.properties (original)
+++ ofbiz/trunk/framework/start/src/org/ofbiz/base/start/rmi.properties Thu Jul 12 11:34:41 2012
@@ -39,10 +39,11 @@
#ofbiz.log.dir=runtime/logs
# --- Location (relative to ofbiz.home) for (normal) container configuration
-ofbiz.container.config=framework/base/config/rmi-containers.xml
+#ofbiz.container.config=framework/base/config/ofbiz-containers.xml
# --- StartupLoader implementations to load (in order)
ofbiz.start.loader1=org.ofbiz.base.container.ContainerLoader
+ofbiz.start.loader1.loaders=rmi
# -- Enable the shutdown hook
#ofbiz.enable.hook=true
Modified: ofbiz/trunk/framework/start/src/org/ofbiz/base/start/start.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/org/ofbiz/base/start/start.properties?rev=1360637&r1=1360636&r2=1360637&view=diff
==============================================================================
--- ofbiz/trunk/framework/start/src/org/ofbiz/base/start/start.properties (original)
+++ ofbiz/trunk/framework/start/src/org/ofbiz/base/start/start.properties Thu Jul 12 11:34:41 2012
@@ -52,6 +52,7 @@ ofbiz.admin.key=so3du5kasd5dn
# --- StartupLoader implementations to load (in order)
ofbiz.start.loader1=org.ofbiz.base.container.ContainerLoader
+ofbiz.start.loader1.loaders=main,rmi
# -- Enable the shutdown hook
#ofbiz.enable.hook=true
Modified: ofbiz/trunk/framework/start/src/org/ofbiz/base/start/test.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/org/ofbiz/base/start/test.properties?rev=1360637&r1=1360636&r2=1360637&view=diff
==============================================================================
--- ofbiz/trunk/framework/start/src/org/ofbiz/base/start/test.properties (original)
+++ ofbiz/trunk/framework/start/src/org/ofbiz/base/start/test.properties Thu Jul 12 11:34:41 2012
@@ -39,10 +39,11 @@
#ofbiz.log.dir=runtime/logs
# --- Location (relative to ofbiz.home) for (normal) container configuration
-ofbiz.container.config=framework/base/config/test-containers.xml
+#ofbiz.container.config=framework/base/config/ofbiz-containers.xml
# --- StartupLoader implementations to load (in order)
ofbiz.start.loader1=org.ofbiz.base.container.ContainerLoader
+ofbiz.start.loader1.loaders=test,rmi
# -- Enable the shutdown hook
#ofbiz.enable.hook=true
Modified: ofbiz/trunk/framework/start/src/org/ofbiz/base/start/testlist.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/org/ofbiz/base/start/testlist.properties?rev=1360637&r1=1360636&r2=1360637&view=diff
==============================================================================
--- ofbiz/trunk/framework/start/src/org/ofbiz/base/start/testlist.properties (original)
+++ ofbiz/trunk/framework/start/src/org/ofbiz/base/start/testlist.properties Thu Jul 12 11:34:41 2012
@@ -39,10 +39,11 @@
#ofbiz.log.dir=runtime/logs
# --- Location (relative to ofbiz.home) for (normal) container configuration
-ofbiz.container.config=framework/base/config/testlist-containers.xml
+#ofbiz.container.config=framework/base/config/ofbiz-containers.xml
# --- StartupLoader implementations to load (in order)
ofbiz.start.loader1=org.ofbiz.base.container.ContainerLoader
+ofbiz.start.loader1.loaders=testlist
# -- Enable the shutdown hook
#ofbiz.enable.hook=true
Modified: ofbiz/trunk/framework/testtools/ofbiz-component.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/testtools/ofbiz-component.xml?rev=1360637&r1=1360636&r2=1360637&view=diff
==============================================================================
--- ofbiz/trunk/framework/testtools/ofbiz-component.xml (original)
+++ ofbiz/trunk/framework/testtools/ofbiz-component.xml Thu Jul 12 11:34:41 2012
@@ -35,4 +35,6 @@
<service-resource type="model" loader="main" location="servicedef/services.xml"/>
<container name="testtools-container" loaders="test" class="org.ofbiz.testtools.TestRunContainer"/>
+ <container name="testtools-container" loaders="testlist" class="org.ofbiz.testtools.TestListContainer"/>
+
</ofbiz-component>
\ No newline at end of file