You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2014/07/09 10:17:14 UTC
svn commit: r1609054 - in /tomee/tomee/trunk: ./
itests/openejb-itests-client/src/main/java/org/apache/openejb/test/RemoteTestServer.java
Author: andygumbrecht
Date: Wed Jul 9 08:17:13 2014
New Revision: 1609054
URL: http://svn.apache.org/r1609054
Log:
Wait for RemoteTestServer
Modified:
tomee/tomee/trunk/ (props changed)
tomee/tomee/trunk/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/RemoteTestServer.java
Propchange: tomee/tomee/trunk/
------------------------------------------------------------------------------
Merged /tomee/tomee/branches/tomee-1.7.x:r1609053
Modified: tomee/tomee/trunk/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/RemoteTestServer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/RemoteTestServer.java?rev=1609054&r1=1609053&r2=1609054&view=diff
==============================================================================
--- tomee/tomee/trunk/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/RemoteTestServer.java (original)
+++ tomee/tomee/trunk/itests/openejb-itests-client/src/main/java/org/apache/openejb/test/RemoteTestServer.java Wed Jul 9 08:17:13 2014
@@ -28,17 +28,15 @@ public class RemoteTestServer implements
System.setProperty("noBanner", "true");
}
- /**
- * Has the remote server's instance been already running ?
- */
- private boolean serverHasAlreadyBeenStarted = true;
-
+ private boolean serverRunning = false;
+ private Process serverProcess = null;
private Properties properties;
@Override
public void init(final Properties props) {
properties = props;
- if (props.contains("java.naming.security.principal")) throw new IllegalArgumentException("Not allowed 'java.naming.security.principal'");
+ if (props.contains("java.naming.security.principal"))
+ throw new IllegalArgumentException("Not allowed 'java.naming.security.principal'");
// props.put("test.server.class","org.apache.openejb.test.RemoteTestServer");
props.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
props.put("java.naming.provider.url", "127.0.0.1:4201");
@@ -47,7 +45,7 @@ public class RemoteTestServer implements
}
@Override
- public void start() {
+ public synchronized void start() {
if (!connect()) {
try {
System.out.println("[] START SERVER");
@@ -59,7 +57,6 @@ public class RemoteTestServer implements
final String systemInfo = "Java " + System.getProperty("java.version") + "; " + System.getProperty("os.name") + "/" + System.getProperty("os.version");
System.out.println("SYSTEM_INFO = " + systemInfo);
- serverHasAlreadyBeenStarted = false;
File openejbJar = null;
final File lib = new File(home, "lib");
@@ -85,33 +82,35 @@ public class RemoteTestServer implements
//DMB: If you don't use an array, you get problems with jar paths containing spaces
// the command won't parse correctly
final String[] args = {(isWindows ? "java.exe" : "java"), "-jar", openejbJar.getAbsolutePath(), "start"};
- final Process server = Runtime.getRuntime().exec(args);
+ this.serverProcess = Runtime.getRuntime().exec(args);
// Pipe the processes STDOUT to ours
- final InputStream out = server.getInputStream();
+ final InputStream out = serverProcess.getInputStream();
final Thread serverOut = new Thread(new Pipe(out, System.out));
serverOut.setDaemon(true);
serverOut.start();
// Pipe the processes STDERR to ours
- final InputStream err = server.getErrorStream();
+ final InputStream err = serverProcess.getErrorStream();
final Thread serverErr = new Thread(new Pipe(err, System.err));
serverErr.setDaemon(true);
serverErr.start();
- } catch (Exception e) {
+
+ connect(10);
+
+ serverRunning = true;
+
+ } catch (final Exception e) {
throw (RuntimeException) new RuntimeException("Cannot start the server.").initCause(e);
}
- connect(10);
- } else {
- //System.out.println("[] SERVER STARTED");
}
}
@Override
- public void stop() {
- if (!serverHasAlreadyBeenStarted) {
+ public synchronized void stop() {
+ if (serverRunning) {
try {
System.out.println("[] STOP SERVER");
@@ -124,6 +123,14 @@ public class RemoteTestServer implements
e.printStackTrace();
}
}
+
+ if (null != serverProcess) {
+ try {
+ serverProcess.waitFor();
+ } catch (final Exception e) {
+ //Ignore
+ }
+ }
}
@Override