Modified: ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/StartupControlPanel.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/StartupControlPanel.java?rev=1765127&r1=1765126&r2=1765127&view=diff ============================================================================== --- ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/StartupControlPanel.java (original) +++ ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/StartupControlPanel.java Sun Oct 16 09:07:08 2016 @@ -21,9 +21,7 @@ package org.apache.ofbiz.base.start; import java.io.File; import java.io.FileInputStream; import java.io.IOException; -import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.concurrent.atomic.AtomicReference; import org.apache.ofbiz.base.start.Start.ServerState; @@ -61,17 +59,15 @@ final class StartupControlPanel { AtomicReference<ServerState> serverState, List<StartupCommand> ofbizCommands) throws StartupException { - List<StartupLoader> loaders = new ArrayList<StartupLoader>(); - List<String> loaderArgs = StartupCommandUtil.adaptStartupCommandsToLoaderArgs(ofbizCommands); - Thread adminServer = createAdminServer(config, serverState, loaders); + StartupLoader loader = instantiateStartupLoader(config, Thread.currentThread().getContextClassLoader()); + Thread adminServer = createAdminServer(config, serverState, loader); Classpath classPath = createClassPath(config); - NativeLibClassLoader classLoader = createAndSetContextClassLoader(config, classPath); + createAndSetContextClassLoader(config, classPath); createLogDirectoryIfMissing(config); - createRuntimeShutdownHook(config, loaders, serverState); - loadStartupLoaders(config, loaders, loaderArgs, serverState, classLoader); - startStartupLoaders(loaders, serverState); - executeShutdownAfterLoadIfConfigured(config, loaders, serverState, adminServer); + createRuntimeShutdownHook(config, loader, serverState); + executeStartupLoadSequence(config, loader, ofbizCommands, serverState); + executeShutdownAfterLoadIfConfigured(config, loader, serverState, adminServer); } /** @@ -81,8 +77,8 @@ final class StartupControlPanel { * - Manually if requested by the client AdminClient * - Automatically if Config.shutdownAfterLoad is set to true */ - static void stop(List<StartupLoader> loaders, AtomicReference<ServerState> serverState, Thread adminServer) { - shutdownServer(loaders, serverState, adminServer); + static void stop(StartupLoader loader, AtomicReference<ServerState> serverState, Thread adminServer) { + shutdownServer(loader, serverState, adminServer); System.exit(0); } @@ -106,7 +102,7 @@ final class StartupControlPanel { System.exit(1); } - private static void shutdownServer(List<StartupLoader> loaders, AtomicReference<ServerState> serverState, Thread adminServer) { + private static void shutdownServer(StartupLoader loader, AtomicReference<ServerState> serverState, Thread adminServer) { ServerState currentState; do { currentState = serverState.get(); @@ -116,16 +112,10 @@ final class StartupControlPanel { } while (!serverState.compareAndSet(currentState, ServerState.STOPPING)); // The current thread was the one that successfully changed the state; // continue with further processing. - synchronized (loaders) { - // Unload in reverse order - for (int i = loaders.size(); i > 0; i--) { - StartupLoader loader = loaders.get(i - 1); - try { - loader.unload(); - } catch (Exception e) { - e.printStackTrace(); - } - } + try { + loader.unload(); + } catch (Exception e) { + e.printStackTrace(); } if (adminServer != null && adminServer.isAlive()) { adminServer.interrupt(); @@ -146,14 +136,26 @@ final class StartupControlPanel { } } + private static StartupLoader instantiateStartupLoader(Config config, ClassLoader classLoader) throws StartupException { + StartupLoader loader; + try { + String className = config.loader.get("class"); + Class<?> loaderClass = classLoader.loadClass(className); + loader = (StartupLoader) loaderClass.newInstance(); + } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { + throw new StartupException("Could not initiate a StartupLoader", e); + } + return loader; + } + private static Thread createAdminServer( Config config, AtomicReference<ServerState> serverState, - List<StartupLoader> loaders) throws StartupException { + StartupLoader loader) throws StartupException { Thread adminServer = null; if (config.adminPort > 0) { - adminServer = new AdminServer(loaders, serverState, config); + adminServer = new AdminServer(loader, serverState, config); adminServer.start(); } else { System.out.println("Admin socket not configured; set to port 0"); @@ -208,14 +210,14 @@ final class StartupControlPanel { private static void createRuntimeShutdownHook( Config config, - List<StartupLoader> loaders, + StartupLoader loader, AtomicReference<ServerState> serverState) { if (config.useShutdownHook) { Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { - shutdownServer(loaders, serverState, this); + shutdownServer(loader, serverState, this); } }); } else { @@ -223,51 +225,13 @@ final class StartupControlPanel { } } - private static void loadStartupLoaders(Config config, - List<StartupLoader> loaders, - List<String> loaderArgs, - AtomicReference<ServerState> serverState, - NativeLibClassLoader classloader) throws StartupException { - - String[] argsArray = loaderArgs.toArray(new String[loaderArgs.size()]); - synchronized (loaders) { - for (Map<String, String> loaderMap : config.loaders) { - if (serverState.get() == ServerState.STOPPING) { - return; - } - try { - String loaderClassName = loaderMap.get("class"); - Class<?> loaderClass = classloader.loadClass(loaderClassName); - StartupLoader loader = (StartupLoader) loaderClass.newInstance(); - loaders.add(loader); // add before loading, so unload can occur if error during loading - loader.load(config, argsArray); - } catch (ReflectiveOperationException e) { - throw new StartupException(e.getMessage(), e); - } - } - } - StringBuilder sb = new StringBuilder(); - for (String path : classloader.getNativeLibPaths()) { - if (sb.length() > 0) { - sb.append(File.pathSeparator); - } - sb.append(path); - } - System.setProperty("java.library.path", sb.toString()); - } - - private static void startStartupLoaders(List<StartupLoader> loaders, + private static void executeStartupLoadSequence(Config config, + StartupLoader loader, + List<StartupCommand> ofbizCommands, AtomicReference<ServerState> serverState) throws StartupException { - synchronized (loaders) { - // start the loaders - for (StartupLoader loader : loaders) { - if (serverState.get() == ServerState.STOPPING) { - return; - } else { - loader.start(); - } - } + if (serverState.get() != ServerState.STOPPING) { + loader.load(config, ofbizCommands); } if(!serverState.compareAndSet(ServerState.STARTING, ServerState.RUNNING)) { throw new StartupException("Error during start"); @@ -276,12 +240,12 @@ final class StartupControlPanel { private static void executeShutdownAfterLoadIfConfigured( Config config, - List<StartupLoader> loaders, + StartupLoader loader, AtomicReference<ServerState> serverState, Thread adminServer) { if (config.shutdownAfterLoad) { - stop(loaders, serverState, adminServer); + stop(loader, serverState, adminServer); } } } Modified: ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/StartupLoader.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/StartupLoader.java?rev=1765127&r1=1765126&r2=1765127&view=diff ============================================================================== --- ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/StartupLoader.java (original) +++ ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/StartupLoader.java Sun Oct 16 09:07:08 2016 @@ -18,6 +18,8 @@ *******************************************************************************/ package org.apache.ofbiz.base.start; +import java.util.List; + /** * An object that loads server startup classes. * <p> @@ -35,23 +37,15 @@ package org.apache.ofbiz.base.start; public interface StartupLoader { /** - * Load a startup class. + * Start a startup class. * * @param config Startup config. - * @param args Command-line arguments. + * @param ofbizCommands Command-line arguments. * @throws StartupException If an error was encountered. Throwing this exception * will halt loader loading, so it should be thrown only when OFBiz can't * operate without it. */ - public void load(Config config, String args[]) throws StartupException; - - /** - * Start the startup class. This method must not block - implementations - * that require thread blocking must create a separate thread and then return. - * - * @throws StartupException If an error was encountered. - */ - public void start() throws StartupException; + public void load(Config config, List<StartupCommand> ofbizCommands) throws StartupException; /** * Stop the startup class. This method must not block. Modified: ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/load-data.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/load-data.properties?rev=1765127&r1=1765126&r2=1765127&view=diff ============================================================================== --- ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/load-data.properties (original) +++ ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/load-data.properties Sun Oct 16 09:07:08 2016 @@ -30,8 +30,8 @@ ofbiz.start.classpath.addComponent=frame #ofbiz.container.config=framework/base/config/ofbiz-containers.xml # --- StartupLoader implementations to load (in order) -ofbiz.start.loader1=org.apache.ofbiz.base.container.ContainerLoader -ofbiz.start.loader1.loaders=load-data +ofbiz.start.loader=org.apache.ofbiz.base.container.ContainerLoader +ofbiz.start.loader.loaders=load-data # -- Enable the shutdown hook #ofbiz.enable.hook=false Modified: ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/rmi.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/rmi.properties?rev=1765127&r1=1765126&r2=1765127&view=diff ============================================================================== --- ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/rmi.properties (original) +++ ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/rmi.properties Sun Oct 16 09:07:08 2016 @@ -30,8 +30,8 @@ ofbiz.start.classpath.addComponent=frame #ofbiz.container.config=framework/base/config/ofbiz-containers.xml # --- StartupLoader implementations to load (in order) -ofbiz.start.loader1=org.apache.ofbiz.base.container.ContainerLoader -ofbiz.start.loader1.loaders=rmi +ofbiz.start.loader=org.apache.ofbiz.base.container.ContainerLoader +ofbiz.start.loader.loaders=rmi # -- Enable the shutdown hook #ofbiz.enable.hook=true Modified: ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/start.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/start.properties?rev=1765127&r1=1765126&r2=1765127&view=diff ============================================================================== --- ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/start.properties (original) +++ ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/start.properties Sun Oct 16 09:07:08 2016 @@ -38,11 +38,11 @@ ofbiz.admin.key=so3du5kasd5dn #ofbiz.container.config=framework/base/config/ofbiz-containers.xml # --- StartupLoader implementations to load (in order) -ofbiz.start.loader1=org.apache.ofbiz.base.container.ContainerLoader +ofbiz.start.loader=org.apache.ofbiz.base.container.ContainerLoader # Because of the danger of Java deserialization when using RMI, the RMI component has been disabled in the default configuration of OFBiz. # If you need RMI you just need to uncomment those places - See OFBIZ-6942 for details --> #ofbiz.start.loader1.loaders=main,rmi -ofbiz.start.loader1.loaders=main +ofbiz.start.loader.loaders=main # -- Enable the shutdown hook #ofbiz.enable.hook=true Modified: ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/test.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/test.properties?rev=1765127&r1=1765126&r2=1765127&view=diff ============================================================================== --- ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/test.properties (original) +++ ofbiz/trunk/framework/start/src/main/java/org/apache/ofbiz/base/start/test.properties Sun Oct 16 09:07:08 2016 @@ -30,8 +30,8 @@ ofbiz.start.classpath.addComponent=frame #ofbiz.container.config=framework/base/config/ofbiz-containers.xml # --- StartupLoader implementations to load (in order) -ofbiz.start.loader1=org.apache.ofbiz.base.container.ContainerLoader -ofbiz.start.loader1.loaders=test +ofbiz.start.loader=org.apache.ofbiz.base.container.ContainerLoader +ofbiz.start.loader.loaders=test # -- Enable the shutdown hook #ofbiz.enable.hook=true Modified: ofbiz/trunk/framework/testtools/src/main/java/org/apache/ofbiz/testtools/TestRunContainer.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/testtools/src/main/java/org/apache/ofbiz/testtools/TestRunContainer.java?rev=1765127&r1=1765126&r2=1765127&view=diff ============================================================================== --- ofbiz/trunk/framework/testtools/src/main/java/org/apache/ofbiz/testtools/TestRunContainer.java (original) +++ ofbiz/trunk/framework/testtools/src/main/java/org/apache/ofbiz/testtools/TestRunContainer.java Sun Oct 16 09:07:08 2016 @@ -24,6 +24,7 @@ import java.io.FileOutputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.HashMap; +import java.util.List; import java.util.Map; import junit.framework.AssertionFailedError; @@ -39,6 +40,8 @@ import org.apache.tools.ant.taskdefs.opt import org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter; import org.apache.ofbiz.base.container.Container; import org.apache.ofbiz.base.container.ContainerException; +import org.apache.ofbiz.base.container.StartupCommandToArgsAdapter; +import org.apache.ofbiz.base.start.StartupCommand; import org.apache.ofbiz.base.util.Debug; import org.apache.ofbiz.entity.Delegator; @@ -59,7 +62,10 @@ public class TestRunContainer implements private String name; @Override - public void init(String[] args, String name, String configFile) { + public void init(List<StartupCommand> ofbizCommands, String name, String configFile) { + // TODO: remove this hack and provide clean implementation + String[] args = StartupCommandToArgsAdapter.adaptStartupCommandsToLoaderArgs(ofbizCommands); + this.name = name; this.configFile = configFile; if (args != null) { Modified: ofbiz/trunk/framework/webtools/src/main/java/org/apache/ofbiz/webtools/artifactinfo/RunTestEvents.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/src/main/java/org/apache/ofbiz/webtools/artifactinfo/RunTestEvents.java?rev=1765127&r1=1765126&r2=1765127&view=diff ============================================================================== --- ofbiz/trunk/framework/webtools/src/main/java/org/apache/ofbiz/webtools/artifactinfo/RunTestEvents.java (original) +++ ofbiz/trunk/framework/webtools/src/main/java/org/apache/ofbiz/webtools/artifactinfo/RunTestEvents.java Sun Oct 16 09:07:08 2016 @@ -18,10 +18,14 @@ *******************************************************************************/ package org.apache.ofbiz.webtools.artifactinfo; +import java.util.ArrayList; +import java.util.List; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.ofbiz.base.container.ContainerException; - +import org.apache.ofbiz.base.start.StartupCommand; +import org.apache.ofbiz.base.util.UtilMisc; import org.apache.ofbiz.testtools.*; /** @@ -38,15 +42,17 @@ public class RunTestEvents { String caseName = request.getParameter("caseName"); String result = null; - String[] args = null; + List<StartupCommand> ofbizCommands = new ArrayList<StartupCommand>(); if (caseName == null) { - args = new String[]{"-component=" + component, " -suitename=" + suiteName + " -loglevel=info"}; + ofbizCommands.add(new StartupCommand.Builder("test").properties( + UtilMisc.toMap("component", component, "suitename", suiteName)).build()); } else { - args = new String[]{"-component=" + component, " -suitename=" + suiteName, " -case=" + caseName, " -loglevel=info"}; + ofbizCommands.add(new StartupCommand.Builder("test").properties( + UtilMisc.toMap("component", component, "suitename", suiteName, "case", caseName)).build()); } TestRunContainer testRunContainer = new TestRunContainer(); - testRunContainer.init(args, "frontend test run", " "); + testRunContainer.init(ofbizCommands, "frontend test run", " "); if (testRunContainer.start() == false) { result = "error"; } else { @@ -56,4 +62,3 @@ public class RunTestEvents { return result; } } - Modified: ofbiz/trunk/specialpurpose/birt/src/main/java/org/apache/ofbiz/birt/container/BirtContainer.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/birt/src/main/java/org/apache/ofbiz/birt/container/BirtContainer.java?rev=1765127&r1=1765126&r2=1765127&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/birt/src/main/java/org/apache/ofbiz/birt/container/BirtContainer.java (original) +++ ofbiz/trunk/specialpurpose/birt/src/main/java/org/apache/ofbiz/birt/container/BirtContainer.java Sun Oct 16 09:07:08 2016 @@ -19,6 +19,7 @@ package org.apache.ofbiz.birt.container; import java.io.File; +import java.util.List; import java.util.logging.Level; import org.eclipse.birt.core.exception.BirtException; @@ -30,6 +31,7 @@ import org.eclipse.birt.report.engine.ap import org.apache.ofbiz.base.container.Container; import org.apache.ofbiz.base.container.ContainerConfig; import org.apache.ofbiz.base.container.ContainerException; +import org.apache.ofbiz.base.start.StartupCommand; import org.apache.ofbiz.base.util.Debug; import org.apache.ofbiz.birt.BirtFactory; @@ -42,7 +44,7 @@ public class BirtContainer implements Co private String name; @Override - public void init(String[] args, String name, String configFile) throws ContainerException { + public void init(List<StartupCommand> ofbizCommands, String name, String configFile) throws ContainerException { this.name = name; this.configFile = configFile; } @@ -59,7 +61,7 @@ public class BirtContainer implements Co throw new ContainerException("Unknown container config name"); } // get the container config - ContainerConfig.Container cc = ContainerConfig.getContainer(getName(), configFile); + ContainerConfig.Configuration cc = ContainerConfig.getConfiguration(getName(), configFile); if (cc == null) { throw new ContainerException("No " + getName() + " configuration found in container config!"); } |
Free forum by Nabble | Edit this page |