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