You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2011/03/17 20:08:35 UTC

svn commit: r1082647 - /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java

Author: dblevins
Date: Thu Mar 17 19:08:34 2011
New Revision: 1082647

URL: http://svn.apache.org/viewvc?rev=1082647&view=rev
Log:
Added debug and updated piping

Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java?rev=1082647&r1=1082646&r2=1082647&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java Thu Mar 17 19:08:34 2011
@@ -16,8 +16,10 @@
  */
 package org.apache.openejb.config;
 
+import org.apache.openejb.util.Join;
+import org.apache.openejb.util.Pipe;
+
 import java.io.File;
-import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.Socket;
 import java.util.Properties;
@@ -40,6 +42,17 @@ public class RemoteServer {
 
     private Properties properties;
     private Process server;
+    private final int tries;
+    private final boolean verbose;
+
+    public RemoteServer() {
+        this(10, false);
+    }
+
+    public RemoteServer(int tries, boolean verbose) {
+        this.tries = tries;
+        this.verbose = verbose;
+    }
 
     public void init(Properties props) {
         properties = props;
@@ -195,31 +208,23 @@ public class RemoteServer {
                         };
                     }
                 }
+                if (verbose) {
+                    System.out.println(Join.join("\n", args));
+                }
                 server = Runtime.getRuntime().exec(args);
 
-                // Pipe the processes STDOUT to ours
-                InputStream out = server.getInputStream();
-                Thread serverOut = new Thread(new Pipe(out, System.out));
-
-                serverOut.setDaemon(true);
-                serverOut.start();
-
-                // Pipe the processes STDERR to ours
-                InputStream err = server.getErrorStream();
-                Thread serverErr = new Thread(new Pipe(err, System.err));
+                Pipe.pipe(server);
 
-                serverErr.setDaemon(true);
-                serverErr.start();
             } catch (Exception e) {
                 throw (RuntimeException)new RuntimeException("Cannot start the server.  Exception: "+e.getClass().getName()+": "+e.getMessage()).initCause(e);
             }
             if (DEBUG) {
-                connect(Integer.MAX_VALUE);
+                if (!connect(Integer.MAX_VALUE)) throw new RuntimeException("Could not connect to server");
             } else {
-                connect(10);
+                if (!connect(tries)) throw new RuntimeException("Could not connect to server");
             }
         } else {
-            //System.out.println("[] SERVER STARTED");
+            if (verbose) System.out.println("[] FOUND STARTED SERVER");
         }
     }
 
@@ -267,6 +272,7 @@ public class RemoteServer {
     }
 
     private boolean connect(int tries) {
+        if (verbose) System.out.println("[] CONNECT ATTEMPT " + (this.tries - tries));
         //System.out.println("CONNECT "+ tries);
         try {
             int port;
@@ -279,9 +285,11 @@ public class RemoteServer {
             Socket socket = new Socket("localhost", port);
             OutputStream out = socket.getOutputStream();
             out.close();
+            if (verbose) System.out.println("[] CONNECTED IN " + (this.tries - tries));
         } catch (Exception e) {
             //System.out.println(e.getMessage());
             if (tries < 2) {
+                if (verbose) System.out.println("[] CONNECT ATTEMPTS FAILED ( " + (this.tries - tries) + " tries)");
                 return false;
             } else {
                 try {
@@ -295,30 +303,4 @@ public class RemoteServer {
 
         return true;
     }
-
-    private static final class Pipe implements Runnable {
-        private final InputStream is;
-        private final OutputStream out;
-
-        private Pipe(InputStream is, OutputStream out) {
-            super();
-            this.is = is;
-            this.out = out;
-        }
-
-        public void run() {
-            try {
-                int i = is.read();
-                out.write(i);
-
-                while (i != -1) {
-                    i = is.read();
-                    out.write(i);
-                }
-
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-    }
 }