You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2011/03/26 22:04:34 UTC
svn commit: r1085802 -
/ofbiz/trunk/framework/start/src/org/ofbiz/base/start/Start.java
Author: adrianc
Date: Sat Mar 26 21:04:34 2011
New Revision: 1085802
URL: http://svn.apache.org/viewvc?rev=1085802&view=rev
Log:
Misc Start.java code cleanups: eliminated unnecessary methods, renamed some methods, and fixed another potential thread deadlock issue.
Modified:
ofbiz/trunk/framework/start/src/org/ofbiz/base/start/Start.java
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=1085802&r1=1085801&r2=1085802&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 Sat Mar 26 21:04:34 2011
@@ -24,12 +24,10 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
-import java.lang.reflect.Method;
import java.net.ConnectException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
-import java.util.List;
/**
* Start - OFBiz Container(s) Startup Class
@@ -94,11 +92,31 @@ public class Start {
private Config config = null;
private String[] loaderArgs = null;
- private List<StartupLoader> loaders = new ArrayList<StartupLoader>();
+ private final ArrayList<StartupLoader> loaders = new ArrayList<StartupLoader>();
private boolean serverStarted = false;
private boolean serverStopping = false;
private Thread adminPortThread = null;
+ private void createListenerThread() throws IOException {
+ if (config.adminPort > 0) {
+ this.adminPortThread = new AdminPortThread();
+ this.adminPortThread.start();
+ } else {
+ System.out.println("Admin socket not configured; set to port 0");
+ }
+ }
+
+ private void createLogDirectory() {
+ boolean createdDir = false;
+ File logDir = new File(config.logDir);
+ if (!logDir.exists()) {
+ createdDir = logDir.mkdir();
+ }
+ if (createdDir) {
+ System.out.println("Created OFBiz log dir [" + logDir.getAbsolutePath() + "]");
+ }
+ }
+
public void init(String[] args) throws IOException {
init(args, true);
}
@@ -130,21 +148,23 @@ public class Start {
// initialize the classpath
initClasspath();
- // initialize the log directory
- initLogDirectory();
+ // create the log directory
+ createLogDirectory();
- // initialize the listener thread
- initListenerThread();
+ // create the listener thread
+ createListenerThread();
// set the shutdown hook
if (config.useShutdownHook) {
- setShutdownHook();
+ Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { shutdownServer(); } });
} else {
System.out.println("Shutdown hook disabled");
}
// initialize the startup loaders
- initStartLoaders();
+ if (!initStartLoaders()) {
+ System.exit(99);
+ }
}
}
@@ -161,36 +181,13 @@ public class Start {
}
}
- private void initListenerThread() throws IOException {
- if (config.adminPort > 0) {
- this.adminPortThread = new AdminPortThread();
- this.adminPortThread.start();
- } else {
- System.out.println("Admin socket not configured; set to port 0");
- }
- }
-
- private void initLogDirectory() {
- // Create the log directory
- boolean createdDir = false;
- File logDir = new File(config.logDir);
- if (!logDir.exists()) {
- logDir.mkdir();
- createdDir = true;
- }
-
- if (createdDir) {
- System.out.println("Created OFBiz log dir [" + logDir.getAbsolutePath() + "]");
- }
- }
-
- private void initStartLoaders() {
+ private boolean initStartLoaders() {
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
synchronized (this.loaders) {
// initialize the loaders
for (String loaderClassName: config.loaders) {
if (this.serverStopping) {
- return;
+ return false;
}
try {
Class<?> loaderClass = classloader.loadClass(loaderClassName);
@@ -199,10 +196,12 @@ public class Start {
this.loaders.add(loader);
} catch (Exception e) {
e.printStackTrace();
- System.exit(99);
+ return false;
}
}
+ this.loaders.trimToSize();
}
+ return true;
}
private String sendSocketCommand(String command) throws IOException, ConnectException {
@@ -226,30 +225,6 @@ public class Start {
return response;
}
- private void setShutdownHook() {
- try {
- Method shutdownHook = java.lang.Runtime.class.getMethod("addShutdownHook", new Class[]{java.lang.Thread.class});
- Thread hook = new Thread() {
- @Override
- public void run() {
- setName("OFBiz_Shutdown_Hook");
- shutdownServer();
- // Try to avoid JVM crash
- try {
- Thread.sleep(1000);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- };
-
- shutdownHook.invoke(Runtime.getRuntime(), new Object[]{hook});
- } catch (Exception e) {
- // VM Does not support shutdown hook
- e.printStackTrace();
- }
- }
-
public String shutdown() throws IOException {
return sendSocketCommand(Start.SHUTDOWN_COMMAND);
}
@@ -274,18 +249,12 @@ public class Start {
}
public void start() {
- startServer();
- if (config.shutdownAfterLoad) {
- shutdownServer();
- System.exit(0);
- }
- }
-
- private void startServer() {
- // start the startup loaders
if (!startStartLoaders()) {
System.exit(99);
}
+ if (config.shutdownAfterLoad) {
+ stopServer();
+ }
}
/**