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/05/30 13:50:46 UTC

svn commit: r1598562 - in /tomee/tomee/trunk: arquillian/arquillian-tomee-remote/ arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/ arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/w...

Author: andygumbrecht
Date: Fri May 30 11:50:45 2014
New Revision: 1598562

URL: http://svn.apache.org/r1598562
Log:
TOMEE-1230 Provide the known server service port to RemoteServer for better startup monitoring.

Modified:
    tomee/tomee/trunk/arquillian/arquillian-tomee-remote/   (props changed)
    tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
    tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
    tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
    tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.java
    tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java
    tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java
    tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java

Propchange: tomee/tomee/trunk/arquillian/arquillian-tomee-remote/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri May 30 11:50:45 2014
@@ -1,6 +1,8 @@
 *.iml
 .classpath
+.idea
 .project
 .settings
 target
 velocity.*
+.idea

Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java Fri May 30 11:50:45 2014
@@ -71,9 +71,11 @@ public class RemoteTomEEContainer extend
     @Override
     public void start() throws LifecycleException {
         // see if TomEE is already running by checking the http port
-        if (Setup.isRunning(configuration.getHost(), configuration.getHttpPort())) {
+        final int httpPort = configuration.getHttpPort();
 
-            logger.info(String.format("TomEE found running on port %s", configuration.getHttpPort()));
+        if (Setup.isRunning(configuration.getHost(), httpPort)) {
+
+            logger.info(String.format("TomEE found running on port %s", httpPort));
 
             return;
         }
@@ -90,15 +92,18 @@ public class RemoteTomEEContainer extend
 
             configure();
 
-            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT, Integer.toString(configuration.getStopPort()));
+            int stopPort = configuration.getStopPort();
+            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT, Integer.toString(stopPort));
             System.setProperty(RemoteServer.SERVER_SHUTDOWN_COMMAND, configuration.getStopCommand());
             System.setProperty(RemoteServer.SERVER_SHUTDOWN_HOST, configuration.getStopHost());
+
             if (configuration.isDebug()) {
                 System.setProperty(RemoteServer.OPENEJB_SERVER_DEBUG, "true");
                 System.setProperty(RemoteServer.SERVER_DEBUG_PORT, Integer.toString(configuration.getDebugPort()));
             }
-            container = new RemoteServer();
 
+            container = new RemoteServer();
+            container.setPortStartup(httpPort);
             container.start(args(), "start", true);
             container.killOnExit();
 

Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java Fri May 30 11:50:45 2014
@@ -54,9 +54,10 @@ public class TomEEWebappContainer extend
     @Override
     public void start() throws LifecycleException {
         // see if TomEE is already running by checking the http port
-        if (Setup.isRunning(configuration.getHost(), configuration.getHttpPort())) {
+        int httpPort = configuration.getHttpPort();
+        if (Setup.isRunning(configuration.getHost(), httpPort)) {
 
-            logger.info(String.format("Tomcat found running on port %s", configuration.getHttpPort()));
+            logger.info(String.format("Tomcat found running on port %s", httpPort));
 
             return;
         }
@@ -141,12 +142,13 @@ public class TomEEWebappContainer extend
             if (!wereOpenejbHomeSet && configuration.isUseInstallerServlet()) {
                 // instead of calling the Installer, let's just do like users do
                 // call the servlet installer instead
-                final String baseUrl = "http://" + configuration.getHost() + ":" + configuration.getHttpPort() + "/tomee/installer";
+                final String baseUrl = "http://" + configuration.getHost() + ":" + httpPort + "/tomee/installer";
 
                 assert installer != null;
                 installer.addTomEEAdminConfInTomcatUsers(true);
 
                 final RemoteServer tmpContainer = new RemoteServer();
+                tmpContainer.setPortStartup(httpPort);
                 tmpContainer.start();
 
                 final URL url = new URL(baseUrl);
@@ -156,7 +158,7 @@ public class TomEEWebappContainer extend
                     final URLConnection uc = url.openConnection();
                     // dG9tZWU6dG9tZWU= --> Base64 of tomee:tomee
                     final String authorizationString = "Basic dG9tZWU6dG9tZWU=";
-                    uc.setRequestProperty ("Authorization", authorizationString);
+                    uc.setRequestProperty("Authorization", authorizationString);
                     try {
                         final InputStream is = uc.getInputStream();
                         org.apache.openejb.loader.IO.slurp(is);
@@ -173,6 +175,7 @@ public class TomEEWebappContainer extend
             }
 
             container = new RemoteServer();
+            container.setPortStartup(httpPort);
             container.start(Arrays.asList("-Dorg.apache.openejb.servlet.filters=" + ArquillianFilterRunner.class.getName() + "=" + ServletMethodExecutor.ARQUILLIAN_SERVLET_MAPPING), "start", true);
             container.killOnExit();
         } catch (final Exception e) {

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java Fri May 30 11:50:45 2014
@@ -50,6 +50,8 @@ public class RemoteServer {
     public static final String SERVER_SHUTDOWN_HOST = "server.shutdown.host";
     public static final String SERVER_SHUTDOWN_COMMAND = "server.shutdown.command";
     public static final String OPENEJB_SERVER_DEBUG = "openejb.server.debug";
+    public static final String START = "start";
+    public static final String STOP = "stop";
 
     private boolean debug = options.get(OPENEJB_SERVER_DEBUG, false);
     private final boolean profile = options.get("openejb.server.profile", false);
@@ -66,10 +68,11 @@ public class RemoteServer {
     private Process server;
     private final int tries;
     private final boolean verbose;
-    private final int shutdownPort;
+    private final int portShutdown;
     private final String host;
     private final String command;
     private File home;
+    private int portStartup;
 
     public RemoteServer() {
         this(options.get("connect.tries", 60), options.get("verbose", false));
@@ -81,7 +84,8 @@ public class RemoteServer {
         home = getHome();
         tomcat = (home != null) && (new File(new File(home, "bin"), "catalina.sh").exists());
 
-        shutdownPort = options.get(SERVER_SHUTDOWN_PORT, tomcat ? 8005 : 4200);
+        portShutdown = options.get(SERVER_SHUTDOWN_PORT, tomcat ? 8005 : 4200);
+        portStartup = portShutdown;
         command = options.get(SERVER_SHUTDOWN_COMMAND, "SHUTDOWN");
         host = options.get(SERVER_SHUTDOWN_HOST, "localhost");
     }
@@ -97,10 +101,10 @@ public class RemoteServer {
     }
 
     public static void main(final String[] args) {
-        assert args.length > 0 : "no arguments supplied: valid argumen -efts are 'start' or 'stop'";
-        if (args[0].equalsIgnoreCase("start")) {
+        assert args.length > 0 : "no arguments supplied: valid arguments are 'start' or 'stop'";
+        if (args[0].equalsIgnoreCase(START)) {
             new RemoteServer().start();
-        } else if (args[0].equalsIgnoreCase("stop")) {
+        } else if (args[0].equalsIgnoreCase(STOP)) {
             final RemoteServer remoteServer = new RemoteServer();
             remoteServer.serverHasAlreadyBeenStarted = false;
             remoteServer.stop();
@@ -109,8 +113,16 @@ public class RemoteServer {
         }
     }
 
+    public int getPortStartup() {
+        return this.portStartup;
+    }
+
+    public void setPortStartup(int portStartup) {
+        this.portStartup = portStartup;
+    }
+
     public Properties getProperties() {
-        return properties;
+        return this.properties;
     }
 
     public void destroy() {
@@ -125,7 +137,7 @@ public class RemoteServer {
     }
 
     public void start() {
-        start(Collections.<String>emptyList(), "start", true);
+        start(Collections.<String>emptyList(), START, true);
     }
 
     public void start(final List<String> additionalArgs, final String cmd, final boolean checkPortAvailable) {
@@ -134,9 +146,12 @@ public class RemoteServer {
 
     private void cmd(final List<String> additionalArgs, final String cmd, final boolean checkPortAvailable) {
         boolean ok = true;
+        final int port = START.equals(cmd) ? portStartup : portShutdown;
+
         if (checkPortAvailable) {
-            ok = !connect();
+            ok = !connect(port, 1);
         }
+
         if (ok) {
             try {
                 if (verbose) {
@@ -170,7 +185,7 @@ public class RemoteServer {
 
                 final String java;
                 final boolean isWindows = System.getProperty("os.name", "unknown").toLowerCase().startsWith("windows");
-                if (isWindows && "start".equals(cmd) && options.get("server.windows.fork", false)) {
+                if (isWindows && START.equals(cmd) && options.get("server.windows.fork", false)) {
                     // run and forget
                     java = new File(System.getProperty("java.home"), "bin/javaw").getAbsolutePath();
                 } else {
@@ -298,7 +313,7 @@ public class RemoteServer {
                 }
 
                 if (cmd == null) {
-                    argsList.add("start");
+                    argsList.add(START);
                 } else {
                     argsList.add(cmd);
                 }
@@ -313,9 +328,9 @@ public class RemoteServer {
                 final Process process = Runtime.getRuntime().exec(args);
                 Pipe.pipeOut(process); // why would we need to redirect System.in to the process, TomEE doesn't use it
 
-                if ("start".equals(cmd)) {
+                if (START.equals(cmd)) {
                     server = process;
-                } else if ("stop".equals(cmd) && server != null) {
+                } else if (STOP.equals(cmd) && server != null) {
                     server.waitFor();
                 }
 
@@ -324,11 +339,12 @@ public class RemoteServer {
             }
             if (checkPortAvailable) {
                 if (debug) {
-                    if (!connect(Integer.MAX_VALUE)) {
+
+                    if (!connect(port, Integer.MAX_VALUE)) {
                         throw new OpenEJBRuntimeException("Could not connect to server");
                     }
                 } else {
-                    if (!connect(tries)) {
+                    if (!connect(port, tries)) {
                         throw new OpenEJBRuntimeException("Could not connect to server");
                     }
                 }
@@ -443,7 +459,7 @@ public class RemoteServer {
         if (verbose) {
             System.out.print("Waiting for TomEE shutdown.");
         }
-        while (connect()) {
+        while (connect(portShutdown, tries)) {
             Thread.sleep(1000);
             if (verbose) {
                 System.out.print(".");
@@ -459,7 +475,7 @@ public class RemoteServer {
         Socket socket = null;
         OutputStream stream = null;
         try {
-            socket = new Socket(host, shutdownPort);
+            socket = new Socket(host, portShutdown);
             stream = socket.getOutputStream();
             final String shutdown = command + Character.toString((char) 0);
             for (int i = 0; i < shutdown.length(); i++) {
@@ -478,11 +494,7 @@ public class RemoteServer {
         }
     }
 
-    private boolean connect() {
-        return connect(1);
-    }
-
-    private boolean connect(int tries) {
+    private boolean connect(final int port, int tries) {
         if (verbose) {
             System.out.println("[] CONNECT ATTEMPT " + (this.tries - tries));
         }
@@ -490,7 +502,7 @@ public class RemoteServer {
         Socket s = null;
         try {
             s = new Socket();
-            s.connect(new InetSocketAddress(host, shutdownPort), 1000);
+            s.connect(new InetSocketAddress(this.host, port), 1000);
             s.getOutputStream().close();
             if (verbose) {
                 System.out.println("[] CONNECTED IN " + (this.tries - tries));
@@ -507,7 +519,7 @@ public class RemoteServer {
                 } catch (final Exception e2) {
                     e.printStackTrace();
                 }
-                return connect(--tries);
+                return connect(port, --tries);
             }
         } finally {
             if (s != null) {

Modified: tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java?rev=1598562&r1=1598561&r2=1598562&view=diff
==============================================================================
--- tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java (original)
+++ tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java Fri May 30 11:50:45 2014
@@ -81,6 +81,7 @@ public abstract class AbstractTomEEMojo 
     private static final String REMOVE_PREFIX = "remove:";
     public static final String QUIT_CMD = "quit";
     public static final String EXIT_CMD = "exit";
+    public static final String TOM_EE = "TomEE";
 
     @Component
     protected ArtifactFactory factory;
@@ -258,7 +259,7 @@ public abstract class AbstractTomEEMojo 
 
     protected File deployedFile = null;
     protected RemoteServer server = null;
-    protected String container = "TomEE";
+    protected String container = TOM_EE;
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
@@ -711,7 +712,10 @@ public abstract class AbstractTomEEMojo 
 
         addShutdownHooks(server); // some shutdown hooks are always added (see UpdatableTomEEMojo)
 
-        if ("TomEE".equals(container)) {
+        if (TOM_EE.equals(container)) {
+
+            server.setPortStartup(tomeeHttpPort);
+
             getLog().info("Running '" + getClass().getSimpleName().replace("TomEEMojo", "").toLowerCase(Locale.ENGLISH)
                 + "'. Configured TomEE in plugin is " + tomeeHost + ":" + tomeeHttpPort
                 + " (plugin shutdown port is " + tomeeShutdownPort + ")");
@@ -998,7 +1002,7 @@ public abstract class AbstractTomEEMojo 
 
             File file = new File(catalinaBase, "conf/tomee.xml");
             if (file.exists()) {
-                container = "TomEE";
+                container = TOM_EE;
             } else {
                 container = "OpenEJB";
                 file = new File(catalinaBase, "conf/openejb.xml");

Modified: tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.java?rev=1598562&r1=1598561&r2=1598562&view=diff
==============================================================================
--- tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.java (original)
+++ tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.java Fri May 30 11:50:45 2014
@@ -28,6 +28,7 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
@@ -83,7 +84,9 @@ public class ExecRunner {
         if (scripts != null) { // dont use filefilter to avoid dependency issue
             for (final File f : scripts) {
                 if (f.getName().endsWith(".sh") && !f.canExecute()) {
-                    f.setExecutable(true, true);
+                    if(!f.setExecutable(true, true)){
+                        System.err.println("Failed make file executable: " + f);
+                    }
                 }
             }
         }
@@ -101,7 +104,9 @@ public class ExecRunner {
                     throw new IllegalArgumentException("Can't find  " + cmd);
                 }
                 if (cmd.endsWith(".sh")) {
-                    scriptFile.setExecutable(true);
+                    if(!scriptFile.setExecutable(true)){
+                        System.err.println("Failed make script file executable: " + scriptFile);
+                    }
                 }
             }
         }
@@ -117,15 +122,15 @@ public class ExecRunner {
             System.setProperty("server.shutdown.command", config.getProperty("shutdownCommand"));
 
             final RemoteServer server = new RemoteServer();
+            server.setPortStartup(Integer.parseInt(parser.http()));
+
             if (config.containsKey("additionalClasspath")) {
                 server.setAdditionalClasspath(config.getProperty("additionalClasspath"));
             }
 
             final List<String> jvmArgs = new LinkedList<String>();
             if (additionalArgs != null) {
-                for (final String kv : additionalArgs.split(" ")) {
-                    jvmArgs.add(kv);
-                }
+                Collections.addAll(jvmArgs, additionalArgs.split(" "));
             }
             for (final String k : config.stringPropertyNames()) {
                 if (k.startsWith("jvmArg.")) {

Modified: tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java?rev=1598562&r1=1598561&r2=1598562&view=diff
==============================================================================
--- tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java (original)
+++ tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java Fri May 30 11:50:45 2014
@@ -32,7 +32,6 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.Properties;
 
 /**
@@ -45,6 +44,7 @@ public class ContainersImplTomEE extends
     private Exception exception;
     private AppInfo appInfo;
     private File currentFile = null;
+    private int port = 8080;
 
     private Deployer lookup() {
         final Options options = new Options(System.getProperties());
@@ -53,8 +53,9 @@ public class ContainersImplTomEE extends
         String port = System.getProperty("server.http.port");
         if (port != null) {
             props.put(Context.PROVIDER_URL, options.get(Context.PROVIDER_URL,"http://localhost:" + port + "/tomee/ejb"));
+            this.port = Integer.parseInt(port);
         } else {
-            throw new OpenEJBTCKRuntimeException("Please set the tomee port as a system property");
+            throw new OpenEJBTCKRuntimeException("Please set the tomee port using the system property 'server.http.port'");
         }
 
         final String deployerJndi = System.getProperty("openejb.deployer.jndiname", "openejb/DeployerBusinessRemote");
@@ -70,6 +71,7 @@ public class ContainersImplTomEE extends
         System.out.println("ContainersImpl=" + ContainersImplTomEE.class.getName());
         System.out.println("Initialized ContainersImplTomEE " + (++count));
         server = new RemoteServer();
+        server.setPortStartup(this.port);
     }
     @Override
     public boolean deploy(InputStream archive, String name) throws IOException {
@@ -143,8 +145,10 @@ public class ContainersImplTomEE extends
     }
 
     protected File getFile(String name) {
-        final File dir = new File(tmpDir, Math.random()+"");
-        dir.mkdir();
+        final File dir = new File(tmpDir, Math.random() + "");
+        if (!dir.exists() && !dir.mkdir()) {
+            throw new RuntimeException("Failed to create directory: " + dir);
+        }
         dir.deleteOnExit();
         return new File(dir, name);
     }

Modified: tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
==============================================================================
--- tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java (original)
+++ tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java Fri May 30 11:50:45 2014
@@ -71,7 +71,14 @@ public class FullRestartContainer extend
         System.out.println(currentFile);
         writeToFile(currentFile, archive);
 
-        server = new RemoteServer(100, true);
+        String port = System.getProperty("server.http.port");
+        if (port != null) {
+            server = new RemoteServer(100, true);
+            server.setPortStartup(Integer.parseInt(port));
+        } else {
+            throw new OpenEJBTCKRuntimeException("Please set the tomee port using the system property 'server.http.port'");
+        }
+
         try {
             server.start();
         } catch (RuntimeException e) {
@@ -84,7 +91,11 @@ public class FullRestartContainer extend
 
     @Override
     public void undeploy(String name) throws IOException {
-        server.destroy();
+
+        if (null != server) {
+            server.destroy();
+        }
+
         File folder = new File(currentFile.getParentFile(), currentFile.getName().substring(0, currentFile.getName().length() - 4));
         if (folder.exists()) {
             delete(folder);
@@ -109,9 +120,9 @@ public class FullRestartContainer extend
         String port = System.getProperty("server.http.port");
         if (port != null) {
             System.out.println("provider url = " + "http://localhost:" + port + "/tomee/ejb");
-            props.put(Context.PROVIDER_URL, options.get(Context.PROVIDER_URL,"http://localhost:" + port + "/tomee/ejb"));
+            props.put(Context.PROVIDER_URL, options.get(Context.PROVIDER_URL, "http://localhost:" + port + "/tomee/ejb"));
         } else {
-            throw new OpenEJBTCKRuntimeException("Please set the tomee port as a system property");
+            throw new OpenEJBTCKRuntimeException("Please set the tomee port using the system property 'server.http.port'");
         }
 
         try {

Modified: tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java (original)
+++ tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java Fri May 30 11:50:45 2014
@@ -92,6 +92,7 @@ public class RemoteTomEEEJBContainer ext
             try {
                 instance = new RemoteTomEEEJBContainer();
                 instance.container = new RemoteServer();
+                instance.container.setPortStartup(Integer.parseInt(parser.http()));
                 instance.container.start();
                 instance.context = new InitialContext(new Properties() {{
                     setProperty(Context.INITIAL_CONTEXT_FACTORY, RemoteInitialContextFactory.class.getName());



Re: svn commit: r1598562 - in /tomee/tomee/trunk: arquillian/arquillian-tomee-remote/ arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/ arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/w...

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Ok, should be fixed, ATM we don't support a tomee without HTTP port (we use
it in some other places) so I guess we can keep this code for now (to avoid
to rework it too much for 1.7.0).



Romain Manni-Bucau
Twitter: @rmannibucau
Blog: http://rmannibucau.wordpress.com/
LinkedIn: http://fr.linkedin.com/in/rmannibucau
Github: https://github.com/rmannibucau


2014-05-31 19:48 GMT+02:00 Romain Manni-Bucau <rm...@gmail.com>:

> @Andy: any objection if we revert it and do the fix I proposed?
>
>
>
> Romain Manni-Bucau
> Twitter: @rmannibucau
> Blog: http://rmannibucau.wordpress.com/
> LinkedIn: http://fr.linkedin.com/in/rmannibucau
> Github: https://github.com/rmannibucau
>
>
> 2014-05-31 14:21 GMT+02:00 Thiago Veronezi <th...@veronezi.org>:
>
> Hi guys,
>>
>> It looks like cdi-tomee complains about this commit.
>>
>> Tests run: 1128, Failures: 1, Errors: 0, Skipped: 1127, Time elapsed:
>> 189.898 sec <<< FAILURE! - in TestSuite
>>
>> beforeSuite(org.jboss.jsr299.tck.tests.implementation.simple.resource.ejb.EjbInjectionTest)
>>  Time elapsed: 185.126 sec  <<< FAILURE!
>> org.apache.openejb.OpenEJBRuntimeException: Could not connect to server
>> at org.apache.openejb.config.RemoteServer.cmd(RemoteServer.java:348)
>> at org.apache.openejb.config.RemoteServer.start(RemoteServer.java:144)
>> at
>>
>> org.apache.openejb.tck.impl.ContainersImplTomEE.setup(ContainersImplTomEE.java:159)
>> at org.jboss.testharness.AbstractTest.beforeSuite(AbstractTest.java:180)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>>
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>
>>
>> I guess it complains about it because the previous revision (r1598528)
>> works great.
>>
>> []s,
>> Thiago.
>>
>>
>> On Fri, May 30, 2014 at 8:52 AM, Romain Manni-Bucau <
>> rmannibucau@gmail.com>
>> wrote:
>>
>> > Hmm, checking protected Deployer deployer() throws NamingException in
>> > TomEEContainer we should make retry number configurable in
>> arquillian.xml I
>> > think (TomEEConfiguration). Default to 5 with a pause of 200ms doesn't
>> > sound that good, I'd go for a default duration of 20s with a pause of
>> > 100ms. Wdyt?
>> >
>> >
>> >
>> > Romain Manni-Bucau
>> > Twitter: @rmannibucau
>> > Blog: http://rmannibucau.wordpress.com/
>> > LinkedIn: http://fr.linkedin.com/in/rmannibucau
>> > Github: https://github.com/rmannibucau
>> >
>> >
>> > 2014-05-30 14:41 GMT+02:00 Romain Manni-Bucau <rm...@gmail.com>:
>> >
>> > > Hmm
>> > >
>> > > actually RemoteServer doesn't need it. I think you see the issue with
>> > > arquillian mainly and in this case we have a retry mecanism created
>> for
>> > it
>> > > in deployer lookup.
>> > >
>> > >  Isn't it what should have been configured?
>> > >
>> > >
>> > >
>> > > Romain Manni-Bucau
>> > > Twitter: @rmannibucau
>> > > Blog: http://rmannibucau.wordpress.com/
>> > > LinkedIn: http://fr.linkedin.com/in/rmannibucau
>> > > Github: https://github.com/rmannibucau
>> > >
>> > >
>> > > 2014-05-30 14:34 GMT+02:00 Andy Gumbrecht <ag...@tomitribe.com>:
>> > >
>> > > Sure Romain,
>> > >>
>> > >> The RemoteServer.java does not know what the context is (OpenEJB,
>> TomEE,
>> > >> Arquillian) - So what is the service port ? (4201, 8080, ?) - Could
>> > maybe
>> > >> work it out internally from properties, but the caller already knows,
>> > hence
>> > >> the setter.
>> > >> If the setter is not used then it defaults to previous action, which
>> is
>> > >> to use the self-determined shutdown port.
>> > >>
>> > >> The RemoteServer is/was only looking at the shutdown port (OpenEJB,
>> > >> Tomcat) to determine if the server is running.
>> > >>
>> > >> The Tomcat/OpenEJB shutdown port can start to accepts calls before
>> the
>> > >> actual service port (Several seconds or more on a busy machine like
>> the
>> > >> buildbot).
>> > >> So using it (in RemoteServer) to see if the server is running often
>> > leads
>> > >> to an overlap (Port already in use or bind exceptions).
>> > >>
>> > >> Giving RemoteServer the service port to monitor for a startup
>> connection
>> > >> makes more sense to me, as this is the port required for access and
>> not
>> > the
>> > >> shutdown port.
>> > >>
>> > >> Shutdown is less of an issue because the shutdown port goes down
>> after
>> > >> the service port.
>> > >>
>> > >> The changes apply to usages of RemoteServer, where the service port
>> is
>> > >> known.
>> > >>
>> > >> Andy.
>> > >>
>> > >>
>> > >>
>> > >> On 30/05/2014 14:09, Romain Manni-Bucau wrote:
>> > >>
>> > >>> Hi
>> > >>>
>> > >>> I'm not sure to get the goal of it.
>> > >>>
>> > >>> PortStartup is set as system property where needed (mainly
>> arquillian)
>> > >>> but
>> > >>> doesn't add much value otherwise since it can just be not existing
>> (I
>> > saw
>> > >>> several instances with only https or ajp configured)
>> > >>>
>> > >>> Can you detail the cause please?
>> > >>>
>> > >>>
>> > >>>
>> > >>>
>> > >>> Romain Manni-Bucau
>> > >>> Twitter: @rmannibucau
>> > >>> Blog: http://rmannibucau.wordpress.com/
>> > >>> LinkedIn: http://fr.linkedin.com/in/rmannibucau
>> > >>> Github: https://github.com/rmannibucau
>> > >>>
>> > >>>
>> > >>> 2014-05-30 13:50 GMT+02:00 <an...@apache.org>:
>> > >>>
>> > >>>  Author: andygumbrecht
>> > >>>> Date: Fri May 30 11:50:45 2014
>> > >>>> New Revision: 1598562
>> > >>>>
>> > >>>> URL: http://svn.apache.org/r1598562
>> > >>>> Log:
>> > >>>> TOMEE-1230 Provide the known server service port to RemoteServer
>> for
>> > >>>> better startup monitoring.
>> > >>>>
>> > >>>> Modified:
>> > >>>>      tomee/tomee/trunk/arquillian/arquillian-tomee-remote/   (props
>> > >>>> changed)
>> > >>>>
>> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
>> > >>>>
>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>> > >>>>
>> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
>> > >>>> remote/src/main/java/org/apache/tomee/arquillian/
>> > >>>> webapp/TomEEWebappContainer.java
>> > >>>>
>> > >>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
>> > >>>> org/apache/openejb/config/RemoteServer.java
>> > >>>>
>> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>> > >>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>> > >>>>
>> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>> > >>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
>> > >>>>
>> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>> > >>>> apache/openejb/tck/impl/ContainersImplTomEE.java
>> > >>>>
>> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>> > >>>> apache/openejb/tck/impl/FullRestartContainer.java
>> > >>>>
>> > >>>>
>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
>> > >>>> RemoteTomEEEJBContainer.java
>> > >>>>
>> > >>>> Propchange: tomee/tomee/trunk/arquillian/arquillian-tomee-remote/
>> > >>>>
>> > >>>> ------------------------------------------------------------
>> > >>>> ------------------
>> > >>>> --- svn:ignore (original)
>> > >>>> +++ svn:ignore Fri May 30 11:50:45 2014
>> > >>>> @@ -1,6 +1,8 @@
>> > >>>>   *.iml
>> > >>>>   .classpath
>> > >>>> +.idea
>> > >>>>   .project
>> > >>>>   .settings
>> > >>>>   target
>> > >>>>   velocity.*
>> > >>>> +.idea
>> > >>>>
>> > >>>> Modified:
>> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
>> > >>>>
>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>> > >>>> URL:
>> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/
>> > >>>> arquillian-tomee-remote/src/main/java/org/apache/tomee/
>> > >>>> arquillian/remote/RemoteTomEEContainer.java?rev=
>> > >>>> 1598562&r1=1598561&r2=1598562&view=diff
>> > >>>>
>> > >>>> ============================================================
>> > >>>> ==================
>> > >>>> ---
>> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
>> > >>>>
>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>> > >>>> (original)
>> > >>>> +++
>> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
>> > >>>>
>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>> > >>>> Fri May 30 11:50:45 2014
>> > >>>> @@ -71,9 +71,11 @@ public class RemoteTomEEContainer extend
>> > >>>>       @Override
>> > >>>>       public void start() throws LifecycleException {
>> > >>>>           // see if TomEE is already running by checking the http
>> port
>> > >>>> -        if (Setup.isRunning(configuration.getHost(),
>> > >>>> configuration.getHttpPort())) {
>> > >>>> +        final int httpPort = configuration.getHttpPort();
>> > >>>>
>> > >>>> -            logger.info(String.format("TomEE found running on
>> port
>> > >>>> %s",
>> > >>>> configuration.getHttpPort()));
>> > >>>> +        if (Setup.isRunning(configuration.getHost(), httpPort)) {
>> > >>>> +
>> > >>>> +            logger.info(String.format("TomEE found running on
>> port
>> > >>>> %s",
>> > >>>> httpPort));
>> > >>>>
>> > >>>>               return;
>> > >>>>           }
>> > >>>> @@ -90,15 +92,18 @@ public class RemoteTomEEContainer extend
>> > >>>>
>> > >>>>               configure();
>> > >>>>
>> > >>>> -            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT,
>> > >>>> Integer.toString(configuration.getStopPort()));
>> > >>>> +            int stopPort = configuration.getStopPort();
>> > >>>> +            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT,
>> > >>>> Integer.toString(stopPort));
>> > >>>>
>> System.setProperty(RemoteServer.SERVER_SHUTDOWN_COMMAND,
>> > >>>> configuration.getStopCommand());
>> > >>>>               System.setProperty(RemoteServer.SERVER_SHUTDOWN_HOST,
>> > >>>> configuration.getStopHost());
>> > >>>> +
>> > >>>>               if (configuration.isDebug()) {
>> > >>>>
>> > System.setProperty(RemoteServer.OPENEJB_SERVER_DEBUG,
>> > >>>> "true");
>> > >>>>
>> System.setProperty(RemoteServer.SERVER_DEBUG_PORT,
>> > >>>> Integer.toString(configuration.getDebugPort()));
>> > >>>>               }
>> > >>>> -            container = new RemoteServer();
>> > >>>>
>> > >>>> +            container = new RemoteServer();
>> > >>>> +            container.setPortStartup(httpPort);
>> > >>>>               container.start(args(), "start", true);
>> > >>>>               container.killOnExit();
>> > >>>>
>> > >>>>
>> > >>>> Modified:
>> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
>> > >>>> remote/src/main/java/org/apache/tomee/arquillian/
>> > >>>> webapp/TomEEWebappContainer.java
>> > >>>> URL:
>> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/
>> > >>>> arquillian-tomee-webapp-remote/src/main/java/org/
>> > >>>> apache/tomee/arquillian/webapp/TomEEWebappContainer.
>> > >>>> java?rev=1598562&r1=1598561&r2=1598562&view=diff
>> > >>>>
>> > >>>> ============================================================
>> > >>>> ==================
>> > >>>> ---
>> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
>> > >>>> remote/src/main/java/org/apache/tomee/arquillian/
>> > >>>> webapp/TomEEWebappContainer.java
>> > >>>> (original)
>> > >>>> +++
>> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
>> > >>>> remote/src/main/java/org/apache/tomee/arquillian/
>> > >>>> webapp/TomEEWebappContainer.java
>> > >>>> Fri May 30 11:50:45 2014
>> > >>>> @@ -54,9 +54,10 @@ public class TomEEWebappContainer extend
>> > >>>>       @Override
>> > >>>>       public void start() throws LifecycleException {
>> > >>>>           // see if TomEE is already running by checking the http
>> port
>> > >>>> -        if (Setup.isRunning(configuration.getHost(),
>> > >>>> configuration.getHttpPort())) {
>> > >>>> +        int httpPort = configuration.getHttpPort();
>> > >>>> +        if (Setup.isRunning(configuration.getHost(), httpPort)) {
>> > >>>>
>> > >>>> -            logger.info(String.format("Tomcat found running on
>> port
>> > >>>> %s",
>> > >>>> configuration.getHttpPort()));
>> > >>>> +            logger.info(String.format("Tomcat found running on
>> port
>> > >>>> %s",
>> > >>>> httpPort));
>> > >>>>
>> > >>>>               return;
>> > >>>>           }
>> > >>>> @@ -141,12 +142,13 @@ public class TomEEWebappContainer extend
>> > >>>>               if (!wereOpenejbHomeSet &&
>> > >>>> configuration.isUseInstallerServlet()) {
>> > >>>>                   // instead of calling the Installer, let's just
>> do
>> > >>>> like
>> > >>>> users do
>> > >>>>                   // call the servlet installer instead
>> > >>>> -                final String baseUrl = "http://" +
>> > >>>> configuration.getHost() + ":" + configuration.getHttpPort() +
>> > >>>> "/tomee/installer";
>> > >>>> +                final String baseUrl = "http://" +
>> > >>>> configuration.getHost() + ":" + httpPort + "/tomee/installer";
>> > >>>>
>> > >>>>                   assert installer != null;
>> > >>>>                   installer.addTomEEAdminConfInTomcatUsers(true);
>> > >>>>
>> > >>>>                   final RemoteServer tmpContainer = new
>> > RemoteServer();
>> > >>>> +                tmpContainer.setPortStartup(httpPort);
>> > >>>>                   tmpContainer.start();
>> > >>>>
>> > >>>>                   final URL url = new URL(baseUrl);
>> > >>>> @@ -156,7 +158,7 @@ public class TomEEWebappContainer extend
>> > >>>>                       final URLConnection uc =
>> url.openConnection();
>> > >>>>                       // dG9tZWU6dG9tZWU= --> Base64 of tomee:tomee
>> > >>>>                       final String authorizationString = "Basic
>> > >>>> dG9tZWU6dG9tZWU=";
>> > >>>> -                    uc.setRequestProperty ("Authorization",
>> > >>>> authorizationString);
>> > >>>> +                    uc.setRequestProperty("Authorization",
>> > >>>> authorizationString);
>> > >>>>                       try {
>> > >>>>                           final InputStream is =
>> uc.getInputStream();
>> > >>>>                           org.apache.openejb.loader.IO.slurp(is);
>> > >>>> @@ -173,6 +175,7 @@ public class TomEEWebappContainer extend
>> > >>>>               }
>> > >>>>
>> > >>>>               container = new RemoteServer();
>> > >>>> +            container.setPortStartup(httpPort);
>> > >>>>
>> > >>>>
>> > container.start(Arrays.asList("-Dorg.apache.openejb.servlet.filters="
>> > >>>> +
>> > >>>> ArquillianFilterRunner.class.getName() + "=" +
>> > >>>> ServletMethodExecutor.ARQUILLIAN_SERVLET_MAPPING), "start", true);
>> > >>>>               container.killOnExit();
>> > >>>>           } catch (final Exception e) {
>> > >>>>
>> > >>>> Modified:
>> > >>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
>> > >>>> org/apache/openejb/config/RemoteServer.java
>> > >>>> URL:
>> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/container/
>> > >>>> openejb-core/src/main/java/org/apache/openejb/config/
>> > >>>> RemoteServer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>> > >>>>
>> > >>>> ============================================================
>> > >>>> ==================
>> > >>>> ---
>> > >>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
>> > >>>> org/apache/openejb/config/RemoteServer.java
>> > >>>> (original)
>> > >>>> +++
>> > >>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
>> > >>>> org/apache/openejb/config/RemoteServer.java
>> > >>>> Fri May 30 11:50:45 2014
>> > >>>> @@ -50,6 +50,8 @@ public class RemoteServer {
>> > >>>>       public static final String SERVER_SHUTDOWN_HOST =
>> > >>>> "server.shutdown.host";
>> > >>>>       public static final String SERVER_SHUTDOWN_COMMAND =
>> > >>>> "server.shutdown.command";
>> > >>>>       public static final String OPENEJB_SERVER_DEBUG =
>> > >>>> "openejb.server.debug";
>> > >>>> +    public static final String START = "start";
>> > >>>> +    public static final String STOP = "stop";
>> > >>>>
>> > >>>>       private boolean debug = options.get(OPENEJB_SERVER_DEBUG,
>> > false);
>> > >>>>       private final boolean profile = options.get("openejb.server.
>> > >>>> profile",
>> > >>>> false);
>> > >>>> @@ -66,10 +68,11 @@ public class RemoteServer {
>> > >>>>       private Process server;
>> > >>>>       private final int tries;
>> > >>>>       private final boolean verbose;
>> > >>>> -    private final int shutdownPort;
>> > >>>> +    private final int portShutdown;
>> > >>>>       private final String host;
>> > >>>>       private final String command;
>> > >>>>       private File home;
>> > >>>> +    private int portStartup;
>> > >>>>
>> > >>>>       public RemoteServer() {
>> > >>>>           this(options.get("connect.tries", 60),
>> > options.get("verbose",
>> > >>>> false));
>> > >>>> @@ -81,7 +84,8 @@ public class RemoteServer {
>> > >>>>           home = getHome();
>> > >>>>           tomcat = (home != null) && (new File(new File(home,
>> "bin"),
>> > >>>> "catalina.sh").exists());
>> > >>>>
>> > >>>> -        shutdownPort = options.get(SERVER_SHUTDOWN_PORT, tomcat ?
>> > >>>> 8005 :
>> > >>>> 4200);
>> > >>>> +        portShutdown = options.get(SERVER_SHUTDOWN_PORT, tomcat ?
>> > >>>> 8005 :
>> > >>>> 4200);
>> > >>>> +        portStartup = portShutdown;
>> > >>>>           command = options.get(SERVER_SHUTDOWN_COMMAND,
>> "SHUTDOWN");
>> > >>>>           host = options.get(SERVER_SHUTDOWN_HOST, "localhost");
>> > >>>>       }
>> > >>>> @@ -97,10 +101,10 @@ public class RemoteServer {
>> > >>>>       }
>> > >>>>
>> > >>>>       public static void main(final String[] args) {
>> > >>>> -        assert args.length > 0 : "no arguments supplied: valid
>> > argumen
>> > >>>> -efts are 'start' or 'stop'";
>> > >>>> -        if (args[0].equalsIgnoreCase("start")) {
>> > >>>> +        assert args.length > 0 : "no arguments supplied: valid
>> > >>>> arguments
>> > >>>> are 'start' or 'stop'";
>> > >>>> +        if (args[0].equalsIgnoreCase(START)) {
>> > >>>>               new RemoteServer().start();
>> > >>>> -        } else if (args[0].equalsIgnoreCase("stop")) {
>> > >>>> +        } else if (args[0].equalsIgnoreCase(STOP)) {
>> > >>>>               final RemoteServer remoteServer = new RemoteServer();
>> > >>>>               remoteServer.serverHasAlreadyBeenStarted = false;
>> > >>>>               remoteServer.stop();
>> > >>>> @@ -109,8 +113,16 @@ public class RemoteServer {
>> > >>>>           }
>> > >>>>       }
>> > >>>>
>> > >>>> +    public int getPortStartup() {
>> > >>>> +        return this.portStartup;
>> > >>>> +    }
>> > >>>> +
>> > >>>> +    public void setPortStartup(int portStartup) {
>> > >>>> +        this.portStartup = portStartup;
>> > >>>> +    }
>> > >>>> +
>> > >>>>       public Properties getProperties() {
>> > >>>> -        return properties;
>> > >>>> +        return this.properties;
>> > >>>>       }
>> > >>>>
>> > >>>>       public void destroy() {
>> > >>>> @@ -125,7 +137,7 @@ public class RemoteServer {
>> > >>>>       }
>> > >>>>
>> > >>>>       public void start() {
>> > >>>> -        start(Collections.<String>emptyList(), "start", true);
>> > >>>> +        start(Collections.<String>emptyList(), START, true);
>> > >>>>       }
>> > >>>>
>> > >>>>       public void start(final List<String> additionalArgs, final
>> > String
>> > >>>> cmd, final boolean checkPortAvailable) {
>> > >>>> @@ -134,9 +146,12 @@ public class RemoteServer {
>> > >>>>
>> > >>>>       private void cmd(final List<String> additionalArgs, final
>> String
>> > >>>> cmd,
>> > >>>> final boolean checkPortAvailable) {
>> > >>>>           boolean ok = true;
>> > >>>> +        final int port = START.equals(cmd) ? portStartup :
>> > >>>> portShutdown;
>> > >>>> +
>> > >>>>           if (checkPortAvailable) {
>> > >>>> -            ok = !connect();
>> > >>>> +            ok = !connect(port, 1);
>> > >>>>           }
>> > >>>> +
>> > >>>>           if (ok) {
>> > >>>>               try {
>> > >>>>                   if (verbose) {
>> > >>>> @@ -170,7 +185,7 @@ public class RemoteServer {
>> > >>>>
>> > >>>>                   final String java;
>> > >>>>                   final boolean isWindows = System.getProperty("
>> > os.name
>> > >>>> ",
>> > >>>> "unknown").toLowerCase().startsWith("windows");
>> > >>>> -                if (isWindows && "start".equals(cmd) &&
>> > >>>> options.get("server.windows.fork", false)) {
>> > >>>> +                if (isWindows && START.equals(cmd) &&
>> > >>>> options.get("server.windows.fork", false)) {
>> > >>>>                       // run and forget
>> > >>>>                       java = new
>> File(System.getProperty("java.home"),
>> > >>>> "bin/javaw").getAbsolutePath();
>> > >>>>                   } else {
>> > >>>> @@ -298,7 +313,7 @@ public class RemoteServer {
>> > >>>>                   }
>> > >>>>
>> > >>>>                   if (cmd == null) {
>> > >>>> -                    argsList.add("start");
>> > >>>> +                    argsList.add(START);
>> > >>>>                   } else {
>> > >>>>                       argsList.add(cmd);
>> > >>>>                   }
>> > >>>> @@ -313,9 +328,9 @@ public class RemoteServer {
>> > >>>>                   final Process process =
>> Runtime.getRuntime().exec(
>> > >>>> args);
>> > >>>>                   Pipe.pipeOut(process); // why would we need to
>> > >>>> redirect
>> > >>>> System.in to the process, TomEE doesn't use it
>> > >>>>
>> > >>>> -                if ("start".equals(cmd)) {
>> > >>>> +                if (START.equals(cmd)) {
>> > >>>>                       server = process;
>> > >>>> -                } else if ("stop".equals(cmd) && server != null) {
>> > >>>> +                } else if (STOP.equals(cmd) && server != null) {
>> > >>>>                       server.waitFor();
>> > >>>>                   }
>> > >>>>
>> > >>>> @@ -324,11 +339,12 @@ public class RemoteServer {
>> > >>>>               }
>> > >>>>               if (checkPortAvailable) {
>> > >>>>                   if (debug) {
>> > >>>> -                    if (!connect(Integer.MAX_VALUE)) {
>> > >>>> +
>> > >>>> +                    if (!connect(port, Integer.MAX_VALUE)) {
>> > >>>>                           throw new OpenEJBRuntimeException("Could
>> not
>> > >>>> connect to server");
>> > >>>>                       }
>> > >>>>                   } else {
>> > >>>> -                    if (!connect(tries)) {
>> > >>>> +                    if (!connect(port, tries)) {
>> > >>>>                           throw new OpenEJBRuntimeException("Could
>> not
>> > >>>> connect to server");
>> > >>>>                       }
>> > >>>>                   }
>> > >>>> @@ -443,7 +459,7 @@ public class RemoteServer {
>> > >>>>           if (verbose) {
>> > >>>>               System.out.print("Waiting for TomEE shutdown.");
>> > >>>>           }
>> > >>>> -        while (connect()) {
>> > >>>> +        while (connect(portShutdown, tries)) {
>> > >>>>               Thread.sleep(1000);
>> > >>>>               if (verbose) {
>> > >>>>                   System.out.print(".");
>> > >>>> @@ -459,7 +475,7 @@ public class RemoteServer {
>> > >>>>           Socket socket = null;
>> > >>>>           OutputStream stream = null;
>> > >>>>           try {
>> > >>>> -            socket = new Socket(host, shutdownPort);
>> > >>>> +            socket = new Socket(host, portShutdown);
>> > >>>>               stream = socket.getOutputStream();
>> > >>>>               final String shutdown = command +
>> > >>>> Character.toString((char)
>> > >>>> 0);
>> > >>>>               for (int i = 0; i < shutdown.length(); i++) {
>> > >>>> @@ -478,11 +494,7 @@ public class RemoteServer {
>> > >>>>           }
>> > >>>>       }
>> > >>>>
>> > >>>> -    private boolean connect() {
>> > >>>> -        return connect(1);
>> > >>>> -    }
>> > >>>> -
>> > >>>> -    private boolean connect(int tries) {
>> > >>>> +    private boolean connect(final int port, int tries) {
>> > >>>>           if (verbose) {
>> > >>>>               System.out.println("[] CONNECT ATTEMPT " +
>> (this.tries -
>> > >>>> tries));
>> > >>>>           }
>> > >>>> @@ -490,7 +502,7 @@ public class RemoteServer {
>> > >>>>           Socket s = null;
>> > >>>>           try {
>> > >>>>               s = new Socket();
>> > >>>> -            s.connect(new InetSocketAddress(host, shutdownPort),
>> > 1000);
>> > >>>> +            s.connect(new InetSocketAddress(this.host, port),
>> 1000);
>> > >>>>               s.getOutputStream().close();
>> > >>>>               if (verbose) {
>> > >>>>                   System.out.println("[] CONNECTED IN " +
>> (this.tries
>> > -
>> > >>>> tries));
>> > >>>> @@ -507,7 +519,7 @@ public class RemoteServer {
>> > >>>>                   } catch (final Exception e2) {
>> > >>>>                       e.printStackTrace();
>> > >>>>                   }
>> > >>>> -                return connect(--tries);
>> > >>>> +                return connect(port, --tries);
>> > >>>>               }
>> > >>>>           } finally {
>> > >>>>               if (s != null) {
>> > >>>>
>> > >>>> Modified:
>> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>> > >>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>> > >>>> URL:
>> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-
>> > >>>> maven-plugin/src/main/java/org/apache/openejb/maven/
>> > >>>> plugin/AbstractTomEEMojo.java?rev=1598562&r1=1598561&r2=
>> > >>>> 1598562&view=diff
>> > >>>>
>> > >>>> ============================================================
>> > >>>> ==================
>> > >>>> ---
>> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>> > >>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>> > >>>> (original)
>> > >>>> +++
>> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>> > >>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>> > >>>> Fri May 30 11:50:45 2014
>> > >>>> @@ -81,6 +81,7 @@ public abstract class AbstractTomEEMojo
>> > >>>>       private static final String REMOVE_PREFIX = "remove:";
>> > >>>>       public static final String QUIT_CMD = "quit";
>> > >>>>       public static final String EXIT_CMD = "exit";
>> > >>>> +    public static final String TOM_EE = "TomEE";
>> > >>>>
>> > >>>>       @Component
>> > >>>>       protected ArtifactFactory factory;
>> > >>>> @@ -258,7 +259,7 @@ public abstract class AbstractTomEEMojo
>> > >>>>
>> > >>>>       protected File deployedFile = null;
>> > >>>>       protected RemoteServer server = null;
>> > >>>> -    protected String container = "TomEE";
>> > >>>> +    protected String container = TOM_EE;
>> > >>>>
>> > >>>>       @Override
>> > >>>>       public void execute() throws MojoExecutionException,
>> > >>>> MojoFailureException {
>> > >>>> @@ -711,7 +712,10 @@ public abstract class AbstractTomEEMojo
>> > >>>>
>> > >>>>           addShutdownHooks(server); // some shutdown hooks are
>> always
>> > >>>> added
>> > >>>> (see UpdatableTomEEMojo)
>> > >>>>
>> > >>>> -        if ("TomEE".equals(container)) {
>> > >>>> +        if (TOM_EE.equals(container)) {
>> > >>>> +
>> > >>>> +            server.setPortStartup(tomeeHttpPort);
>> > >>>> +
>> > >>>>               getLog().info("Running '" +
>> > >>>> getClass().getSimpleName().replace("TomEEMojo",
>> > >>>> "").toLowerCase(Locale.ENGLISH)
>> > >>>>                   + "'. Configured TomEE in plugin is " +
>> tomeeHost +
>> > >>>> ":" +
>> > >>>> tomeeHttpPort
>> > >>>>                   + " (plugin shutdown port is " +
>> tomeeShutdownPort +
>> > >>>> ")");
>> > >>>> @@ -998,7 +1002,7 @@ public abstract class AbstractTomEEMojo
>> > >>>>
>> > >>>>               File file = new File(catalinaBase, "conf/tomee.xml");
>> > >>>>               if (file.exists()) {
>> > >>>> -                container = "TomEE";
>> > >>>> +                container = TOM_EE;
>> > >>>>               } else {
>> > >>>>                   container = "OpenEJB";
>> > >>>>                   file = new File(catalinaBase,
>> "conf/openejb.xml");
>> > >>>>
>> > >>>> Modified:
>> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>> > >>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
>> > >>>> URL:
>> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-
>> > >>>> maven-plugin/src/main/java/org/apache/openejb/maven/
>> > >>>> plugin/runner/ExecRunner.java?rev=1598562&r1=1598561&r2=
>> > >>>> 1598562&view=diff
>> > >>>>
>> > >>>> ============================================================
>> > >>>> ==================
>> > >>>> ---
>> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>> > >>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
>> > >>>> (original)
>> > >>>> +++
>> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>> > >>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
>> > >>>> Fri May 30 11:50:45 2014
>> > >>>> @@ -28,6 +28,7 @@ import java.io.InputStream;
>> > >>>>   import java.io.InputStreamReader;
>> > >>>>   import java.util.ArrayList;
>> > >>>>   import java.util.Collection;
>> > >>>> +import java.util.Collections;
>> > >>>>   import java.util.LinkedList;
>> > >>>>   import java.util.List;
>> > >>>>   import java.util.Locale;
>> > >>>> @@ -83,7 +84,9 @@ public class ExecRunner {
>> > >>>>           if (scripts != null) { // dont use filefilter to avoid
>> > >>>> dependency
>> > >>>> issue
>> > >>>>               for (final File f : scripts) {
>> > >>>>                   if (f.getName().endsWith(".sh") &&
>> !f.canExecute())
>> > {
>> > >>>> -                    f.setExecutable(true, true);
>> > >>>> +                    if(!f.setExecutable(true, true)){
>> > >>>> +                        System.err.println("Failed make file
>> > >>>> executable:
>> > >>>> " + f);
>> > >>>> +                    }
>> > >>>>                   }
>> > >>>>               }
>> > >>>>           }
>> > >>>> @@ -101,7 +104,9 @@ public class ExecRunner {
>> > >>>>                       throw new IllegalArgumentException("Can't
>> find
>> > >>>>  " +
>> > >>>> cmd);
>> > >>>>                   }
>> > >>>>                   if (cmd.endsWith(".sh")) {
>> > >>>> -                    scriptFile.setExecutable(true);
>> > >>>> +                    if(!scriptFile.setExecutable(true)){
>> > >>>> +                        System.err.println("Failed make script
>> file
>> > >>>> executable: " + scriptFile);
>> > >>>> +                    }
>> > >>>>                   }
>> > >>>>               }
>> > >>>>           }
>> > >>>> @@ -117,15 +122,15 @@ public class ExecRunner {
>> > >>>>               System.setProperty("server.shutdown.command",
>> > >>>> config.getProperty("shutdownCommand"));
>> > >>>>
>> > >>>>               final RemoteServer server = new RemoteServer();
>> > >>>> +
>>  server.setPortStartup(Integer.parseInt(parser.http()));
>> > >>>> +
>> > >>>>               if (config.containsKey("additionalClasspath")) {
>> > >>>>
>> > >>>>   server.setAdditionalClasspath(config.getProperty("
>> > >>>> additionalClasspath"));
>> > >>>>               }
>> > >>>>
>> > >>>>               final List<String> jvmArgs = new
>> LinkedList<String>();
>> > >>>>               if (additionalArgs != null) {
>> > >>>> -                for (final String kv : additionalArgs.split(" "))
>> {
>> > >>>> -                    jvmArgs.add(kv);
>> > >>>> -                }
>> > >>>> +                Collections.addAll(jvmArgs, additionalArgs.split("
>> > "));
>> > >>>>               }
>> > >>>>               for (final String k : config.stringPropertyNames()) {
>> > >>>>                   if (k.startsWith("jvmArg.")) {
>> > >>>>
>> > >>>> Modified:
>> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>> > >>>> apache/openejb/tck/impl/ContainersImplTomEE.java
>> > >>>> URL:
>> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-
>> > >>>> common/src/main/java/org/apache/openejb/tck/impl/
>> > >>>>
>> ContainersImplTomEE.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>> > >>>>
>> > >>>> ============================================================
>> > >>>> ==================
>> > >>>> ---
>> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>> > >>>> apache/openejb/tck/impl/ContainersImplTomEE.java
>> > >>>> (original)
>> > >>>> +++
>> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>> > >>>> apache/openejb/tck/impl/ContainersImplTomEE.java
>> > >>>> Fri May 30 11:50:45 2014
>> > >>>> @@ -32,7 +32,6 @@ import java.io.File;
>> > >>>>   import java.io.IOException;
>> > >>>>   import java.io.InputStream;
>> > >>>>   import java.util.Arrays;
>> > >>>> -import java.util.Collections;
>> > >>>>   import java.util.Properties;
>> > >>>>
>> > >>>>   /**
>> > >>>> @@ -45,6 +44,7 @@ public class ContainersImplTomEE extends
>> > >>>>       private Exception exception;
>> > >>>>       private AppInfo appInfo;
>> > >>>>       private File currentFile = null;
>> > >>>> +    private int port = 8080;
>> > >>>>
>> > >>>>       private Deployer lookup() {
>> > >>>>           final Options options = new
>> Options(System.getProperties());
>> > >>>> @@ -53,8 +53,9 @@ public class ContainersImplTomEE extends
>> > >>>>           String port = System.getProperty("server.http.port");
>> > >>>>           if (port != null) {
>> > >>>>               props.put(Context.PROVIDER_URL,
>> > >>>> options.get(Context.PROVIDER_URL,"http://localhost:" + port +
>> > >>>> "/tomee/ejb"));
>> > >>>> +            this.port = Integer.parseInt(port);
>> > >>>>           } else {
>> > >>>> -            throw new OpenEJBTCKRuntimeException("Please set the
>> > tomee
>> > >>>> port as a system property");
>> > >>>> +            throw new OpenEJBTCKRuntimeException("Please set the
>> > tomee
>> > >>>> port using the system property 'server.http.port'");
>> > >>>>           }
>> > >>>>
>> > >>>>           final String deployerJndi =
>> > >>>> System.getProperty("openejb.deployer.jndiname",
>> > >>>> "openejb/DeployerBusinessRemote");
>> > >>>> @@ -70,6 +71,7 @@ public class ContainersImplTomEE extends
>> > >>>>           System.out.println("ContainersImpl=" +
>> > >>>> ContainersImplTomEE.class.getName());
>> > >>>>           System.out.println("Initialized ContainersImplTomEE " +
>> > >>>> (++count));
>> > >>>>           server = new RemoteServer();
>> > >>>> +        server.setPortStartup(this.port);
>> > >>>>       }
>> > >>>>       @Override
>> > >>>>       public boolean deploy(InputStream archive, String name)
>> throws
>> > >>>> IOException {
>> > >>>> @@ -143,8 +145,10 @@ public class ContainersImplTomEE extends
>> > >>>>       }
>> > >>>>
>> > >>>>       protected File getFile(String name) {
>> > >>>> -        final File dir = new File(tmpDir, Math.random()+"");
>> > >>>> -        dir.mkdir();
>> > >>>> +        final File dir = new File(tmpDir, Math.random() + "");
>> > >>>> +        if (!dir.exists() && !dir.mkdir()) {
>> > >>>> +            throw new RuntimeException("Failed to create
>> directory:
>> > " +
>> > >>>> dir);
>> > >>>> +        }
>> > >>>>           dir.deleteOnExit();
>> > >>>>           return new File(dir, name);
>> > >>>>       }
>> > >>>>
>> > >>>> Modified:
>> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>> > >>>> apache/openejb/tck/impl/FullRestartContainer.java
>> > >>>> URL:
>> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-
>> > >>>> common/src/main/java/org/apache/openejb/tck/impl/
>> > >>>>
>> FullRestartContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>> > >>>>
>> > >>>> ============================================================
>> > >>>> ==================
>> > >>>> ---
>> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>> > >>>> apache/openejb/tck/impl/FullRestartContainer.java
>> > >>>> (original)
>> > >>>> +++
>> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>> > >>>> apache/openejb/tck/impl/FullRestartContainer.java
>> > >>>> Fri May 30 11:50:45 2014
>> > >>>> @@ -71,7 +71,14 @@ public class FullRestartContainer extend
>> > >>>>           System.out.println(currentFile);
>> > >>>>           writeToFile(currentFile, archive);
>> > >>>>
>> > >>>> -        server = new RemoteServer(100, true);
>> > >>>> +        String port = System.getProperty("server.http.port");
>> > >>>> +        if (port != null) {
>> > >>>> +            server = new RemoteServer(100, true);
>> > >>>> +            server.setPortStartup(Integer.parseInt(port));
>> > >>>> +        } else {
>> > >>>> +            throw new OpenEJBTCKRuntimeException("Please set the
>> > tomee
>> > >>>> port using the system property 'server.http.port'");
>> > >>>> +        }
>> > >>>> +
>> > >>>>           try {
>> > >>>>               server.start();
>> > >>>>           } catch (RuntimeException e) {
>> > >>>> @@ -84,7 +91,11 @@ public class FullRestartContainer extend
>> > >>>>
>> > >>>>       @Override
>> > >>>>       public void undeploy(String name) throws IOException {
>> > >>>> -        server.destroy();
>> > >>>> +
>> > >>>> +        if (null != server) {
>> > >>>> +            server.destroy();
>> > >>>> +        }
>> > >>>> +
>> > >>>>           File folder = new File(currentFile.getParentFile(),
>> > >>>> currentFile.getName().substring(0, currentFile.getName().length() -
>> > >>>> 4));
>> > >>>>           if (folder.exists()) {
>> > >>>>               delete(folder);
>> > >>>> @@ -109,9 +120,9 @@ public class FullRestartContainer extend
>> > >>>>           String port = System.getProperty("server.http.port");
>> > >>>>           if (port != null) {
>> > >>>>               System.out.println("provider url = " + "
>> > http://localhost:"
>> > >>>> +
>> > >>>> port + "/tomee/ejb");
>> > >>>> -            props.put(Context.PROVIDER_URL,
>> > >>>> options.get(Context.PROVIDER_URL,"http://localhost:" + port +
>> > >>>> "/tomee/ejb"));
>> > >>>> +            props.put(Context.PROVIDER_URL,
>> > >>>> options.get(Context.PROVIDER_URL, "http://localhost:" + port +
>> > >>>> "/tomee/ejb"));
>> > >>>>           } else {
>> > >>>> -            throw new OpenEJBTCKRuntimeException("Please set the
>> > tomee
>> > >>>> port as a system property");
>> > >>>> +            throw new OpenEJBTCKRuntimeException("Please set the
>> > tomee
>> > >>>> port using the system property 'server.http.port'");
>> > >>>>           }
>> > >>>>
>> > >>>>           try {
>> > >>>>
>> > >>>> Modified:
>> > >>>>
>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
>> > >>>> RemoteTomEEEJBContainer.java
>> > >>>> URL:
>> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/
>> > >>>> apache-tomee/src/main/java/org/apache/tomee/
>> > >>>> RemoteTomEEEJBContainer.java?rev=1598562&r1=1598561&r2=
>> > >>>> 1598562&view=diff
>> > >>>>
>> > >>>> ============================================================
>> > >>>> ==================
>> > >>>> ---
>> > >>>>
>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
>> > >>>> RemoteTomEEEJBContainer.java
>> > >>>> (original)
>> > >>>> +++
>> > >>>>
>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
>> > >>>> RemoteTomEEEJBContainer.java
>> > >>>> Fri May 30 11:50:45 2014
>> > >>>> @@ -92,6 +92,7 @@ public class RemoteTomEEEJBContainer ext
>> > >>>>               try {
>> > >>>>                   instance = new RemoteTomEEEJBContainer();
>> > >>>>                   instance.container = new RemoteServer();
>> > >>>> +
>> > >>>>
>> instance.container.setPortStartup(Integer.parseInt(parser.http()));
>> > >>>>                   instance.container.start();
>> > >>>>                   instance.context = new InitialContext(new
>> > >>>> Properties() {{
>> > >>>>                       setProperty(Context.INITIAL_CONTEXT_FACTORY,
>> > >>>> RemoteInitialContextFactory.class.getName());
>> > >>>>
>> > >>>>
>> > >>>>
>> > >>>>
>> > >> --
>> > >>   Andy Gumbrecht
>> > >>
>> > >>   http://www.tomitribe.com
>> > >>   agumbrecht@tomitribe.com
>> > >>   https://twitter.com/AndyGeeDe
>> > >>
>> > >>   TomEE treibt Tomitribe! | http://tomee.apache.org
>> > >>
>> > >>
>> > >
>> >
>>
>
>

Re: svn commit: r1598562 - in /tomee/tomee/trunk: arquillian/arquillian-tomee-remote/ arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/ arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/w...

Posted by Romain Manni-Bucau <rm...@gmail.com>.
@Andy: any objection if we revert it and do the fix I proposed?



Romain Manni-Bucau
Twitter: @rmannibucau
Blog: http://rmannibucau.wordpress.com/
LinkedIn: http://fr.linkedin.com/in/rmannibucau
Github: https://github.com/rmannibucau


2014-05-31 14:21 GMT+02:00 Thiago Veronezi <th...@veronezi.org>:

> Hi guys,
>
> It looks like cdi-tomee complains about this commit.
>
> Tests run: 1128, Failures: 1, Errors: 0, Skipped: 1127, Time elapsed:
> 189.898 sec <<< FAILURE! - in TestSuite
>
> beforeSuite(org.jboss.jsr299.tck.tests.implementation.simple.resource.ejb.EjbInjectionTest)
>  Time elapsed: 185.126 sec  <<< FAILURE!
> org.apache.openejb.OpenEJBRuntimeException: Could not connect to server
> at org.apache.openejb.config.RemoteServer.cmd(RemoteServer.java:348)
> at org.apache.openejb.config.RemoteServer.start(RemoteServer.java:144)
> at
>
> org.apache.openejb.tck.impl.ContainersImplTomEE.setup(ContainersImplTomEE.java:159)
> at org.jboss.testharness.AbstractTest.beforeSuite(AbstractTest.java:180)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
>
> I guess it complains about it because the previous revision (r1598528)
> works great.
>
> []s,
> Thiago.
>
>
> On Fri, May 30, 2014 at 8:52 AM, Romain Manni-Bucau <rmannibucau@gmail.com
> >
> wrote:
>
> > Hmm, checking protected Deployer deployer() throws NamingException in
> > TomEEContainer we should make retry number configurable in
> arquillian.xml I
> > think (TomEEConfiguration). Default to 5 with a pause of 200ms doesn't
> > sound that good, I'd go for a default duration of 20s with a pause of
> > 100ms. Wdyt?
> >
> >
> >
> > Romain Manni-Bucau
> > Twitter: @rmannibucau
> > Blog: http://rmannibucau.wordpress.com/
> > LinkedIn: http://fr.linkedin.com/in/rmannibucau
> > Github: https://github.com/rmannibucau
> >
> >
> > 2014-05-30 14:41 GMT+02:00 Romain Manni-Bucau <rm...@gmail.com>:
> >
> > > Hmm
> > >
> > > actually RemoteServer doesn't need it. I think you see the issue with
> > > arquillian mainly and in this case we have a retry mecanism created for
> > it
> > > in deployer lookup.
> > >
> > >  Isn't it what should have been configured?
> > >
> > >
> > >
> > > Romain Manni-Bucau
> > > Twitter: @rmannibucau
> > > Blog: http://rmannibucau.wordpress.com/
> > > LinkedIn: http://fr.linkedin.com/in/rmannibucau
> > > Github: https://github.com/rmannibucau
> > >
> > >
> > > 2014-05-30 14:34 GMT+02:00 Andy Gumbrecht <ag...@tomitribe.com>:
> > >
> > > Sure Romain,
> > >>
> > >> The RemoteServer.java does not know what the context is (OpenEJB,
> TomEE,
> > >> Arquillian) - So what is the service port ? (4201, 8080, ?) - Could
> > maybe
> > >> work it out internally from properties, but the caller already knows,
> > hence
> > >> the setter.
> > >> If the setter is not used then it defaults to previous action, which
> is
> > >> to use the self-determined shutdown port.
> > >>
> > >> The RemoteServer is/was only looking at the shutdown port (OpenEJB,
> > >> Tomcat) to determine if the server is running.
> > >>
> > >> The Tomcat/OpenEJB shutdown port can start to accepts calls before the
> > >> actual service port (Several seconds or more on a busy machine like
> the
> > >> buildbot).
> > >> So using it (in RemoteServer) to see if the server is running often
> > leads
> > >> to an overlap (Port already in use or bind exceptions).
> > >>
> > >> Giving RemoteServer the service port to monitor for a startup
> connection
> > >> makes more sense to me, as this is the port required for access and
> not
> > the
> > >> shutdown port.
> > >>
> > >> Shutdown is less of an issue because the shutdown port goes down after
> > >> the service port.
> > >>
> > >> The changes apply to usages of RemoteServer, where the service port is
> > >> known.
> > >>
> > >> Andy.
> > >>
> > >>
> > >>
> > >> On 30/05/2014 14:09, Romain Manni-Bucau wrote:
> > >>
> > >>> Hi
> > >>>
> > >>> I'm not sure to get the goal of it.
> > >>>
> > >>> PortStartup is set as system property where needed (mainly
> arquillian)
> > >>> but
> > >>> doesn't add much value otherwise since it can just be not existing (I
> > saw
> > >>> several instances with only https or ajp configured)
> > >>>
> > >>> Can you detail the cause please?
> > >>>
> > >>>
> > >>>
> > >>>
> > >>> Romain Manni-Bucau
> > >>> Twitter: @rmannibucau
> > >>> Blog: http://rmannibucau.wordpress.com/
> > >>> LinkedIn: http://fr.linkedin.com/in/rmannibucau
> > >>> Github: https://github.com/rmannibucau
> > >>>
> > >>>
> > >>> 2014-05-30 13:50 GMT+02:00 <an...@apache.org>:
> > >>>
> > >>>  Author: andygumbrecht
> > >>>> Date: Fri May 30 11:50:45 2014
> > >>>> New Revision: 1598562
> > >>>>
> > >>>> URL: http://svn.apache.org/r1598562
> > >>>> Log:
> > >>>> TOMEE-1230 Provide the known server service port to RemoteServer for
> > >>>> better startup monitoring.
> > >>>>
> > >>>> Modified:
> > >>>>      tomee/tomee/trunk/arquillian/arquillian-tomee-remote/   (props
> > >>>> changed)
> > >>>>
> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
> > >>>>
> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
> > >>>>
> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
> > >>>> remote/src/main/java/org/apache/tomee/arquillian/
> > >>>> webapp/TomEEWebappContainer.java
> > >>>>
> > >>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
> > >>>> org/apache/openejb/config/RemoteServer.java
> > >>>>
> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> > >>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
> > >>>>
> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> > >>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
> > >>>>
> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> > >>>> apache/openejb/tck/impl/ContainersImplTomEE.java
> > >>>>
> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> > >>>> apache/openejb/tck/impl/FullRestartContainer.java
> > >>>>
> > >>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
> > >>>> RemoteTomEEEJBContainer.java
> > >>>>
> > >>>> Propchange: tomee/tomee/trunk/arquillian/arquillian-tomee-remote/
> > >>>>
> > >>>> ------------------------------------------------------------
> > >>>> ------------------
> > >>>> --- svn:ignore (original)
> > >>>> +++ svn:ignore Fri May 30 11:50:45 2014
> > >>>> @@ -1,6 +1,8 @@
> > >>>>   *.iml
> > >>>>   .classpath
> > >>>> +.idea
> > >>>>   .project
> > >>>>   .settings
> > >>>>   target
> > >>>>   velocity.*
> > >>>> +.idea
> > >>>>
> > >>>> Modified:
> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
> > >>>>
> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
> > >>>> URL:
> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/
> > >>>> arquillian-tomee-remote/src/main/java/org/apache/tomee/
> > >>>> arquillian/remote/RemoteTomEEContainer.java?rev=
> > >>>> 1598562&r1=1598561&r2=1598562&view=diff
> > >>>>
> > >>>> ============================================================
> > >>>> ==================
> > >>>> ---
> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
> > >>>>
> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
> > >>>> (original)
> > >>>> +++
> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
> > >>>>
> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
> > >>>> Fri May 30 11:50:45 2014
> > >>>> @@ -71,9 +71,11 @@ public class RemoteTomEEContainer extend
> > >>>>       @Override
> > >>>>       public void start() throws LifecycleException {
> > >>>>           // see if TomEE is already running by checking the http
> port
> > >>>> -        if (Setup.isRunning(configuration.getHost(),
> > >>>> configuration.getHttpPort())) {
> > >>>> +        final int httpPort = configuration.getHttpPort();
> > >>>>
> > >>>> -            logger.info(String.format("TomEE found running on port
> > >>>> %s",
> > >>>> configuration.getHttpPort()));
> > >>>> +        if (Setup.isRunning(configuration.getHost(), httpPort)) {
> > >>>> +
> > >>>> +            logger.info(String.format("TomEE found running on port
> > >>>> %s",
> > >>>> httpPort));
> > >>>>
> > >>>>               return;
> > >>>>           }
> > >>>> @@ -90,15 +92,18 @@ public class RemoteTomEEContainer extend
> > >>>>
> > >>>>               configure();
> > >>>>
> > >>>> -            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT,
> > >>>> Integer.toString(configuration.getStopPort()));
> > >>>> +            int stopPort = configuration.getStopPort();
> > >>>> +            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT,
> > >>>> Integer.toString(stopPort));
> > >>>>
> System.setProperty(RemoteServer.SERVER_SHUTDOWN_COMMAND,
> > >>>> configuration.getStopCommand());
> > >>>>               System.setProperty(RemoteServer.SERVER_SHUTDOWN_HOST,
> > >>>> configuration.getStopHost());
> > >>>> +
> > >>>>               if (configuration.isDebug()) {
> > >>>>
> > System.setProperty(RemoteServer.OPENEJB_SERVER_DEBUG,
> > >>>> "true");
> > >>>>                   System.setProperty(RemoteServer.SERVER_DEBUG_PORT,
> > >>>> Integer.toString(configuration.getDebugPort()));
> > >>>>               }
> > >>>> -            container = new RemoteServer();
> > >>>>
> > >>>> +            container = new RemoteServer();
> > >>>> +            container.setPortStartup(httpPort);
> > >>>>               container.start(args(), "start", true);
> > >>>>               container.killOnExit();
> > >>>>
> > >>>>
> > >>>> Modified:
> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
> > >>>> remote/src/main/java/org/apache/tomee/arquillian/
> > >>>> webapp/TomEEWebappContainer.java
> > >>>> URL:
> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/
> > >>>> arquillian-tomee-webapp-remote/src/main/java/org/
> > >>>> apache/tomee/arquillian/webapp/TomEEWebappContainer.
> > >>>> java?rev=1598562&r1=1598561&r2=1598562&view=diff
> > >>>>
> > >>>> ============================================================
> > >>>> ==================
> > >>>> ---
> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
> > >>>> remote/src/main/java/org/apache/tomee/arquillian/
> > >>>> webapp/TomEEWebappContainer.java
> > >>>> (original)
> > >>>> +++
> > >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
> > >>>> remote/src/main/java/org/apache/tomee/arquillian/
> > >>>> webapp/TomEEWebappContainer.java
> > >>>> Fri May 30 11:50:45 2014
> > >>>> @@ -54,9 +54,10 @@ public class TomEEWebappContainer extend
> > >>>>       @Override
> > >>>>       public void start() throws LifecycleException {
> > >>>>           // see if TomEE is already running by checking the http
> port
> > >>>> -        if (Setup.isRunning(configuration.getHost(),
> > >>>> configuration.getHttpPort())) {
> > >>>> +        int httpPort = configuration.getHttpPort();
> > >>>> +        if (Setup.isRunning(configuration.getHost(), httpPort)) {
> > >>>>
> > >>>> -            logger.info(String.format("Tomcat found running on
> port
> > >>>> %s",
> > >>>> configuration.getHttpPort()));
> > >>>> +            logger.info(String.format("Tomcat found running on
> port
> > >>>> %s",
> > >>>> httpPort));
> > >>>>
> > >>>>               return;
> > >>>>           }
> > >>>> @@ -141,12 +142,13 @@ public class TomEEWebappContainer extend
> > >>>>               if (!wereOpenejbHomeSet &&
> > >>>> configuration.isUseInstallerServlet()) {
> > >>>>                   // instead of calling the Installer, let's just do
> > >>>> like
> > >>>> users do
> > >>>>                   // call the servlet installer instead
> > >>>> -                final String baseUrl = "http://" +
> > >>>> configuration.getHost() + ":" + configuration.getHttpPort() +
> > >>>> "/tomee/installer";
> > >>>> +                final String baseUrl = "http://" +
> > >>>> configuration.getHost() + ":" + httpPort + "/tomee/installer";
> > >>>>
> > >>>>                   assert installer != null;
> > >>>>                   installer.addTomEEAdminConfInTomcatUsers(true);
> > >>>>
> > >>>>                   final RemoteServer tmpContainer = new
> > RemoteServer();
> > >>>> +                tmpContainer.setPortStartup(httpPort);
> > >>>>                   tmpContainer.start();
> > >>>>
> > >>>>                   final URL url = new URL(baseUrl);
> > >>>> @@ -156,7 +158,7 @@ public class TomEEWebappContainer extend
> > >>>>                       final URLConnection uc = url.openConnection();
> > >>>>                       // dG9tZWU6dG9tZWU= --> Base64 of tomee:tomee
> > >>>>                       final String authorizationString = "Basic
> > >>>> dG9tZWU6dG9tZWU=";
> > >>>> -                    uc.setRequestProperty ("Authorization",
> > >>>> authorizationString);
> > >>>> +                    uc.setRequestProperty("Authorization",
> > >>>> authorizationString);
> > >>>>                       try {
> > >>>>                           final InputStream is =
> uc.getInputStream();
> > >>>>                           org.apache.openejb.loader.IO.slurp(is);
> > >>>> @@ -173,6 +175,7 @@ public class TomEEWebappContainer extend
> > >>>>               }
> > >>>>
> > >>>>               container = new RemoteServer();
> > >>>> +            container.setPortStartup(httpPort);
> > >>>>
> > >>>>
> > container.start(Arrays.asList("-Dorg.apache.openejb.servlet.filters="
> > >>>> +
> > >>>> ArquillianFilterRunner.class.getName() + "=" +
> > >>>> ServletMethodExecutor.ARQUILLIAN_SERVLET_MAPPING), "start", true);
> > >>>>               container.killOnExit();
> > >>>>           } catch (final Exception e) {
> > >>>>
> > >>>> Modified:
> > >>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
> > >>>> org/apache/openejb/config/RemoteServer.java
> > >>>> URL:
> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/container/
> > >>>> openejb-core/src/main/java/org/apache/openejb/config/
> > >>>> RemoteServer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
> > >>>>
> > >>>> ============================================================
> > >>>> ==================
> > >>>> ---
> > >>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
> > >>>> org/apache/openejb/config/RemoteServer.java
> > >>>> (original)
> > >>>> +++
> > >>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
> > >>>> org/apache/openejb/config/RemoteServer.java
> > >>>> Fri May 30 11:50:45 2014
> > >>>> @@ -50,6 +50,8 @@ public class RemoteServer {
> > >>>>       public static final String SERVER_SHUTDOWN_HOST =
> > >>>> "server.shutdown.host";
> > >>>>       public static final String SERVER_SHUTDOWN_COMMAND =
> > >>>> "server.shutdown.command";
> > >>>>       public static final String OPENEJB_SERVER_DEBUG =
> > >>>> "openejb.server.debug";
> > >>>> +    public static final String START = "start";
> > >>>> +    public static final String STOP = "stop";
> > >>>>
> > >>>>       private boolean debug = options.get(OPENEJB_SERVER_DEBUG,
> > false);
> > >>>>       private final boolean profile = options.get("openejb.server.
> > >>>> profile",
> > >>>> false);
> > >>>> @@ -66,10 +68,11 @@ public class RemoteServer {
> > >>>>       private Process server;
> > >>>>       private final int tries;
> > >>>>       private final boolean verbose;
> > >>>> -    private final int shutdownPort;
> > >>>> +    private final int portShutdown;
> > >>>>       private final String host;
> > >>>>       private final String command;
> > >>>>       private File home;
> > >>>> +    private int portStartup;
> > >>>>
> > >>>>       public RemoteServer() {
> > >>>>           this(options.get("connect.tries", 60),
> > options.get("verbose",
> > >>>> false));
> > >>>> @@ -81,7 +84,8 @@ public class RemoteServer {
> > >>>>           home = getHome();
> > >>>>           tomcat = (home != null) && (new File(new File(home,
> "bin"),
> > >>>> "catalina.sh").exists());
> > >>>>
> > >>>> -        shutdownPort = options.get(SERVER_SHUTDOWN_PORT, tomcat ?
> > >>>> 8005 :
> > >>>> 4200);
> > >>>> +        portShutdown = options.get(SERVER_SHUTDOWN_PORT, tomcat ?
> > >>>> 8005 :
> > >>>> 4200);
> > >>>> +        portStartup = portShutdown;
> > >>>>           command = options.get(SERVER_SHUTDOWN_COMMAND,
> "SHUTDOWN");
> > >>>>           host = options.get(SERVER_SHUTDOWN_HOST, "localhost");
> > >>>>       }
> > >>>> @@ -97,10 +101,10 @@ public class RemoteServer {
> > >>>>       }
> > >>>>
> > >>>>       public static void main(final String[] args) {
> > >>>> -        assert args.length > 0 : "no arguments supplied: valid
> > argumen
> > >>>> -efts are 'start' or 'stop'";
> > >>>> -        if (args[0].equalsIgnoreCase("start")) {
> > >>>> +        assert args.length > 0 : "no arguments supplied: valid
> > >>>> arguments
> > >>>> are 'start' or 'stop'";
> > >>>> +        if (args[0].equalsIgnoreCase(START)) {
> > >>>>               new RemoteServer().start();
> > >>>> -        } else if (args[0].equalsIgnoreCase("stop")) {
> > >>>> +        } else if (args[0].equalsIgnoreCase(STOP)) {
> > >>>>               final RemoteServer remoteServer = new RemoteServer();
> > >>>>               remoteServer.serverHasAlreadyBeenStarted = false;
> > >>>>               remoteServer.stop();
> > >>>> @@ -109,8 +113,16 @@ public class RemoteServer {
> > >>>>           }
> > >>>>       }
> > >>>>
> > >>>> +    public int getPortStartup() {
> > >>>> +        return this.portStartup;
> > >>>> +    }
> > >>>> +
> > >>>> +    public void setPortStartup(int portStartup) {
> > >>>> +        this.portStartup = portStartup;
> > >>>> +    }
> > >>>> +
> > >>>>       public Properties getProperties() {
> > >>>> -        return properties;
> > >>>> +        return this.properties;
> > >>>>       }
> > >>>>
> > >>>>       public void destroy() {
> > >>>> @@ -125,7 +137,7 @@ public class RemoteServer {
> > >>>>       }
> > >>>>
> > >>>>       public void start() {
> > >>>> -        start(Collections.<String>emptyList(), "start", true);
> > >>>> +        start(Collections.<String>emptyList(), START, true);
> > >>>>       }
> > >>>>
> > >>>>       public void start(final List<String> additionalArgs, final
> > String
> > >>>> cmd, final boolean checkPortAvailable) {
> > >>>> @@ -134,9 +146,12 @@ public class RemoteServer {
> > >>>>
> > >>>>       private void cmd(final List<String> additionalArgs, final
> String
> > >>>> cmd,
> > >>>> final boolean checkPortAvailable) {
> > >>>>           boolean ok = true;
> > >>>> +        final int port = START.equals(cmd) ? portStartup :
> > >>>> portShutdown;
> > >>>> +
> > >>>>           if (checkPortAvailable) {
> > >>>> -            ok = !connect();
> > >>>> +            ok = !connect(port, 1);
> > >>>>           }
> > >>>> +
> > >>>>           if (ok) {
> > >>>>               try {
> > >>>>                   if (verbose) {
> > >>>> @@ -170,7 +185,7 @@ public class RemoteServer {
> > >>>>
> > >>>>                   final String java;
> > >>>>                   final boolean isWindows = System.getProperty("
> > os.name
> > >>>> ",
> > >>>> "unknown").toLowerCase().startsWith("windows");
> > >>>> -                if (isWindows && "start".equals(cmd) &&
> > >>>> options.get("server.windows.fork", false)) {
> > >>>> +                if (isWindows && START.equals(cmd) &&
> > >>>> options.get("server.windows.fork", false)) {
> > >>>>                       // run and forget
> > >>>>                       java = new
> File(System.getProperty("java.home"),
> > >>>> "bin/javaw").getAbsolutePath();
> > >>>>                   } else {
> > >>>> @@ -298,7 +313,7 @@ public class RemoteServer {
> > >>>>                   }
> > >>>>
> > >>>>                   if (cmd == null) {
> > >>>> -                    argsList.add("start");
> > >>>> +                    argsList.add(START);
> > >>>>                   } else {
> > >>>>                       argsList.add(cmd);
> > >>>>                   }
> > >>>> @@ -313,9 +328,9 @@ public class RemoteServer {
> > >>>>                   final Process process = Runtime.getRuntime().exec(
> > >>>> args);
> > >>>>                   Pipe.pipeOut(process); // why would we need to
> > >>>> redirect
> > >>>> System.in to the process, TomEE doesn't use it
> > >>>>
> > >>>> -                if ("start".equals(cmd)) {
> > >>>> +                if (START.equals(cmd)) {
> > >>>>                       server = process;
> > >>>> -                } else if ("stop".equals(cmd) && server != null) {
> > >>>> +                } else if (STOP.equals(cmd) && server != null) {
> > >>>>                       server.waitFor();
> > >>>>                   }
> > >>>>
> > >>>> @@ -324,11 +339,12 @@ public class RemoteServer {
> > >>>>               }
> > >>>>               if (checkPortAvailable) {
> > >>>>                   if (debug) {
> > >>>> -                    if (!connect(Integer.MAX_VALUE)) {
> > >>>> +
> > >>>> +                    if (!connect(port, Integer.MAX_VALUE)) {
> > >>>>                           throw new OpenEJBRuntimeException("Could
> not
> > >>>> connect to server");
> > >>>>                       }
> > >>>>                   } else {
> > >>>> -                    if (!connect(tries)) {
> > >>>> +                    if (!connect(port, tries)) {
> > >>>>                           throw new OpenEJBRuntimeException("Could
> not
> > >>>> connect to server");
> > >>>>                       }
> > >>>>                   }
> > >>>> @@ -443,7 +459,7 @@ public class RemoteServer {
> > >>>>           if (verbose) {
> > >>>>               System.out.print("Waiting for TomEE shutdown.");
> > >>>>           }
> > >>>> -        while (connect()) {
> > >>>> +        while (connect(portShutdown, tries)) {
> > >>>>               Thread.sleep(1000);
> > >>>>               if (verbose) {
> > >>>>                   System.out.print(".");
> > >>>> @@ -459,7 +475,7 @@ public class RemoteServer {
> > >>>>           Socket socket = null;
> > >>>>           OutputStream stream = null;
> > >>>>           try {
> > >>>> -            socket = new Socket(host, shutdownPort);
> > >>>> +            socket = new Socket(host, portShutdown);
> > >>>>               stream = socket.getOutputStream();
> > >>>>               final String shutdown = command +
> > >>>> Character.toString((char)
> > >>>> 0);
> > >>>>               for (int i = 0; i < shutdown.length(); i++) {
> > >>>> @@ -478,11 +494,7 @@ public class RemoteServer {
> > >>>>           }
> > >>>>       }
> > >>>>
> > >>>> -    private boolean connect() {
> > >>>> -        return connect(1);
> > >>>> -    }
> > >>>> -
> > >>>> -    private boolean connect(int tries) {
> > >>>> +    private boolean connect(final int port, int tries) {
> > >>>>           if (verbose) {
> > >>>>               System.out.println("[] CONNECT ATTEMPT " +
> (this.tries -
> > >>>> tries));
> > >>>>           }
> > >>>> @@ -490,7 +502,7 @@ public class RemoteServer {
> > >>>>           Socket s = null;
> > >>>>           try {
> > >>>>               s = new Socket();
> > >>>> -            s.connect(new InetSocketAddress(host, shutdownPort),
> > 1000);
> > >>>> +            s.connect(new InetSocketAddress(this.host, port),
> 1000);
> > >>>>               s.getOutputStream().close();
> > >>>>               if (verbose) {
> > >>>>                   System.out.println("[] CONNECTED IN " +
> (this.tries
> > -
> > >>>> tries));
> > >>>> @@ -507,7 +519,7 @@ public class RemoteServer {
> > >>>>                   } catch (final Exception e2) {
> > >>>>                       e.printStackTrace();
> > >>>>                   }
> > >>>> -                return connect(--tries);
> > >>>> +                return connect(port, --tries);
> > >>>>               }
> > >>>>           } finally {
> > >>>>               if (s != null) {
> > >>>>
> > >>>> Modified:
> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> > >>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
> > >>>> URL:
> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-
> > >>>> maven-plugin/src/main/java/org/apache/openejb/maven/
> > >>>> plugin/AbstractTomEEMojo.java?rev=1598562&r1=1598561&r2=
> > >>>> 1598562&view=diff
> > >>>>
> > >>>> ============================================================
> > >>>> ==================
> > >>>> ---
> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> > >>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
> > >>>> (original)
> > >>>> +++
> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> > >>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
> > >>>> Fri May 30 11:50:45 2014
> > >>>> @@ -81,6 +81,7 @@ public abstract class AbstractTomEEMojo
> > >>>>       private static final String REMOVE_PREFIX = "remove:";
> > >>>>       public static final String QUIT_CMD = "quit";
> > >>>>       public static final String EXIT_CMD = "exit";
> > >>>> +    public static final String TOM_EE = "TomEE";
> > >>>>
> > >>>>       @Component
> > >>>>       protected ArtifactFactory factory;
> > >>>> @@ -258,7 +259,7 @@ public abstract class AbstractTomEEMojo
> > >>>>
> > >>>>       protected File deployedFile = null;
> > >>>>       protected RemoteServer server = null;
> > >>>> -    protected String container = "TomEE";
> > >>>> +    protected String container = TOM_EE;
> > >>>>
> > >>>>       @Override
> > >>>>       public void execute() throws MojoExecutionException,
> > >>>> MojoFailureException {
> > >>>> @@ -711,7 +712,10 @@ public abstract class AbstractTomEEMojo
> > >>>>
> > >>>>           addShutdownHooks(server); // some shutdown hooks are
> always
> > >>>> added
> > >>>> (see UpdatableTomEEMojo)
> > >>>>
> > >>>> -        if ("TomEE".equals(container)) {
> > >>>> +        if (TOM_EE.equals(container)) {
> > >>>> +
> > >>>> +            server.setPortStartup(tomeeHttpPort);
> > >>>> +
> > >>>>               getLog().info("Running '" +
> > >>>> getClass().getSimpleName().replace("TomEEMojo",
> > >>>> "").toLowerCase(Locale.ENGLISH)
> > >>>>                   + "'. Configured TomEE in plugin is " + tomeeHost
> +
> > >>>> ":" +
> > >>>> tomeeHttpPort
> > >>>>                   + " (plugin shutdown port is " +
> tomeeShutdownPort +
> > >>>> ")");
> > >>>> @@ -998,7 +1002,7 @@ public abstract class AbstractTomEEMojo
> > >>>>
> > >>>>               File file = new File(catalinaBase, "conf/tomee.xml");
> > >>>>               if (file.exists()) {
> > >>>> -                container = "TomEE";
> > >>>> +                container = TOM_EE;
> > >>>>               } else {
> > >>>>                   container = "OpenEJB";
> > >>>>                   file = new File(catalinaBase, "conf/openejb.xml");
> > >>>>
> > >>>> Modified:
> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> > >>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
> > >>>> URL:
> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-
> > >>>> maven-plugin/src/main/java/org/apache/openejb/maven/
> > >>>> plugin/runner/ExecRunner.java?rev=1598562&r1=1598561&r2=
> > >>>> 1598562&view=diff
> > >>>>
> > >>>> ============================================================
> > >>>> ==================
> > >>>> ---
> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> > >>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
> > >>>> (original)
> > >>>> +++
> > >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> > >>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
> > >>>> Fri May 30 11:50:45 2014
> > >>>> @@ -28,6 +28,7 @@ import java.io.InputStream;
> > >>>>   import java.io.InputStreamReader;
> > >>>>   import java.util.ArrayList;
> > >>>>   import java.util.Collection;
> > >>>> +import java.util.Collections;
> > >>>>   import java.util.LinkedList;
> > >>>>   import java.util.List;
> > >>>>   import java.util.Locale;
> > >>>> @@ -83,7 +84,9 @@ public class ExecRunner {
> > >>>>           if (scripts != null) { // dont use filefilter to avoid
> > >>>> dependency
> > >>>> issue
> > >>>>               for (final File f : scripts) {
> > >>>>                   if (f.getName().endsWith(".sh") &&
> !f.canExecute())
> > {
> > >>>> -                    f.setExecutable(true, true);
> > >>>> +                    if(!f.setExecutable(true, true)){
> > >>>> +                        System.err.println("Failed make file
> > >>>> executable:
> > >>>> " + f);
> > >>>> +                    }
> > >>>>                   }
> > >>>>               }
> > >>>>           }
> > >>>> @@ -101,7 +104,9 @@ public class ExecRunner {
> > >>>>                       throw new IllegalArgumentException("Can't find
> > >>>>  " +
> > >>>> cmd);
> > >>>>                   }
> > >>>>                   if (cmd.endsWith(".sh")) {
> > >>>> -                    scriptFile.setExecutable(true);
> > >>>> +                    if(!scriptFile.setExecutable(true)){
> > >>>> +                        System.err.println("Failed make script file
> > >>>> executable: " + scriptFile);
> > >>>> +                    }
> > >>>>                   }
> > >>>>               }
> > >>>>           }
> > >>>> @@ -117,15 +122,15 @@ public class ExecRunner {
> > >>>>               System.setProperty("server.shutdown.command",
> > >>>> config.getProperty("shutdownCommand"));
> > >>>>
> > >>>>               final RemoteServer server = new RemoteServer();
> > >>>> +            server.setPortStartup(Integer.parseInt(parser.http()));
> > >>>> +
> > >>>>               if (config.containsKey("additionalClasspath")) {
> > >>>>
> > >>>>   server.setAdditionalClasspath(config.getProperty("
> > >>>> additionalClasspath"));
> > >>>>               }
> > >>>>
> > >>>>               final List<String> jvmArgs = new LinkedList<String>();
> > >>>>               if (additionalArgs != null) {
> > >>>> -                for (final String kv : additionalArgs.split(" ")) {
> > >>>> -                    jvmArgs.add(kv);
> > >>>> -                }
> > >>>> +                Collections.addAll(jvmArgs, additionalArgs.split("
> > "));
> > >>>>               }
> > >>>>               for (final String k : config.stringPropertyNames()) {
> > >>>>                   if (k.startsWith("jvmArg.")) {
> > >>>>
> > >>>> Modified:
> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> > >>>> apache/openejb/tck/impl/ContainersImplTomEE.java
> > >>>> URL:
> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-
> > >>>> common/src/main/java/org/apache/openejb/tck/impl/
> > >>>> ContainersImplTomEE.java?rev=1598562&r1=1598561&r2=1598562&view=diff
> > >>>>
> > >>>> ============================================================
> > >>>> ==================
> > >>>> ---
> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> > >>>> apache/openejb/tck/impl/ContainersImplTomEE.java
> > >>>> (original)
> > >>>> +++
> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> > >>>> apache/openejb/tck/impl/ContainersImplTomEE.java
> > >>>> Fri May 30 11:50:45 2014
> > >>>> @@ -32,7 +32,6 @@ import java.io.File;
> > >>>>   import java.io.IOException;
> > >>>>   import java.io.InputStream;
> > >>>>   import java.util.Arrays;
> > >>>> -import java.util.Collections;
> > >>>>   import java.util.Properties;
> > >>>>
> > >>>>   /**
> > >>>> @@ -45,6 +44,7 @@ public class ContainersImplTomEE extends
> > >>>>       private Exception exception;
> > >>>>       private AppInfo appInfo;
> > >>>>       private File currentFile = null;
> > >>>> +    private int port = 8080;
> > >>>>
> > >>>>       private Deployer lookup() {
> > >>>>           final Options options = new
> Options(System.getProperties());
> > >>>> @@ -53,8 +53,9 @@ public class ContainersImplTomEE extends
> > >>>>           String port = System.getProperty("server.http.port");
> > >>>>           if (port != null) {
> > >>>>               props.put(Context.PROVIDER_URL,
> > >>>> options.get(Context.PROVIDER_URL,"http://localhost:" + port +
> > >>>> "/tomee/ejb"));
> > >>>> +            this.port = Integer.parseInt(port);
> > >>>>           } else {
> > >>>> -            throw new OpenEJBTCKRuntimeException("Please set the
> > tomee
> > >>>> port as a system property");
> > >>>> +            throw new OpenEJBTCKRuntimeException("Please set the
> > tomee
> > >>>> port using the system property 'server.http.port'");
> > >>>>           }
> > >>>>
> > >>>>           final String deployerJndi =
> > >>>> System.getProperty("openejb.deployer.jndiname",
> > >>>> "openejb/DeployerBusinessRemote");
> > >>>> @@ -70,6 +71,7 @@ public class ContainersImplTomEE extends
> > >>>>           System.out.println("ContainersImpl=" +
> > >>>> ContainersImplTomEE.class.getName());
> > >>>>           System.out.println("Initialized ContainersImplTomEE " +
> > >>>> (++count));
> > >>>>           server = new RemoteServer();
> > >>>> +        server.setPortStartup(this.port);
> > >>>>       }
> > >>>>       @Override
> > >>>>       public boolean deploy(InputStream archive, String name) throws
> > >>>> IOException {
> > >>>> @@ -143,8 +145,10 @@ public class ContainersImplTomEE extends
> > >>>>       }
> > >>>>
> > >>>>       protected File getFile(String name) {
> > >>>> -        final File dir = new File(tmpDir, Math.random()+"");
> > >>>> -        dir.mkdir();
> > >>>> +        final File dir = new File(tmpDir, Math.random() + "");
> > >>>> +        if (!dir.exists() && !dir.mkdir()) {
> > >>>> +            throw new RuntimeException("Failed to create directory:
> > " +
> > >>>> dir);
> > >>>> +        }
> > >>>>           dir.deleteOnExit();
> > >>>>           return new File(dir, name);
> > >>>>       }
> > >>>>
> > >>>> Modified:
> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> > >>>> apache/openejb/tck/impl/FullRestartContainer.java
> > >>>> URL:
> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-
> > >>>> common/src/main/java/org/apache/openejb/tck/impl/
> > >>>>
> FullRestartContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
> > >>>>
> > >>>> ============================================================
> > >>>> ==================
> > >>>> ---
> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> > >>>> apache/openejb/tck/impl/FullRestartContainer.java
> > >>>> (original)
> > >>>> +++
> > >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> > >>>> apache/openejb/tck/impl/FullRestartContainer.java
> > >>>> Fri May 30 11:50:45 2014
> > >>>> @@ -71,7 +71,14 @@ public class FullRestartContainer extend
> > >>>>           System.out.println(currentFile);
> > >>>>           writeToFile(currentFile, archive);
> > >>>>
> > >>>> -        server = new RemoteServer(100, true);
> > >>>> +        String port = System.getProperty("server.http.port");
> > >>>> +        if (port != null) {
> > >>>> +            server = new RemoteServer(100, true);
> > >>>> +            server.setPortStartup(Integer.parseInt(port));
> > >>>> +        } else {
> > >>>> +            throw new OpenEJBTCKRuntimeException("Please set the
> > tomee
> > >>>> port using the system property 'server.http.port'");
> > >>>> +        }
> > >>>> +
> > >>>>           try {
> > >>>>               server.start();
> > >>>>           } catch (RuntimeException e) {
> > >>>> @@ -84,7 +91,11 @@ public class FullRestartContainer extend
> > >>>>
> > >>>>       @Override
> > >>>>       public void undeploy(String name) throws IOException {
> > >>>> -        server.destroy();
> > >>>> +
> > >>>> +        if (null != server) {
> > >>>> +            server.destroy();
> > >>>> +        }
> > >>>> +
> > >>>>           File folder = new File(currentFile.getParentFile(),
> > >>>> currentFile.getName().substring(0, currentFile.getName().length() -
> > >>>> 4));
> > >>>>           if (folder.exists()) {
> > >>>>               delete(folder);
> > >>>> @@ -109,9 +120,9 @@ public class FullRestartContainer extend
> > >>>>           String port = System.getProperty("server.http.port");
> > >>>>           if (port != null) {
> > >>>>               System.out.println("provider url = " + "
> > http://localhost:"
> > >>>> +
> > >>>> port + "/tomee/ejb");
> > >>>> -            props.put(Context.PROVIDER_URL,
> > >>>> options.get(Context.PROVIDER_URL,"http://localhost:" + port +
> > >>>> "/tomee/ejb"));
> > >>>> +            props.put(Context.PROVIDER_URL,
> > >>>> options.get(Context.PROVIDER_URL, "http://localhost:" + port +
> > >>>> "/tomee/ejb"));
> > >>>>           } else {
> > >>>> -            throw new OpenEJBTCKRuntimeException("Please set the
> > tomee
> > >>>> port as a system property");
> > >>>> +            throw new OpenEJBTCKRuntimeException("Please set the
> > tomee
> > >>>> port using the system property 'server.http.port'");
> > >>>>           }
> > >>>>
> > >>>>           try {
> > >>>>
> > >>>> Modified:
> > >>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
> > >>>> RemoteTomEEEJBContainer.java
> > >>>> URL:
> > >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/
> > >>>> apache-tomee/src/main/java/org/apache/tomee/
> > >>>> RemoteTomEEEJBContainer.java?rev=1598562&r1=1598561&r2=
> > >>>> 1598562&view=diff
> > >>>>
> > >>>> ============================================================
> > >>>> ==================
> > >>>> ---
> > >>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
> > >>>> RemoteTomEEEJBContainer.java
> > >>>> (original)
> > >>>> +++
> > >>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
> > >>>> RemoteTomEEEJBContainer.java
> > >>>> Fri May 30 11:50:45 2014
> > >>>> @@ -92,6 +92,7 @@ public class RemoteTomEEEJBContainer ext
> > >>>>               try {
> > >>>>                   instance = new RemoteTomEEEJBContainer();
> > >>>>                   instance.container = new RemoteServer();
> > >>>> +
> > >>>>
> instance.container.setPortStartup(Integer.parseInt(parser.http()));
> > >>>>                   instance.container.start();
> > >>>>                   instance.context = new InitialContext(new
> > >>>> Properties() {{
> > >>>>                       setProperty(Context.INITIAL_CONTEXT_FACTORY,
> > >>>> RemoteInitialContextFactory.class.getName());
> > >>>>
> > >>>>
> > >>>>
> > >>>>
> > >> --
> > >>   Andy Gumbrecht
> > >>
> > >>   http://www.tomitribe.com
> > >>   agumbrecht@tomitribe.com
> > >>   https://twitter.com/AndyGeeDe
> > >>
> > >>   TomEE treibt Tomitribe! | http://tomee.apache.org
> > >>
> > >>
> > >
> >
>

Re: svn commit: r1598562 - in /tomee/tomee/trunk: arquillian/arquillian-tomee-remote/ arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/ arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/w...

Posted by Thiago Veronezi <th...@veronezi.org>.
Hi guys,

It looks like cdi-tomee complains about this commit.

Tests run: 1128, Failures: 1, Errors: 0, Skipped: 1127, Time elapsed:
189.898 sec <<< FAILURE! - in TestSuite
beforeSuite(org.jboss.jsr299.tck.tests.implementation.simple.resource.ejb.EjbInjectionTest)
 Time elapsed: 185.126 sec  <<< FAILURE!
org.apache.openejb.OpenEJBRuntimeException: Could not connect to server
at org.apache.openejb.config.RemoteServer.cmd(RemoteServer.java:348)
at org.apache.openejb.config.RemoteServer.start(RemoteServer.java:144)
at
org.apache.openejb.tck.impl.ContainersImplTomEE.setup(ContainersImplTomEE.java:159)
at org.jboss.testharness.AbstractTest.beforeSuite(AbstractTest.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)


I guess it complains about it because the previous revision (r1598528)
works great.

[]s,
Thiago.


On Fri, May 30, 2014 at 8:52 AM, Romain Manni-Bucau <rm...@gmail.com>
wrote:

> Hmm, checking protected Deployer deployer() throws NamingException in
> TomEEContainer we should make retry number configurable in arquillian.xml I
> think (TomEEConfiguration). Default to 5 with a pause of 200ms doesn't
> sound that good, I'd go for a default duration of 20s with a pause of
> 100ms. Wdyt?
>
>
>
> Romain Manni-Bucau
> Twitter: @rmannibucau
> Blog: http://rmannibucau.wordpress.com/
> LinkedIn: http://fr.linkedin.com/in/rmannibucau
> Github: https://github.com/rmannibucau
>
>
> 2014-05-30 14:41 GMT+02:00 Romain Manni-Bucau <rm...@gmail.com>:
>
> > Hmm
> >
> > actually RemoteServer doesn't need it. I think you see the issue with
> > arquillian mainly and in this case we have a retry mecanism created for
> it
> > in deployer lookup.
> >
> >  Isn't it what should have been configured?
> >
> >
> >
> > Romain Manni-Bucau
> > Twitter: @rmannibucau
> > Blog: http://rmannibucau.wordpress.com/
> > LinkedIn: http://fr.linkedin.com/in/rmannibucau
> > Github: https://github.com/rmannibucau
> >
> >
> > 2014-05-30 14:34 GMT+02:00 Andy Gumbrecht <ag...@tomitribe.com>:
> >
> > Sure Romain,
> >>
> >> The RemoteServer.java does not know what the context is (OpenEJB, TomEE,
> >> Arquillian) - So what is the service port ? (4201, 8080, ?) - Could
> maybe
> >> work it out internally from properties, but the caller already knows,
> hence
> >> the setter.
> >> If the setter is not used then it defaults to previous action, which is
> >> to use the self-determined shutdown port.
> >>
> >> The RemoteServer is/was only looking at the shutdown port (OpenEJB,
> >> Tomcat) to determine if the server is running.
> >>
> >> The Tomcat/OpenEJB shutdown port can start to accepts calls before the
> >> actual service port (Several seconds or more on a busy machine like the
> >> buildbot).
> >> So using it (in RemoteServer) to see if the server is running often
> leads
> >> to an overlap (Port already in use or bind exceptions).
> >>
> >> Giving RemoteServer the service port to monitor for a startup connection
> >> makes more sense to me, as this is the port required for access and not
> the
> >> shutdown port.
> >>
> >> Shutdown is less of an issue because the shutdown port goes down after
> >> the service port.
> >>
> >> The changes apply to usages of RemoteServer, where the service port is
> >> known.
> >>
> >> Andy.
> >>
> >>
> >>
> >> On 30/05/2014 14:09, Romain Manni-Bucau wrote:
> >>
> >>> Hi
> >>>
> >>> I'm not sure to get the goal of it.
> >>>
> >>> PortStartup is set as system property where needed (mainly arquillian)
> >>> but
> >>> doesn't add much value otherwise since it can just be not existing (I
> saw
> >>> several instances with only https or ajp configured)
> >>>
> >>> Can you detail the cause please?
> >>>
> >>>
> >>>
> >>>
> >>> Romain Manni-Bucau
> >>> Twitter: @rmannibucau
> >>> Blog: http://rmannibucau.wordpress.com/
> >>> LinkedIn: http://fr.linkedin.com/in/rmannibucau
> >>> Github: https://github.com/rmannibucau
> >>>
> >>>
> >>> 2014-05-30 13:50 GMT+02:00 <an...@apache.org>:
> >>>
> >>>  Author: andygumbrecht
> >>>> Date: Fri May 30 11:50:45 2014
> >>>> New Revision: 1598562
> >>>>
> >>>> URL: http://svn.apache.org/r1598562
> >>>> Log:
> >>>> TOMEE-1230 Provide the known server service port to RemoteServer for
> >>>> better startup monitoring.
> >>>>
> >>>> Modified:
> >>>>      tomee/tomee/trunk/arquillian/arquillian-tomee-remote/   (props
> >>>> changed)
> >>>>
> >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
> >>>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
> >>>>
> >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
> >>>> remote/src/main/java/org/apache/tomee/arquillian/
> >>>> webapp/TomEEWebappContainer.java
> >>>>
> >>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
> >>>> org/apache/openejb/config/RemoteServer.java
> >>>>
> >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> >>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
> >>>>
> >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> >>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
> >>>>
> >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> >>>> apache/openejb/tck/impl/ContainersImplTomEE.java
> >>>>
> >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> >>>> apache/openejb/tck/impl/FullRestartContainer.java
> >>>>
> >>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
> >>>> RemoteTomEEEJBContainer.java
> >>>>
> >>>> Propchange: tomee/tomee/trunk/arquillian/arquillian-tomee-remote/
> >>>>
> >>>> ------------------------------------------------------------
> >>>> ------------------
> >>>> --- svn:ignore (original)
> >>>> +++ svn:ignore Fri May 30 11:50:45 2014
> >>>> @@ -1,6 +1,8 @@
> >>>>   *.iml
> >>>>   .classpath
> >>>> +.idea
> >>>>   .project
> >>>>   .settings
> >>>>   target
> >>>>   velocity.*
> >>>> +.idea
> >>>>
> >>>> Modified:
> >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
> >>>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
> >>>> URL:
> >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/
> >>>> arquillian-tomee-remote/src/main/java/org/apache/tomee/
> >>>> arquillian/remote/RemoteTomEEContainer.java?rev=
> >>>> 1598562&r1=1598561&r2=1598562&view=diff
> >>>>
> >>>> ============================================================
> >>>> ==================
> >>>> ---
> >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
> >>>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
> >>>> (original)
> >>>> +++
> >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
> >>>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
> >>>> Fri May 30 11:50:45 2014
> >>>> @@ -71,9 +71,11 @@ public class RemoteTomEEContainer extend
> >>>>       @Override
> >>>>       public void start() throws LifecycleException {
> >>>>           // see if TomEE is already running by checking the http port
> >>>> -        if (Setup.isRunning(configuration.getHost(),
> >>>> configuration.getHttpPort())) {
> >>>> +        final int httpPort = configuration.getHttpPort();
> >>>>
> >>>> -            logger.info(String.format("TomEE found running on port
> >>>> %s",
> >>>> configuration.getHttpPort()));
> >>>> +        if (Setup.isRunning(configuration.getHost(), httpPort)) {
> >>>> +
> >>>> +            logger.info(String.format("TomEE found running on port
> >>>> %s",
> >>>> httpPort));
> >>>>
> >>>>               return;
> >>>>           }
> >>>> @@ -90,15 +92,18 @@ public class RemoteTomEEContainer extend
> >>>>
> >>>>               configure();
> >>>>
> >>>> -            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT,
> >>>> Integer.toString(configuration.getStopPort()));
> >>>> +            int stopPort = configuration.getStopPort();
> >>>> +            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT,
> >>>> Integer.toString(stopPort));
> >>>>               System.setProperty(RemoteServer.SERVER_SHUTDOWN_COMMAND,
> >>>> configuration.getStopCommand());
> >>>>               System.setProperty(RemoteServer.SERVER_SHUTDOWN_HOST,
> >>>> configuration.getStopHost());
> >>>> +
> >>>>               if (configuration.isDebug()) {
> >>>>
> System.setProperty(RemoteServer.OPENEJB_SERVER_DEBUG,
> >>>> "true");
> >>>>                   System.setProperty(RemoteServer.SERVER_DEBUG_PORT,
> >>>> Integer.toString(configuration.getDebugPort()));
> >>>>               }
> >>>> -            container = new RemoteServer();
> >>>>
> >>>> +            container = new RemoteServer();
> >>>> +            container.setPortStartup(httpPort);
> >>>>               container.start(args(), "start", true);
> >>>>               container.killOnExit();
> >>>>
> >>>>
> >>>> Modified:
> >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
> >>>> remote/src/main/java/org/apache/tomee/arquillian/
> >>>> webapp/TomEEWebappContainer.java
> >>>> URL:
> >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/
> >>>> arquillian-tomee-webapp-remote/src/main/java/org/
> >>>> apache/tomee/arquillian/webapp/TomEEWebappContainer.
> >>>> java?rev=1598562&r1=1598561&r2=1598562&view=diff
> >>>>
> >>>> ============================================================
> >>>> ==================
> >>>> ---
> >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
> >>>> remote/src/main/java/org/apache/tomee/arquillian/
> >>>> webapp/TomEEWebappContainer.java
> >>>> (original)
> >>>> +++
> >>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
> >>>> remote/src/main/java/org/apache/tomee/arquillian/
> >>>> webapp/TomEEWebappContainer.java
> >>>> Fri May 30 11:50:45 2014
> >>>> @@ -54,9 +54,10 @@ public class TomEEWebappContainer extend
> >>>>       @Override
> >>>>       public void start() throws LifecycleException {
> >>>>           // see if TomEE is already running by checking the http port
> >>>> -        if (Setup.isRunning(configuration.getHost(),
> >>>> configuration.getHttpPort())) {
> >>>> +        int httpPort = configuration.getHttpPort();
> >>>> +        if (Setup.isRunning(configuration.getHost(), httpPort)) {
> >>>>
> >>>> -            logger.info(String.format("Tomcat found running on port
> >>>> %s",
> >>>> configuration.getHttpPort()));
> >>>> +            logger.info(String.format("Tomcat found running on port
> >>>> %s",
> >>>> httpPort));
> >>>>
> >>>>               return;
> >>>>           }
> >>>> @@ -141,12 +142,13 @@ public class TomEEWebappContainer extend
> >>>>               if (!wereOpenejbHomeSet &&
> >>>> configuration.isUseInstallerServlet()) {
> >>>>                   // instead of calling the Installer, let's just do
> >>>> like
> >>>> users do
> >>>>                   // call the servlet installer instead
> >>>> -                final String baseUrl = "http://" +
> >>>> configuration.getHost() + ":" + configuration.getHttpPort() +
> >>>> "/tomee/installer";
> >>>> +                final String baseUrl = "http://" +
> >>>> configuration.getHost() + ":" + httpPort + "/tomee/installer";
> >>>>
> >>>>                   assert installer != null;
> >>>>                   installer.addTomEEAdminConfInTomcatUsers(true);
> >>>>
> >>>>                   final RemoteServer tmpContainer = new
> RemoteServer();
> >>>> +                tmpContainer.setPortStartup(httpPort);
> >>>>                   tmpContainer.start();
> >>>>
> >>>>                   final URL url = new URL(baseUrl);
> >>>> @@ -156,7 +158,7 @@ public class TomEEWebappContainer extend
> >>>>                       final URLConnection uc = url.openConnection();
> >>>>                       // dG9tZWU6dG9tZWU= --> Base64 of tomee:tomee
> >>>>                       final String authorizationString = "Basic
> >>>> dG9tZWU6dG9tZWU=";
> >>>> -                    uc.setRequestProperty ("Authorization",
> >>>> authorizationString);
> >>>> +                    uc.setRequestProperty("Authorization",
> >>>> authorizationString);
> >>>>                       try {
> >>>>                           final InputStream is = uc.getInputStream();
> >>>>                           org.apache.openejb.loader.IO.slurp(is);
> >>>> @@ -173,6 +175,7 @@ public class TomEEWebappContainer extend
> >>>>               }
> >>>>
> >>>>               container = new RemoteServer();
> >>>> +            container.setPortStartup(httpPort);
> >>>>
> >>>>
> container.start(Arrays.asList("-Dorg.apache.openejb.servlet.filters="
> >>>> +
> >>>> ArquillianFilterRunner.class.getName() + "=" +
> >>>> ServletMethodExecutor.ARQUILLIAN_SERVLET_MAPPING), "start", true);
> >>>>               container.killOnExit();
> >>>>           } catch (final Exception e) {
> >>>>
> >>>> Modified:
> >>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
> >>>> org/apache/openejb/config/RemoteServer.java
> >>>> URL:
> >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/container/
> >>>> openejb-core/src/main/java/org/apache/openejb/config/
> >>>> RemoteServer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
> >>>>
> >>>> ============================================================
> >>>> ==================
> >>>> ---
> >>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
> >>>> org/apache/openejb/config/RemoteServer.java
> >>>> (original)
> >>>> +++
> >>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
> >>>> org/apache/openejb/config/RemoteServer.java
> >>>> Fri May 30 11:50:45 2014
> >>>> @@ -50,6 +50,8 @@ public class RemoteServer {
> >>>>       public static final String SERVER_SHUTDOWN_HOST =
> >>>> "server.shutdown.host";
> >>>>       public static final String SERVER_SHUTDOWN_COMMAND =
> >>>> "server.shutdown.command";
> >>>>       public static final String OPENEJB_SERVER_DEBUG =
> >>>> "openejb.server.debug";
> >>>> +    public static final String START = "start";
> >>>> +    public static final String STOP = "stop";
> >>>>
> >>>>       private boolean debug = options.get(OPENEJB_SERVER_DEBUG,
> false);
> >>>>       private final boolean profile = options.get("openejb.server.
> >>>> profile",
> >>>> false);
> >>>> @@ -66,10 +68,11 @@ public class RemoteServer {
> >>>>       private Process server;
> >>>>       private final int tries;
> >>>>       private final boolean verbose;
> >>>> -    private final int shutdownPort;
> >>>> +    private final int portShutdown;
> >>>>       private final String host;
> >>>>       private final String command;
> >>>>       private File home;
> >>>> +    private int portStartup;
> >>>>
> >>>>       public RemoteServer() {
> >>>>           this(options.get("connect.tries", 60),
> options.get("verbose",
> >>>> false));
> >>>> @@ -81,7 +84,8 @@ public class RemoteServer {
> >>>>           home = getHome();
> >>>>           tomcat = (home != null) && (new File(new File(home, "bin"),
> >>>> "catalina.sh").exists());
> >>>>
> >>>> -        shutdownPort = options.get(SERVER_SHUTDOWN_PORT, tomcat ?
> >>>> 8005 :
> >>>> 4200);
> >>>> +        portShutdown = options.get(SERVER_SHUTDOWN_PORT, tomcat ?
> >>>> 8005 :
> >>>> 4200);
> >>>> +        portStartup = portShutdown;
> >>>>           command = options.get(SERVER_SHUTDOWN_COMMAND, "SHUTDOWN");
> >>>>           host = options.get(SERVER_SHUTDOWN_HOST, "localhost");
> >>>>       }
> >>>> @@ -97,10 +101,10 @@ public class RemoteServer {
> >>>>       }
> >>>>
> >>>>       public static void main(final String[] args) {
> >>>> -        assert args.length > 0 : "no arguments supplied: valid
> argumen
> >>>> -efts are 'start' or 'stop'";
> >>>> -        if (args[0].equalsIgnoreCase("start")) {
> >>>> +        assert args.length > 0 : "no arguments supplied: valid
> >>>> arguments
> >>>> are 'start' or 'stop'";
> >>>> +        if (args[0].equalsIgnoreCase(START)) {
> >>>>               new RemoteServer().start();
> >>>> -        } else if (args[0].equalsIgnoreCase("stop")) {
> >>>> +        } else if (args[0].equalsIgnoreCase(STOP)) {
> >>>>               final RemoteServer remoteServer = new RemoteServer();
> >>>>               remoteServer.serverHasAlreadyBeenStarted = false;
> >>>>               remoteServer.stop();
> >>>> @@ -109,8 +113,16 @@ public class RemoteServer {
> >>>>           }
> >>>>       }
> >>>>
> >>>> +    public int getPortStartup() {
> >>>> +        return this.portStartup;
> >>>> +    }
> >>>> +
> >>>> +    public void setPortStartup(int portStartup) {
> >>>> +        this.portStartup = portStartup;
> >>>> +    }
> >>>> +
> >>>>       public Properties getProperties() {
> >>>> -        return properties;
> >>>> +        return this.properties;
> >>>>       }
> >>>>
> >>>>       public void destroy() {
> >>>> @@ -125,7 +137,7 @@ public class RemoteServer {
> >>>>       }
> >>>>
> >>>>       public void start() {
> >>>> -        start(Collections.<String>emptyList(), "start", true);
> >>>> +        start(Collections.<String>emptyList(), START, true);
> >>>>       }
> >>>>
> >>>>       public void start(final List<String> additionalArgs, final
> String
> >>>> cmd, final boolean checkPortAvailable) {
> >>>> @@ -134,9 +146,12 @@ public class RemoteServer {
> >>>>
> >>>>       private void cmd(final List<String> additionalArgs, final String
> >>>> cmd,
> >>>> final boolean checkPortAvailable) {
> >>>>           boolean ok = true;
> >>>> +        final int port = START.equals(cmd) ? portStartup :
> >>>> portShutdown;
> >>>> +
> >>>>           if (checkPortAvailable) {
> >>>> -            ok = !connect();
> >>>> +            ok = !connect(port, 1);
> >>>>           }
> >>>> +
> >>>>           if (ok) {
> >>>>               try {
> >>>>                   if (verbose) {
> >>>> @@ -170,7 +185,7 @@ public class RemoteServer {
> >>>>
> >>>>                   final String java;
> >>>>                   final boolean isWindows = System.getProperty("
> os.name
> >>>> ",
> >>>> "unknown").toLowerCase().startsWith("windows");
> >>>> -                if (isWindows && "start".equals(cmd) &&
> >>>> options.get("server.windows.fork", false)) {
> >>>> +                if (isWindows && START.equals(cmd) &&
> >>>> options.get("server.windows.fork", false)) {
> >>>>                       // run and forget
> >>>>                       java = new File(System.getProperty("java.home"),
> >>>> "bin/javaw").getAbsolutePath();
> >>>>                   } else {
> >>>> @@ -298,7 +313,7 @@ public class RemoteServer {
> >>>>                   }
> >>>>
> >>>>                   if (cmd == null) {
> >>>> -                    argsList.add("start");
> >>>> +                    argsList.add(START);
> >>>>                   } else {
> >>>>                       argsList.add(cmd);
> >>>>                   }
> >>>> @@ -313,9 +328,9 @@ public class RemoteServer {
> >>>>                   final Process process = Runtime.getRuntime().exec(
> >>>> args);
> >>>>                   Pipe.pipeOut(process); // why would we need to
> >>>> redirect
> >>>> System.in to the process, TomEE doesn't use it
> >>>>
> >>>> -                if ("start".equals(cmd)) {
> >>>> +                if (START.equals(cmd)) {
> >>>>                       server = process;
> >>>> -                } else if ("stop".equals(cmd) && server != null) {
> >>>> +                } else if (STOP.equals(cmd) && server != null) {
> >>>>                       server.waitFor();
> >>>>                   }
> >>>>
> >>>> @@ -324,11 +339,12 @@ public class RemoteServer {
> >>>>               }
> >>>>               if (checkPortAvailable) {
> >>>>                   if (debug) {
> >>>> -                    if (!connect(Integer.MAX_VALUE)) {
> >>>> +
> >>>> +                    if (!connect(port, Integer.MAX_VALUE)) {
> >>>>                           throw new OpenEJBRuntimeException("Could not
> >>>> connect to server");
> >>>>                       }
> >>>>                   } else {
> >>>> -                    if (!connect(tries)) {
> >>>> +                    if (!connect(port, tries)) {
> >>>>                           throw new OpenEJBRuntimeException("Could not
> >>>> connect to server");
> >>>>                       }
> >>>>                   }
> >>>> @@ -443,7 +459,7 @@ public class RemoteServer {
> >>>>           if (verbose) {
> >>>>               System.out.print("Waiting for TomEE shutdown.");
> >>>>           }
> >>>> -        while (connect()) {
> >>>> +        while (connect(portShutdown, tries)) {
> >>>>               Thread.sleep(1000);
> >>>>               if (verbose) {
> >>>>                   System.out.print(".");
> >>>> @@ -459,7 +475,7 @@ public class RemoteServer {
> >>>>           Socket socket = null;
> >>>>           OutputStream stream = null;
> >>>>           try {
> >>>> -            socket = new Socket(host, shutdownPort);
> >>>> +            socket = new Socket(host, portShutdown);
> >>>>               stream = socket.getOutputStream();
> >>>>               final String shutdown = command +
> >>>> Character.toString((char)
> >>>> 0);
> >>>>               for (int i = 0; i < shutdown.length(); i++) {
> >>>> @@ -478,11 +494,7 @@ public class RemoteServer {
> >>>>           }
> >>>>       }
> >>>>
> >>>> -    private boolean connect() {
> >>>> -        return connect(1);
> >>>> -    }
> >>>> -
> >>>> -    private boolean connect(int tries) {
> >>>> +    private boolean connect(final int port, int tries) {
> >>>>           if (verbose) {
> >>>>               System.out.println("[] CONNECT ATTEMPT " + (this.tries -
> >>>> tries));
> >>>>           }
> >>>> @@ -490,7 +502,7 @@ public class RemoteServer {
> >>>>           Socket s = null;
> >>>>           try {
> >>>>               s = new Socket();
> >>>> -            s.connect(new InetSocketAddress(host, shutdownPort),
> 1000);
> >>>> +            s.connect(new InetSocketAddress(this.host, port), 1000);
> >>>>               s.getOutputStream().close();
> >>>>               if (verbose) {
> >>>>                   System.out.println("[] CONNECTED IN " + (this.tries
> -
> >>>> tries));
> >>>> @@ -507,7 +519,7 @@ public class RemoteServer {
> >>>>                   } catch (final Exception e2) {
> >>>>                       e.printStackTrace();
> >>>>                   }
> >>>> -                return connect(--tries);
> >>>> +                return connect(port, --tries);
> >>>>               }
> >>>>           } finally {
> >>>>               if (s != null) {
> >>>>
> >>>> Modified:
> >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> >>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
> >>>> URL:
> >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-
> >>>> maven-plugin/src/main/java/org/apache/openejb/maven/
> >>>> plugin/AbstractTomEEMojo.java?rev=1598562&r1=1598561&r2=
> >>>> 1598562&view=diff
> >>>>
> >>>> ============================================================
> >>>> ==================
> >>>> ---
> >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> >>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
> >>>> (original)
> >>>> +++
> >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> >>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
> >>>> Fri May 30 11:50:45 2014
> >>>> @@ -81,6 +81,7 @@ public abstract class AbstractTomEEMojo
> >>>>       private static final String REMOVE_PREFIX = "remove:";
> >>>>       public static final String QUIT_CMD = "quit";
> >>>>       public static final String EXIT_CMD = "exit";
> >>>> +    public static final String TOM_EE = "TomEE";
> >>>>
> >>>>       @Component
> >>>>       protected ArtifactFactory factory;
> >>>> @@ -258,7 +259,7 @@ public abstract class AbstractTomEEMojo
> >>>>
> >>>>       protected File deployedFile = null;
> >>>>       protected RemoteServer server = null;
> >>>> -    protected String container = "TomEE";
> >>>> +    protected String container = TOM_EE;
> >>>>
> >>>>       @Override
> >>>>       public void execute() throws MojoExecutionException,
> >>>> MojoFailureException {
> >>>> @@ -711,7 +712,10 @@ public abstract class AbstractTomEEMojo
> >>>>
> >>>>           addShutdownHooks(server); // some shutdown hooks are always
> >>>> added
> >>>> (see UpdatableTomEEMojo)
> >>>>
> >>>> -        if ("TomEE".equals(container)) {
> >>>> +        if (TOM_EE.equals(container)) {
> >>>> +
> >>>> +            server.setPortStartup(tomeeHttpPort);
> >>>> +
> >>>>               getLog().info("Running '" +
> >>>> getClass().getSimpleName().replace("TomEEMojo",
> >>>> "").toLowerCase(Locale.ENGLISH)
> >>>>                   + "'. Configured TomEE in plugin is " + tomeeHost +
> >>>> ":" +
> >>>> tomeeHttpPort
> >>>>                   + " (plugin shutdown port is " + tomeeShutdownPort +
> >>>> ")");
> >>>> @@ -998,7 +1002,7 @@ public abstract class AbstractTomEEMojo
> >>>>
> >>>>               File file = new File(catalinaBase, "conf/tomee.xml");
> >>>>               if (file.exists()) {
> >>>> -                container = "TomEE";
> >>>> +                container = TOM_EE;
> >>>>               } else {
> >>>>                   container = "OpenEJB";
> >>>>                   file = new File(catalinaBase, "conf/openejb.xml");
> >>>>
> >>>> Modified:
> >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> >>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
> >>>> URL:
> >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-
> >>>> maven-plugin/src/main/java/org/apache/openejb/maven/
> >>>> plugin/runner/ExecRunner.java?rev=1598562&r1=1598561&r2=
> >>>> 1598562&view=diff
> >>>>
> >>>> ============================================================
> >>>> ==================
> >>>> ---
> >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> >>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
> >>>> (original)
> >>>> +++
> >>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
> >>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
> >>>> Fri May 30 11:50:45 2014
> >>>> @@ -28,6 +28,7 @@ import java.io.InputStream;
> >>>>   import java.io.InputStreamReader;
> >>>>   import java.util.ArrayList;
> >>>>   import java.util.Collection;
> >>>> +import java.util.Collections;
> >>>>   import java.util.LinkedList;
> >>>>   import java.util.List;
> >>>>   import java.util.Locale;
> >>>> @@ -83,7 +84,9 @@ public class ExecRunner {
> >>>>           if (scripts != null) { // dont use filefilter to avoid
> >>>> dependency
> >>>> issue
> >>>>               for (final File f : scripts) {
> >>>>                   if (f.getName().endsWith(".sh") && !f.canExecute())
> {
> >>>> -                    f.setExecutable(true, true);
> >>>> +                    if(!f.setExecutable(true, true)){
> >>>> +                        System.err.println("Failed make file
> >>>> executable:
> >>>> " + f);
> >>>> +                    }
> >>>>                   }
> >>>>               }
> >>>>           }
> >>>> @@ -101,7 +104,9 @@ public class ExecRunner {
> >>>>                       throw new IllegalArgumentException("Can't find
> >>>>  " +
> >>>> cmd);
> >>>>                   }
> >>>>                   if (cmd.endsWith(".sh")) {
> >>>> -                    scriptFile.setExecutable(true);
> >>>> +                    if(!scriptFile.setExecutable(true)){
> >>>> +                        System.err.println("Failed make script file
> >>>> executable: " + scriptFile);
> >>>> +                    }
> >>>>                   }
> >>>>               }
> >>>>           }
> >>>> @@ -117,15 +122,15 @@ public class ExecRunner {
> >>>>               System.setProperty("server.shutdown.command",
> >>>> config.getProperty("shutdownCommand"));
> >>>>
> >>>>               final RemoteServer server = new RemoteServer();
> >>>> +            server.setPortStartup(Integer.parseInt(parser.http()));
> >>>> +
> >>>>               if (config.containsKey("additionalClasspath")) {
> >>>>
> >>>>   server.setAdditionalClasspath(config.getProperty("
> >>>> additionalClasspath"));
> >>>>               }
> >>>>
> >>>>               final List<String> jvmArgs = new LinkedList<String>();
> >>>>               if (additionalArgs != null) {
> >>>> -                for (final String kv : additionalArgs.split(" ")) {
> >>>> -                    jvmArgs.add(kv);
> >>>> -                }
> >>>> +                Collections.addAll(jvmArgs, additionalArgs.split("
> "));
> >>>>               }
> >>>>               for (final String k : config.stringPropertyNames()) {
> >>>>                   if (k.startsWith("jvmArg.")) {
> >>>>
> >>>> Modified:
> >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> >>>> apache/openejb/tck/impl/ContainersImplTomEE.java
> >>>> URL:
> >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-
> >>>> common/src/main/java/org/apache/openejb/tck/impl/
> >>>> ContainersImplTomEE.java?rev=1598562&r1=1598561&r2=1598562&view=diff
> >>>>
> >>>> ============================================================
> >>>> ==================
> >>>> ---
> >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> >>>> apache/openejb/tck/impl/ContainersImplTomEE.java
> >>>> (original)
> >>>> +++
> >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> >>>> apache/openejb/tck/impl/ContainersImplTomEE.java
> >>>> Fri May 30 11:50:45 2014
> >>>> @@ -32,7 +32,6 @@ import java.io.File;
> >>>>   import java.io.IOException;
> >>>>   import java.io.InputStream;
> >>>>   import java.util.Arrays;
> >>>> -import java.util.Collections;
> >>>>   import java.util.Properties;
> >>>>
> >>>>   /**
> >>>> @@ -45,6 +44,7 @@ public class ContainersImplTomEE extends
> >>>>       private Exception exception;
> >>>>       private AppInfo appInfo;
> >>>>       private File currentFile = null;
> >>>> +    private int port = 8080;
> >>>>
> >>>>       private Deployer lookup() {
> >>>>           final Options options = new Options(System.getProperties());
> >>>> @@ -53,8 +53,9 @@ public class ContainersImplTomEE extends
> >>>>           String port = System.getProperty("server.http.port");
> >>>>           if (port != null) {
> >>>>               props.put(Context.PROVIDER_URL,
> >>>> options.get(Context.PROVIDER_URL,"http://localhost:" + port +
> >>>> "/tomee/ejb"));
> >>>> +            this.port = Integer.parseInt(port);
> >>>>           } else {
> >>>> -            throw new OpenEJBTCKRuntimeException("Please set the
> tomee
> >>>> port as a system property");
> >>>> +            throw new OpenEJBTCKRuntimeException("Please set the
> tomee
> >>>> port using the system property 'server.http.port'");
> >>>>           }
> >>>>
> >>>>           final String deployerJndi =
> >>>> System.getProperty("openejb.deployer.jndiname",
> >>>> "openejb/DeployerBusinessRemote");
> >>>> @@ -70,6 +71,7 @@ public class ContainersImplTomEE extends
> >>>>           System.out.println("ContainersImpl=" +
> >>>> ContainersImplTomEE.class.getName());
> >>>>           System.out.println("Initialized ContainersImplTomEE " +
> >>>> (++count));
> >>>>           server = new RemoteServer();
> >>>> +        server.setPortStartup(this.port);
> >>>>       }
> >>>>       @Override
> >>>>       public boolean deploy(InputStream archive, String name) throws
> >>>> IOException {
> >>>> @@ -143,8 +145,10 @@ public class ContainersImplTomEE extends
> >>>>       }
> >>>>
> >>>>       protected File getFile(String name) {
> >>>> -        final File dir = new File(tmpDir, Math.random()+"");
> >>>> -        dir.mkdir();
> >>>> +        final File dir = new File(tmpDir, Math.random() + "");
> >>>> +        if (!dir.exists() && !dir.mkdir()) {
> >>>> +            throw new RuntimeException("Failed to create directory:
> " +
> >>>> dir);
> >>>> +        }
> >>>>           dir.deleteOnExit();
> >>>>           return new File(dir, name);
> >>>>       }
> >>>>
> >>>> Modified:
> >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> >>>> apache/openejb/tck/impl/FullRestartContainer.java
> >>>> URL:
> >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-
> >>>> common/src/main/java/org/apache/openejb/tck/impl/
> >>>> FullRestartContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
> >>>>
> >>>> ============================================================
> >>>> ==================
> >>>> ---
> >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> >>>> apache/openejb/tck/impl/FullRestartContainer.java
> >>>> (original)
> >>>> +++
> >>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
> >>>> apache/openejb/tck/impl/FullRestartContainer.java
> >>>> Fri May 30 11:50:45 2014
> >>>> @@ -71,7 +71,14 @@ public class FullRestartContainer extend
> >>>>           System.out.println(currentFile);
> >>>>           writeToFile(currentFile, archive);
> >>>>
> >>>> -        server = new RemoteServer(100, true);
> >>>> +        String port = System.getProperty("server.http.port");
> >>>> +        if (port != null) {
> >>>> +            server = new RemoteServer(100, true);
> >>>> +            server.setPortStartup(Integer.parseInt(port));
> >>>> +        } else {
> >>>> +            throw new OpenEJBTCKRuntimeException("Please set the
> tomee
> >>>> port using the system property 'server.http.port'");
> >>>> +        }
> >>>> +
> >>>>           try {
> >>>>               server.start();
> >>>>           } catch (RuntimeException e) {
> >>>> @@ -84,7 +91,11 @@ public class FullRestartContainer extend
> >>>>
> >>>>       @Override
> >>>>       public void undeploy(String name) throws IOException {
> >>>> -        server.destroy();
> >>>> +
> >>>> +        if (null != server) {
> >>>> +            server.destroy();
> >>>> +        }
> >>>> +
> >>>>           File folder = new File(currentFile.getParentFile(),
> >>>> currentFile.getName().substring(0, currentFile.getName().length() -
> >>>> 4));
> >>>>           if (folder.exists()) {
> >>>>               delete(folder);
> >>>> @@ -109,9 +120,9 @@ public class FullRestartContainer extend
> >>>>           String port = System.getProperty("server.http.port");
> >>>>           if (port != null) {
> >>>>               System.out.println("provider url = " + "
> http://localhost:"
> >>>> +
> >>>> port + "/tomee/ejb");
> >>>> -            props.put(Context.PROVIDER_URL,
> >>>> options.get(Context.PROVIDER_URL,"http://localhost:" + port +
> >>>> "/tomee/ejb"));
> >>>> +            props.put(Context.PROVIDER_URL,
> >>>> options.get(Context.PROVIDER_URL, "http://localhost:" + port +
> >>>> "/tomee/ejb"));
> >>>>           } else {
> >>>> -            throw new OpenEJBTCKRuntimeException("Please set the
> tomee
> >>>> port as a system property");
> >>>> +            throw new OpenEJBTCKRuntimeException("Please set the
> tomee
> >>>> port using the system property 'server.http.port'");
> >>>>           }
> >>>>
> >>>>           try {
> >>>>
> >>>> Modified:
> >>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
> >>>> RemoteTomEEEJBContainer.java
> >>>> URL:
> >>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/
> >>>> apache-tomee/src/main/java/org/apache/tomee/
> >>>> RemoteTomEEEJBContainer.java?rev=1598562&r1=1598561&r2=
> >>>> 1598562&view=diff
> >>>>
> >>>> ============================================================
> >>>> ==================
> >>>> ---
> >>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
> >>>> RemoteTomEEEJBContainer.java
> >>>> (original)
> >>>> +++
> >>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
> >>>> RemoteTomEEEJBContainer.java
> >>>> Fri May 30 11:50:45 2014
> >>>> @@ -92,6 +92,7 @@ public class RemoteTomEEEJBContainer ext
> >>>>               try {
> >>>>                   instance = new RemoteTomEEEJBContainer();
> >>>>                   instance.container = new RemoteServer();
> >>>> +
> >>>>   instance.container.setPortStartup(Integer.parseInt(parser.http()));
> >>>>                   instance.container.start();
> >>>>                   instance.context = new InitialContext(new
> >>>> Properties() {{
> >>>>                       setProperty(Context.INITIAL_CONTEXT_FACTORY,
> >>>> RemoteInitialContextFactory.class.getName());
> >>>>
> >>>>
> >>>>
> >>>>
> >> --
> >>   Andy Gumbrecht
> >>
> >>   http://www.tomitribe.com
> >>   agumbrecht@tomitribe.com
> >>   https://twitter.com/AndyGeeDe
> >>
> >>   TomEE treibt Tomitribe! | http://tomee.apache.org
> >>
> >>
> >
>

Re: svn commit: r1598562 - in /tomee/tomee/trunk: arquillian/arquillian-tomee-remote/ arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/ arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/w...

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Hmm, checking protected Deployer deployer() throws NamingException in
TomEEContainer we should make retry number configurable in arquillian.xml I
think (TomEEConfiguration). Default to 5 with a pause of 200ms doesn't
sound that good, I'd go for a default duration of 20s with a pause of
100ms. Wdyt?



Romain Manni-Bucau
Twitter: @rmannibucau
Blog: http://rmannibucau.wordpress.com/
LinkedIn: http://fr.linkedin.com/in/rmannibucau
Github: https://github.com/rmannibucau


2014-05-30 14:41 GMT+02:00 Romain Manni-Bucau <rm...@gmail.com>:

> Hmm
>
> actually RemoteServer doesn't need it. I think you see the issue with
> arquillian mainly and in this case we have a retry mecanism created for it
> in deployer lookup.
>
>  Isn't it what should have been configured?
>
>
>
> Romain Manni-Bucau
> Twitter: @rmannibucau
> Blog: http://rmannibucau.wordpress.com/
> LinkedIn: http://fr.linkedin.com/in/rmannibucau
> Github: https://github.com/rmannibucau
>
>
> 2014-05-30 14:34 GMT+02:00 Andy Gumbrecht <ag...@tomitribe.com>:
>
> Sure Romain,
>>
>> The RemoteServer.java does not know what the context is (OpenEJB, TomEE,
>> Arquillian) - So what is the service port ? (4201, 8080, ?) - Could maybe
>> work it out internally from properties, but the caller already knows, hence
>> the setter.
>> If the setter is not used then it defaults to previous action, which is
>> to use the self-determined shutdown port.
>>
>> The RemoteServer is/was only looking at the shutdown port (OpenEJB,
>> Tomcat) to determine if the server is running.
>>
>> The Tomcat/OpenEJB shutdown port can start to accepts calls before the
>> actual service port (Several seconds or more on a busy machine like the
>> buildbot).
>> So using it (in RemoteServer) to see if the server is running often leads
>> to an overlap (Port already in use or bind exceptions).
>>
>> Giving RemoteServer the service port to monitor for a startup connection
>> makes more sense to me, as this is the port required for access and not the
>> shutdown port.
>>
>> Shutdown is less of an issue because the shutdown port goes down after
>> the service port.
>>
>> The changes apply to usages of RemoteServer, where the service port is
>> known.
>>
>> Andy.
>>
>>
>>
>> On 30/05/2014 14:09, Romain Manni-Bucau wrote:
>>
>>> Hi
>>>
>>> I'm not sure to get the goal of it.
>>>
>>> PortStartup is set as system property where needed (mainly arquillian)
>>> but
>>> doesn't add much value otherwise since it can just be not existing (I saw
>>> several instances with only https or ajp configured)
>>>
>>> Can you detail the cause please?
>>>
>>>
>>>
>>>
>>> Romain Manni-Bucau
>>> Twitter: @rmannibucau
>>> Blog: http://rmannibucau.wordpress.com/
>>> LinkedIn: http://fr.linkedin.com/in/rmannibucau
>>> Github: https://github.com/rmannibucau
>>>
>>>
>>> 2014-05-30 13:50 GMT+02:00 <an...@apache.org>:
>>>
>>>  Author: andygumbrecht
>>>> Date: Fri May 30 11:50:45 2014
>>>> New Revision: 1598562
>>>>
>>>> URL: http://svn.apache.org/r1598562
>>>> Log:
>>>> TOMEE-1230 Provide the known server service port to RemoteServer for
>>>> better startup monitoring.
>>>>
>>>> Modified:
>>>>      tomee/tomee/trunk/arquillian/arquillian-tomee-remote/   (props
>>>> changed)
>>>>
>>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
>>>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>>>>
>>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
>>>> remote/src/main/java/org/apache/tomee/arquillian/
>>>> webapp/TomEEWebappContainer.java
>>>>
>>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
>>>> org/apache/openejb/config/RemoteServer.java
>>>>
>>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>>>>
>>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
>>>>
>>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>>> apache/openejb/tck/impl/ContainersImplTomEE.java
>>>>
>>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>>> apache/openejb/tck/impl/FullRestartContainer.java
>>>>
>>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
>>>> RemoteTomEEEJBContainer.java
>>>>
>>>> Propchange: tomee/tomee/trunk/arquillian/arquillian-tomee-remote/
>>>>
>>>> ------------------------------------------------------------
>>>> ------------------
>>>> --- svn:ignore (original)
>>>> +++ svn:ignore Fri May 30 11:50:45 2014
>>>> @@ -1,6 +1,8 @@
>>>>   *.iml
>>>>   .classpath
>>>> +.idea
>>>>   .project
>>>>   .settings
>>>>   target
>>>>   velocity.*
>>>> +.idea
>>>>
>>>> Modified:
>>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
>>>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/
>>>> arquillian-tomee-remote/src/main/java/org/apache/tomee/
>>>> arquillian/remote/RemoteTomEEContainer.java?rev=
>>>> 1598562&r1=1598561&r2=1598562&view=diff
>>>>
>>>> ============================================================
>>>> ==================
>>>> ---
>>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
>>>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>>>> (original)
>>>> +++
>>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
>>>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>>>> Fri May 30 11:50:45 2014
>>>> @@ -71,9 +71,11 @@ public class RemoteTomEEContainer extend
>>>>       @Override
>>>>       public void start() throws LifecycleException {
>>>>           // see if TomEE is already running by checking the http port
>>>> -        if (Setup.isRunning(configuration.getHost(),
>>>> configuration.getHttpPort())) {
>>>> +        final int httpPort = configuration.getHttpPort();
>>>>
>>>> -            logger.info(String.format("TomEE found running on port
>>>> %s",
>>>> configuration.getHttpPort()));
>>>> +        if (Setup.isRunning(configuration.getHost(), httpPort)) {
>>>> +
>>>> +            logger.info(String.format("TomEE found running on port
>>>> %s",
>>>> httpPort));
>>>>
>>>>               return;
>>>>           }
>>>> @@ -90,15 +92,18 @@ public class RemoteTomEEContainer extend
>>>>
>>>>               configure();
>>>>
>>>> -            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT,
>>>> Integer.toString(configuration.getStopPort()));
>>>> +            int stopPort = configuration.getStopPort();
>>>> +            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT,
>>>> Integer.toString(stopPort));
>>>>               System.setProperty(RemoteServer.SERVER_SHUTDOWN_COMMAND,
>>>> configuration.getStopCommand());
>>>>               System.setProperty(RemoteServer.SERVER_SHUTDOWN_HOST,
>>>> configuration.getStopHost());
>>>> +
>>>>               if (configuration.isDebug()) {
>>>>                   System.setProperty(RemoteServer.OPENEJB_SERVER_DEBUG,
>>>> "true");
>>>>                   System.setProperty(RemoteServer.SERVER_DEBUG_PORT,
>>>> Integer.toString(configuration.getDebugPort()));
>>>>               }
>>>> -            container = new RemoteServer();
>>>>
>>>> +            container = new RemoteServer();
>>>> +            container.setPortStartup(httpPort);
>>>>               container.start(args(), "start", true);
>>>>               container.killOnExit();
>>>>
>>>>
>>>> Modified:
>>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
>>>> remote/src/main/java/org/apache/tomee/arquillian/
>>>> webapp/TomEEWebappContainer.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/
>>>> arquillian-tomee-webapp-remote/src/main/java/org/
>>>> apache/tomee/arquillian/webapp/TomEEWebappContainer.
>>>> java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>>>
>>>> ============================================================
>>>> ==================
>>>> ---
>>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
>>>> remote/src/main/java/org/apache/tomee/arquillian/
>>>> webapp/TomEEWebappContainer.java
>>>> (original)
>>>> +++
>>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
>>>> remote/src/main/java/org/apache/tomee/arquillian/
>>>> webapp/TomEEWebappContainer.java
>>>> Fri May 30 11:50:45 2014
>>>> @@ -54,9 +54,10 @@ public class TomEEWebappContainer extend
>>>>       @Override
>>>>       public void start() throws LifecycleException {
>>>>           // see if TomEE is already running by checking the http port
>>>> -        if (Setup.isRunning(configuration.getHost(),
>>>> configuration.getHttpPort())) {
>>>> +        int httpPort = configuration.getHttpPort();
>>>> +        if (Setup.isRunning(configuration.getHost(), httpPort)) {
>>>>
>>>> -            logger.info(String.format("Tomcat found running on port
>>>> %s",
>>>> configuration.getHttpPort()));
>>>> +            logger.info(String.format("Tomcat found running on port
>>>> %s",
>>>> httpPort));
>>>>
>>>>               return;
>>>>           }
>>>> @@ -141,12 +142,13 @@ public class TomEEWebappContainer extend
>>>>               if (!wereOpenejbHomeSet &&
>>>> configuration.isUseInstallerServlet()) {
>>>>                   // instead of calling the Installer, let's just do
>>>> like
>>>> users do
>>>>                   // call the servlet installer instead
>>>> -                final String baseUrl = "http://" +
>>>> configuration.getHost() + ":" + configuration.getHttpPort() +
>>>> "/tomee/installer";
>>>> +                final String baseUrl = "http://" +
>>>> configuration.getHost() + ":" + httpPort + "/tomee/installer";
>>>>
>>>>                   assert installer != null;
>>>>                   installer.addTomEEAdminConfInTomcatUsers(true);
>>>>
>>>>                   final RemoteServer tmpContainer = new RemoteServer();
>>>> +                tmpContainer.setPortStartup(httpPort);
>>>>                   tmpContainer.start();
>>>>
>>>>                   final URL url = new URL(baseUrl);
>>>> @@ -156,7 +158,7 @@ public class TomEEWebappContainer extend
>>>>                       final URLConnection uc = url.openConnection();
>>>>                       // dG9tZWU6dG9tZWU= --> Base64 of tomee:tomee
>>>>                       final String authorizationString = "Basic
>>>> dG9tZWU6dG9tZWU=";
>>>> -                    uc.setRequestProperty ("Authorization",
>>>> authorizationString);
>>>> +                    uc.setRequestProperty("Authorization",
>>>> authorizationString);
>>>>                       try {
>>>>                           final InputStream is = uc.getInputStream();
>>>>                           org.apache.openejb.loader.IO.slurp(is);
>>>> @@ -173,6 +175,7 @@ public class TomEEWebappContainer extend
>>>>               }
>>>>
>>>>               container = new RemoteServer();
>>>> +            container.setPortStartup(httpPort);
>>>>
>>>>   container.start(Arrays.asList("-Dorg.apache.openejb.servlet.filters="
>>>> +
>>>> ArquillianFilterRunner.class.getName() + "=" +
>>>> ServletMethodExecutor.ARQUILLIAN_SERVLET_MAPPING), "start", true);
>>>>               container.killOnExit();
>>>>           } catch (final Exception e) {
>>>>
>>>> Modified:
>>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
>>>> org/apache/openejb/config/RemoteServer.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/container/
>>>> openejb-core/src/main/java/org/apache/openejb/config/
>>>> RemoteServer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>>>
>>>> ============================================================
>>>> ==================
>>>> ---
>>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
>>>> org/apache/openejb/config/RemoteServer.java
>>>> (original)
>>>> +++
>>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
>>>> org/apache/openejb/config/RemoteServer.java
>>>> Fri May 30 11:50:45 2014
>>>> @@ -50,6 +50,8 @@ public class RemoteServer {
>>>>       public static final String SERVER_SHUTDOWN_HOST =
>>>> "server.shutdown.host";
>>>>       public static final String SERVER_SHUTDOWN_COMMAND =
>>>> "server.shutdown.command";
>>>>       public static final String OPENEJB_SERVER_DEBUG =
>>>> "openejb.server.debug";
>>>> +    public static final String START = "start";
>>>> +    public static final String STOP = "stop";
>>>>
>>>>       private boolean debug = options.get(OPENEJB_SERVER_DEBUG, false);
>>>>       private final boolean profile = options.get("openejb.server.
>>>> profile",
>>>> false);
>>>> @@ -66,10 +68,11 @@ public class RemoteServer {
>>>>       private Process server;
>>>>       private final int tries;
>>>>       private final boolean verbose;
>>>> -    private final int shutdownPort;
>>>> +    private final int portShutdown;
>>>>       private final String host;
>>>>       private final String command;
>>>>       private File home;
>>>> +    private int portStartup;
>>>>
>>>>       public RemoteServer() {
>>>>           this(options.get("connect.tries", 60), options.get("verbose",
>>>> false));
>>>> @@ -81,7 +84,8 @@ public class RemoteServer {
>>>>           home = getHome();
>>>>           tomcat = (home != null) && (new File(new File(home, "bin"),
>>>> "catalina.sh").exists());
>>>>
>>>> -        shutdownPort = options.get(SERVER_SHUTDOWN_PORT, tomcat ?
>>>> 8005 :
>>>> 4200);
>>>> +        portShutdown = options.get(SERVER_SHUTDOWN_PORT, tomcat ?
>>>> 8005 :
>>>> 4200);
>>>> +        portStartup = portShutdown;
>>>>           command = options.get(SERVER_SHUTDOWN_COMMAND, "SHUTDOWN");
>>>>           host = options.get(SERVER_SHUTDOWN_HOST, "localhost");
>>>>       }
>>>> @@ -97,10 +101,10 @@ public class RemoteServer {
>>>>       }
>>>>
>>>>       public static void main(final String[] args) {
>>>> -        assert args.length > 0 : "no arguments supplied: valid argumen
>>>> -efts are 'start' or 'stop'";
>>>> -        if (args[0].equalsIgnoreCase("start")) {
>>>> +        assert args.length > 0 : "no arguments supplied: valid
>>>> arguments
>>>> are 'start' or 'stop'";
>>>> +        if (args[0].equalsIgnoreCase(START)) {
>>>>               new RemoteServer().start();
>>>> -        } else if (args[0].equalsIgnoreCase("stop")) {
>>>> +        } else if (args[0].equalsIgnoreCase(STOP)) {
>>>>               final RemoteServer remoteServer = new RemoteServer();
>>>>               remoteServer.serverHasAlreadyBeenStarted = false;
>>>>               remoteServer.stop();
>>>> @@ -109,8 +113,16 @@ public class RemoteServer {
>>>>           }
>>>>       }
>>>>
>>>> +    public int getPortStartup() {
>>>> +        return this.portStartup;
>>>> +    }
>>>> +
>>>> +    public void setPortStartup(int portStartup) {
>>>> +        this.portStartup = portStartup;
>>>> +    }
>>>> +
>>>>       public Properties getProperties() {
>>>> -        return properties;
>>>> +        return this.properties;
>>>>       }
>>>>
>>>>       public void destroy() {
>>>> @@ -125,7 +137,7 @@ public class RemoteServer {
>>>>       }
>>>>
>>>>       public void start() {
>>>> -        start(Collections.<String>emptyList(), "start", true);
>>>> +        start(Collections.<String>emptyList(), START, true);
>>>>       }
>>>>
>>>>       public void start(final List<String> additionalArgs, final String
>>>> cmd, final boolean checkPortAvailable) {
>>>> @@ -134,9 +146,12 @@ public class RemoteServer {
>>>>
>>>>       private void cmd(final List<String> additionalArgs, final String
>>>> cmd,
>>>> final boolean checkPortAvailable) {
>>>>           boolean ok = true;
>>>> +        final int port = START.equals(cmd) ? portStartup :
>>>> portShutdown;
>>>> +
>>>>           if (checkPortAvailable) {
>>>> -            ok = !connect();
>>>> +            ok = !connect(port, 1);
>>>>           }
>>>> +
>>>>           if (ok) {
>>>>               try {
>>>>                   if (verbose) {
>>>> @@ -170,7 +185,7 @@ public class RemoteServer {
>>>>
>>>>                   final String java;
>>>>                   final boolean isWindows = System.getProperty("os.name
>>>> ",
>>>> "unknown").toLowerCase().startsWith("windows");
>>>> -                if (isWindows && "start".equals(cmd) &&
>>>> options.get("server.windows.fork", false)) {
>>>> +                if (isWindows && START.equals(cmd) &&
>>>> options.get("server.windows.fork", false)) {
>>>>                       // run and forget
>>>>                       java = new File(System.getProperty("java.home"),
>>>> "bin/javaw").getAbsolutePath();
>>>>                   } else {
>>>> @@ -298,7 +313,7 @@ public class RemoteServer {
>>>>                   }
>>>>
>>>>                   if (cmd == null) {
>>>> -                    argsList.add("start");
>>>> +                    argsList.add(START);
>>>>                   } else {
>>>>                       argsList.add(cmd);
>>>>                   }
>>>> @@ -313,9 +328,9 @@ public class RemoteServer {
>>>>                   final Process process = Runtime.getRuntime().exec(
>>>> args);
>>>>                   Pipe.pipeOut(process); // why would we need to
>>>> redirect
>>>> System.in to the process, TomEE doesn't use it
>>>>
>>>> -                if ("start".equals(cmd)) {
>>>> +                if (START.equals(cmd)) {
>>>>                       server = process;
>>>> -                } else if ("stop".equals(cmd) && server != null) {
>>>> +                } else if (STOP.equals(cmd) && server != null) {
>>>>                       server.waitFor();
>>>>                   }
>>>>
>>>> @@ -324,11 +339,12 @@ public class RemoteServer {
>>>>               }
>>>>               if (checkPortAvailable) {
>>>>                   if (debug) {
>>>> -                    if (!connect(Integer.MAX_VALUE)) {
>>>> +
>>>> +                    if (!connect(port, Integer.MAX_VALUE)) {
>>>>                           throw new OpenEJBRuntimeException("Could not
>>>> connect to server");
>>>>                       }
>>>>                   } else {
>>>> -                    if (!connect(tries)) {
>>>> +                    if (!connect(port, tries)) {
>>>>                           throw new OpenEJBRuntimeException("Could not
>>>> connect to server");
>>>>                       }
>>>>                   }
>>>> @@ -443,7 +459,7 @@ public class RemoteServer {
>>>>           if (verbose) {
>>>>               System.out.print("Waiting for TomEE shutdown.");
>>>>           }
>>>> -        while (connect()) {
>>>> +        while (connect(portShutdown, tries)) {
>>>>               Thread.sleep(1000);
>>>>               if (verbose) {
>>>>                   System.out.print(".");
>>>> @@ -459,7 +475,7 @@ public class RemoteServer {
>>>>           Socket socket = null;
>>>>           OutputStream stream = null;
>>>>           try {
>>>> -            socket = new Socket(host, shutdownPort);
>>>> +            socket = new Socket(host, portShutdown);
>>>>               stream = socket.getOutputStream();
>>>>               final String shutdown = command +
>>>> Character.toString((char)
>>>> 0);
>>>>               for (int i = 0; i < shutdown.length(); i++) {
>>>> @@ -478,11 +494,7 @@ public class RemoteServer {
>>>>           }
>>>>       }
>>>>
>>>> -    private boolean connect() {
>>>> -        return connect(1);
>>>> -    }
>>>> -
>>>> -    private boolean connect(int tries) {
>>>> +    private boolean connect(final int port, int tries) {
>>>>           if (verbose) {
>>>>               System.out.println("[] CONNECT ATTEMPT " + (this.tries -
>>>> tries));
>>>>           }
>>>> @@ -490,7 +502,7 @@ public class RemoteServer {
>>>>           Socket s = null;
>>>>           try {
>>>>               s = new Socket();
>>>> -            s.connect(new InetSocketAddress(host, shutdownPort), 1000);
>>>> +            s.connect(new InetSocketAddress(this.host, port), 1000);
>>>>               s.getOutputStream().close();
>>>>               if (verbose) {
>>>>                   System.out.println("[] CONNECTED IN " + (this.tries -
>>>> tries));
>>>> @@ -507,7 +519,7 @@ public class RemoteServer {
>>>>                   } catch (final Exception e2) {
>>>>                       e.printStackTrace();
>>>>                   }
>>>> -                return connect(--tries);
>>>> +                return connect(port, --tries);
>>>>               }
>>>>           } finally {
>>>>               if (s != null) {
>>>>
>>>> Modified:
>>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-
>>>> maven-plugin/src/main/java/org/apache/openejb/maven/
>>>> plugin/AbstractTomEEMojo.java?rev=1598562&r1=1598561&r2=
>>>> 1598562&view=diff
>>>>
>>>> ============================================================
>>>> ==================
>>>> ---
>>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>>>> (original)
>>>> +++
>>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>>>> Fri May 30 11:50:45 2014
>>>> @@ -81,6 +81,7 @@ public abstract class AbstractTomEEMojo
>>>>       private static final String REMOVE_PREFIX = "remove:";
>>>>       public static final String QUIT_CMD = "quit";
>>>>       public static final String EXIT_CMD = "exit";
>>>> +    public static final String TOM_EE = "TomEE";
>>>>
>>>>       @Component
>>>>       protected ArtifactFactory factory;
>>>> @@ -258,7 +259,7 @@ public abstract class AbstractTomEEMojo
>>>>
>>>>       protected File deployedFile = null;
>>>>       protected RemoteServer server = null;
>>>> -    protected String container = "TomEE";
>>>> +    protected String container = TOM_EE;
>>>>
>>>>       @Override
>>>>       public void execute() throws MojoExecutionException,
>>>> MojoFailureException {
>>>> @@ -711,7 +712,10 @@ public abstract class AbstractTomEEMojo
>>>>
>>>>           addShutdownHooks(server); // some shutdown hooks are always
>>>> added
>>>> (see UpdatableTomEEMojo)
>>>>
>>>> -        if ("TomEE".equals(container)) {
>>>> +        if (TOM_EE.equals(container)) {
>>>> +
>>>> +            server.setPortStartup(tomeeHttpPort);
>>>> +
>>>>               getLog().info("Running '" +
>>>> getClass().getSimpleName().replace("TomEEMojo",
>>>> "").toLowerCase(Locale.ENGLISH)
>>>>                   + "'. Configured TomEE in plugin is " + tomeeHost +
>>>> ":" +
>>>> tomeeHttpPort
>>>>                   + " (plugin shutdown port is " + tomeeShutdownPort +
>>>> ")");
>>>> @@ -998,7 +1002,7 @@ public abstract class AbstractTomEEMojo
>>>>
>>>>               File file = new File(catalinaBase, "conf/tomee.xml");
>>>>               if (file.exists()) {
>>>> -                container = "TomEE";
>>>> +                container = TOM_EE;
>>>>               } else {
>>>>                   container = "OpenEJB";
>>>>                   file = new File(catalinaBase, "conf/openejb.xml");
>>>>
>>>> Modified:
>>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-
>>>> maven-plugin/src/main/java/org/apache/openejb/maven/
>>>> plugin/runner/ExecRunner.java?rev=1598562&r1=1598561&r2=
>>>> 1598562&view=diff
>>>>
>>>> ============================================================
>>>> ==================
>>>> ---
>>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
>>>> (original)
>>>> +++
>>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
>>>> Fri May 30 11:50:45 2014
>>>> @@ -28,6 +28,7 @@ import java.io.InputStream;
>>>>   import java.io.InputStreamReader;
>>>>   import java.util.ArrayList;
>>>>   import java.util.Collection;
>>>> +import java.util.Collections;
>>>>   import java.util.LinkedList;
>>>>   import java.util.List;
>>>>   import java.util.Locale;
>>>> @@ -83,7 +84,9 @@ public class ExecRunner {
>>>>           if (scripts != null) { // dont use filefilter to avoid
>>>> dependency
>>>> issue
>>>>               for (final File f : scripts) {
>>>>                   if (f.getName().endsWith(".sh") && !f.canExecute()) {
>>>> -                    f.setExecutable(true, true);
>>>> +                    if(!f.setExecutable(true, true)){
>>>> +                        System.err.println("Failed make file
>>>> executable:
>>>> " + f);
>>>> +                    }
>>>>                   }
>>>>               }
>>>>           }
>>>> @@ -101,7 +104,9 @@ public class ExecRunner {
>>>>                       throw new IllegalArgumentException("Can't find
>>>>  " +
>>>> cmd);
>>>>                   }
>>>>                   if (cmd.endsWith(".sh")) {
>>>> -                    scriptFile.setExecutable(true);
>>>> +                    if(!scriptFile.setExecutable(true)){
>>>> +                        System.err.println("Failed make script file
>>>> executable: " + scriptFile);
>>>> +                    }
>>>>                   }
>>>>               }
>>>>           }
>>>> @@ -117,15 +122,15 @@ public class ExecRunner {
>>>>               System.setProperty("server.shutdown.command",
>>>> config.getProperty("shutdownCommand"));
>>>>
>>>>               final RemoteServer server = new RemoteServer();
>>>> +            server.setPortStartup(Integer.parseInt(parser.http()));
>>>> +
>>>>               if (config.containsKey("additionalClasspath")) {
>>>>
>>>>   server.setAdditionalClasspath(config.getProperty("
>>>> additionalClasspath"));
>>>>               }
>>>>
>>>>               final List<String> jvmArgs = new LinkedList<String>();
>>>>               if (additionalArgs != null) {
>>>> -                for (final String kv : additionalArgs.split(" ")) {
>>>> -                    jvmArgs.add(kv);
>>>> -                }
>>>> +                Collections.addAll(jvmArgs, additionalArgs.split(" "));
>>>>               }
>>>>               for (final String k : config.stringPropertyNames()) {
>>>>                   if (k.startsWith("jvmArg.")) {
>>>>
>>>> Modified:
>>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>>> apache/openejb/tck/impl/ContainersImplTomEE.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-
>>>> common/src/main/java/org/apache/openejb/tck/impl/
>>>> ContainersImplTomEE.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>>>
>>>> ============================================================
>>>> ==================
>>>> ---
>>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>>> apache/openejb/tck/impl/ContainersImplTomEE.java
>>>> (original)
>>>> +++
>>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>>> apache/openejb/tck/impl/ContainersImplTomEE.java
>>>> Fri May 30 11:50:45 2014
>>>> @@ -32,7 +32,6 @@ import java.io.File;
>>>>   import java.io.IOException;
>>>>   import java.io.InputStream;
>>>>   import java.util.Arrays;
>>>> -import java.util.Collections;
>>>>   import java.util.Properties;
>>>>
>>>>   /**
>>>> @@ -45,6 +44,7 @@ public class ContainersImplTomEE extends
>>>>       private Exception exception;
>>>>       private AppInfo appInfo;
>>>>       private File currentFile = null;
>>>> +    private int port = 8080;
>>>>
>>>>       private Deployer lookup() {
>>>>           final Options options = new Options(System.getProperties());
>>>> @@ -53,8 +53,9 @@ public class ContainersImplTomEE extends
>>>>           String port = System.getProperty("server.http.port");
>>>>           if (port != null) {
>>>>               props.put(Context.PROVIDER_URL,
>>>> options.get(Context.PROVIDER_URL,"http://localhost:" + port +
>>>> "/tomee/ejb"));
>>>> +            this.port = Integer.parseInt(port);
>>>>           } else {
>>>> -            throw new OpenEJBTCKRuntimeException("Please set the tomee
>>>> port as a system property");
>>>> +            throw new OpenEJBTCKRuntimeException("Please set the tomee
>>>> port using the system property 'server.http.port'");
>>>>           }
>>>>
>>>>           final String deployerJndi =
>>>> System.getProperty("openejb.deployer.jndiname",
>>>> "openejb/DeployerBusinessRemote");
>>>> @@ -70,6 +71,7 @@ public class ContainersImplTomEE extends
>>>>           System.out.println("ContainersImpl=" +
>>>> ContainersImplTomEE.class.getName());
>>>>           System.out.println("Initialized ContainersImplTomEE " +
>>>> (++count));
>>>>           server = new RemoteServer();
>>>> +        server.setPortStartup(this.port);
>>>>       }
>>>>       @Override
>>>>       public boolean deploy(InputStream archive, String name) throws
>>>> IOException {
>>>> @@ -143,8 +145,10 @@ public class ContainersImplTomEE extends
>>>>       }
>>>>
>>>>       protected File getFile(String name) {
>>>> -        final File dir = new File(tmpDir, Math.random()+"");
>>>> -        dir.mkdir();
>>>> +        final File dir = new File(tmpDir, Math.random() + "");
>>>> +        if (!dir.exists() && !dir.mkdir()) {
>>>> +            throw new RuntimeException("Failed to create directory: " +
>>>> dir);
>>>> +        }
>>>>           dir.deleteOnExit();
>>>>           return new File(dir, name);
>>>>       }
>>>>
>>>> Modified:
>>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>>> apache/openejb/tck/impl/FullRestartContainer.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-
>>>> common/src/main/java/org/apache/openejb/tck/impl/
>>>> FullRestartContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>>>
>>>> ============================================================
>>>> ==================
>>>> ---
>>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>>> apache/openejb/tck/impl/FullRestartContainer.java
>>>> (original)
>>>> +++
>>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>>> apache/openejb/tck/impl/FullRestartContainer.java
>>>> Fri May 30 11:50:45 2014
>>>> @@ -71,7 +71,14 @@ public class FullRestartContainer extend
>>>>           System.out.println(currentFile);
>>>>           writeToFile(currentFile, archive);
>>>>
>>>> -        server = new RemoteServer(100, true);
>>>> +        String port = System.getProperty("server.http.port");
>>>> +        if (port != null) {
>>>> +            server = new RemoteServer(100, true);
>>>> +            server.setPortStartup(Integer.parseInt(port));
>>>> +        } else {
>>>> +            throw new OpenEJBTCKRuntimeException("Please set the tomee
>>>> port using the system property 'server.http.port'");
>>>> +        }
>>>> +
>>>>           try {
>>>>               server.start();
>>>>           } catch (RuntimeException e) {
>>>> @@ -84,7 +91,11 @@ public class FullRestartContainer extend
>>>>
>>>>       @Override
>>>>       public void undeploy(String name) throws IOException {
>>>> -        server.destroy();
>>>> +
>>>> +        if (null != server) {
>>>> +            server.destroy();
>>>> +        }
>>>> +
>>>>           File folder = new File(currentFile.getParentFile(),
>>>> currentFile.getName().substring(0, currentFile.getName().length() -
>>>> 4));
>>>>           if (folder.exists()) {
>>>>               delete(folder);
>>>> @@ -109,9 +120,9 @@ public class FullRestartContainer extend
>>>>           String port = System.getProperty("server.http.port");
>>>>           if (port != null) {
>>>>               System.out.println("provider url = " + "http://localhost:"
>>>> +
>>>> port + "/tomee/ejb");
>>>> -            props.put(Context.PROVIDER_URL,
>>>> options.get(Context.PROVIDER_URL,"http://localhost:" + port +
>>>> "/tomee/ejb"));
>>>> +            props.put(Context.PROVIDER_URL,
>>>> options.get(Context.PROVIDER_URL, "http://localhost:" + port +
>>>> "/tomee/ejb"));
>>>>           } else {
>>>> -            throw new OpenEJBTCKRuntimeException("Please set the tomee
>>>> port as a system property");
>>>> +            throw new OpenEJBTCKRuntimeException("Please set the tomee
>>>> port using the system property 'server.http.port'");
>>>>           }
>>>>
>>>>           try {
>>>>
>>>> Modified:
>>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
>>>> RemoteTomEEEJBContainer.java
>>>> URL:
>>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/
>>>> apache-tomee/src/main/java/org/apache/tomee/
>>>> RemoteTomEEEJBContainer.java?rev=1598562&r1=1598561&r2=
>>>> 1598562&view=diff
>>>>
>>>> ============================================================
>>>> ==================
>>>> ---
>>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
>>>> RemoteTomEEEJBContainer.java
>>>> (original)
>>>> +++
>>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
>>>> RemoteTomEEEJBContainer.java
>>>> Fri May 30 11:50:45 2014
>>>> @@ -92,6 +92,7 @@ public class RemoteTomEEEJBContainer ext
>>>>               try {
>>>>                   instance = new RemoteTomEEEJBContainer();
>>>>                   instance.container = new RemoteServer();
>>>> +
>>>>   instance.container.setPortStartup(Integer.parseInt(parser.http()));
>>>>                   instance.container.start();
>>>>                   instance.context = new InitialContext(new
>>>> Properties() {{
>>>>                       setProperty(Context.INITIAL_CONTEXT_FACTORY,
>>>> RemoteInitialContextFactory.class.getName());
>>>>
>>>>
>>>>
>>>>
>> --
>>   Andy Gumbrecht
>>
>>   http://www.tomitribe.com
>>   agumbrecht@tomitribe.com
>>   https://twitter.com/AndyGeeDe
>>
>>   TomEE treibt Tomitribe! | http://tomee.apache.org
>>
>>
>

Re: svn commit: r1598562 - in /tomee/tomee/trunk: arquillian/arquillian-tomee-remote/ arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/ arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/w...

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Hmm

actually RemoteServer doesn't need it. I think you see the issue with
arquillian mainly and in this case we have a retry mecanism created for it
in deployer lookup.

Isn't it what should have been configured?



Romain Manni-Bucau
Twitter: @rmannibucau
Blog: http://rmannibucau.wordpress.com/
LinkedIn: http://fr.linkedin.com/in/rmannibucau
Github: https://github.com/rmannibucau


2014-05-30 14:34 GMT+02:00 Andy Gumbrecht <ag...@tomitribe.com>:

> Sure Romain,
>
> The RemoteServer.java does not know what the context is (OpenEJB, TomEE,
> Arquillian) - So what is the service port ? (4201, 8080, ?) - Could maybe
> work it out internally from properties, but the caller already knows, hence
> the setter.
> If the setter is not used then it defaults to previous action, which is to
> use the self-determined shutdown port.
>
> The RemoteServer is/was only looking at the shutdown port (OpenEJB,
> Tomcat) to determine if the server is running.
>
> The Tomcat/OpenEJB shutdown port can start to accepts calls before the
> actual service port (Several seconds or more on a busy machine like the
> buildbot).
> So using it (in RemoteServer) to see if the server is running often leads
> to an overlap (Port already in use or bind exceptions).
>
> Giving RemoteServer the service port to monitor for a startup connection
> makes more sense to me, as this is the port required for access and not the
> shutdown port.
>
> Shutdown is less of an issue because the shutdown port goes down after the
> service port.
>
> The changes apply to usages of RemoteServer, where the service port is
> known.
>
> Andy.
>
>
>
> On 30/05/2014 14:09, Romain Manni-Bucau wrote:
>
>> Hi
>>
>> I'm not sure to get the goal of it.
>>
>> PortStartup is set as system property where needed (mainly arquillian) but
>> doesn't add much value otherwise since it can just be not existing (I saw
>> several instances with only https or ajp configured)
>>
>> Can you detail the cause please?
>>
>>
>>
>>
>> Romain Manni-Bucau
>> Twitter: @rmannibucau
>> Blog: http://rmannibucau.wordpress.com/
>> LinkedIn: http://fr.linkedin.com/in/rmannibucau
>> Github: https://github.com/rmannibucau
>>
>>
>> 2014-05-30 13:50 GMT+02:00 <an...@apache.org>:
>>
>>  Author: andygumbrecht
>>> Date: Fri May 30 11:50:45 2014
>>> New Revision: 1598562
>>>
>>> URL: http://svn.apache.org/r1598562
>>> Log:
>>> TOMEE-1230 Provide the known server service port to RemoteServer for
>>> better startup monitoring.
>>>
>>> Modified:
>>>      tomee/tomee/trunk/arquillian/arquillian-tomee-remote/   (props
>>> changed)
>>>
>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
>>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>>>
>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
>>> remote/src/main/java/org/apache/tomee/arquillian/
>>> webapp/TomEEWebappContainer.java
>>>
>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
>>> org/apache/openejb/config/RemoteServer.java
>>>
>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>>>
>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
>>>
>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>> apache/openejb/tck/impl/ContainersImplTomEE.java
>>>
>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>> apache/openejb/tck/impl/FullRestartContainer.java
>>>
>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
>>> RemoteTomEEEJBContainer.java
>>>
>>> Propchange: tomee/tomee/trunk/arquillian/arquillian-tomee-remote/
>>>
>>> ------------------------------------------------------------
>>> ------------------
>>> --- svn:ignore (original)
>>> +++ svn:ignore Fri May 30 11:50:45 2014
>>> @@ -1,6 +1,8 @@
>>>   *.iml
>>>   .classpath
>>> +.idea
>>>   .project
>>>   .settings
>>>   target
>>>   velocity.*
>>> +.idea
>>>
>>> Modified:
>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
>>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>>> URL:
>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/
>>> arquillian-tomee-remote/src/main/java/org/apache/tomee/
>>> arquillian/remote/RemoteTomEEContainer.java?rev=
>>> 1598562&r1=1598561&r2=1598562&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
>>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>>> (original)
>>> +++
>>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/
>>> main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>>> Fri May 30 11:50:45 2014
>>> @@ -71,9 +71,11 @@ public class RemoteTomEEContainer extend
>>>       @Override
>>>       public void start() throws LifecycleException {
>>>           // see if TomEE is already running by checking the http port
>>> -        if (Setup.isRunning(configuration.getHost(),
>>> configuration.getHttpPort())) {
>>> +        final int httpPort = configuration.getHttpPort();
>>>
>>> -            logger.info(String.format("TomEE found running on port %s",
>>> configuration.getHttpPort()));
>>> +        if (Setup.isRunning(configuration.getHost(), httpPort)) {
>>> +
>>> +            logger.info(String.format("TomEE found running on port %s",
>>> httpPort));
>>>
>>>               return;
>>>           }
>>> @@ -90,15 +92,18 @@ public class RemoteTomEEContainer extend
>>>
>>>               configure();
>>>
>>> -            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT,
>>> Integer.toString(configuration.getStopPort()));
>>> +            int stopPort = configuration.getStopPort();
>>> +            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT,
>>> Integer.toString(stopPort));
>>>               System.setProperty(RemoteServer.SERVER_SHUTDOWN_COMMAND,
>>> configuration.getStopCommand());
>>>               System.setProperty(RemoteServer.SERVER_SHUTDOWN_HOST,
>>> configuration.getStopHost());
>>> +
>>>               if (configuration.isDebug()) {
>>>                   System.setProperty(RemoteServer.OPENEJB_SERVER_DEBUG,
>>> "true");
>>>                   System.setProperty(RemoteServer.SERVER_DEBUG_PORT,
>>> Integer.toString(configuration.getDebugPort()));
>>>               }
>>> -            container = new RemoteServer();
>>>
>>> +            container = new RemoteServer();
>>> +            container.setPortStartup(httpPort);
>>>               container.start(args(), "start", true);
>>>               container.killOnExit();
>>>
>>>
>>> Modified:
>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
>>> remote/src/main/java/org/apache/tomee/arquillian/
>>> webapp/TomEEWebappContainer.java
>>> URL:
>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/
>>> arquillian-tomee-webapp-remote/src/main/java/org/
>>> apache/tomee/arquillian/webapp/TomEEWebappContainer.
>>> java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
>>> remote/src/main/java/org/apache/tomee/arquillian/
>>> webapp/TomEEWebappContainer.java
>>> (original)
>>> +++
>>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-
>>> remote/src/main/java/org/apache/tomee/arquillian/
>>> webapp/TomEEWebappContainer.java
>>> Fri May 30 11:50:45 2014
>>> @@ -54,9 +54,10 @@ public class TomEEWebappContainer extend
>>>       @Override
>>>       public void start() throws LifecycleException {
>>>           // see if TomEE is already running by checking the http port
>>> -        if (Setup.isRunning(configuration.getHost(),
>>> configuration.getHttpPort())) {
>>> +        int httpPort = configuration.getHttpPort();
>>> +        if (Setup.isRunning(configuration.getHost(), httpPort)) {
>>>
>>> -            logger.info(String.format("Tomcat found running on port
>>> %s",
>>> configuration.getHttpPort()));
>>> +            logger.info(String.format("Tomcat found running on port
>>> %s",
>>> httpPort));
>>>
>>>               return;
>>>           }
>>> @@ -141,12 +142,13 @@ public class TomEEWebappContainer extend
>>>               if (!wereOpenejbHomeSet &&
>>> configuration.isUseInstallerServlet()) {
>>>                   // instead of calling the Installer, let's just do like
>>> users do
>>>                   // call the servlet installer instead
>>> -                final String baseUrl = "http://" +
>>> configuration.getHost() + ":" + configuration.getHttpPort() +
>>> "/tomee/installer";
>>> +                final String baseUrl = "http://" +
>>> configuration.getHost() + ":" + httpPort + "/tomee/installer";
>>>
>>>                   assert installer != null;
>>>                   installer.addTomEEAdminConfInTomcatUsers(true);
>>>
>>>                   final RemoteServer tmpContainer = new RemoteServer();
>>> +                tmpContainer.setPortStartup(httpPort);
>>>                   tmpContainer.start();
>>>
>>>                   final URL url = new URL(baseUrl);
>>> @@ -156,7 +158,7 @@ public class TomEEWebappContainer extend
>>>                       final URLConnection uc = url.openConnection();
>>>                       // dG9tZWU6dG9tZWU= --> Base64 of tomee:tomee
>>>                       final String authorizationString = "Basic
>>> dG9tZWU6dG9tZWU=";
>>> -                    uc.setRequestProperty ("Authorization",
>>> authorizationString);
>>> +                    uc.setRequestProperty("Authorization",
>>> authorizationString);
>>>                       try {
>>>                           final InputStream is = uc.getInputStream();
>>>                           org.apache.openejb.loader.IO.slurp(is);
>>> @@ -173,6 +175,7 @@ public class TomEEWebappContainer extend
>>>               }
>>>
>>>               container = new RemoteServer();
>>> +            container.setPortStartup(httpPort);
>>>
>>>   container.start(Arrays.asList("-Dorg.apache.openejb.servlet.filters="
>>> +
>>> ArquillianFilterRunner.class.getName() + "=" +
>>> ServletMethodExecutor.ARQUILLIAN_SERVLET_MAPPING), "start", true);
>>>               container.killOnExit();
>>>           } catch (final Exception e) {
>>>
>>> Modified:
>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
>>> org/apache/openejb/config/RemoteServer.java
>>> URL:
>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/container/
>>> openejb-core/src/main/java/org/apache/openejb/config/
>>> RemoteServer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
>>> org/apache/openejb/config/RemoteServer.java
>>> (original)
>>> +++
>>> tomee/tomee/trunk/container/openejb-core/src/main/java/
>>> org/apache/openejb/config/RemoteServer.java
>>> Fri May 30 11:50:45 2014
>>> @@ -50,6 +50,8 @@ public class RemoteServer {
>>>       public static final String SERVER_SHUTDOWN_HOST =
>>> "server.shutdown.host";
>>>       public static final String SERVER_SHUTDOWN_COMMAND =
>>> "server.shutdown.command";
>>>       public static final String OPENEJB_SERVER_DEBUG =
>>> "openejb.server.debug";
>>> +    public static final String START = "start";
>>> +    public static final String STOP = "stop";
>>>
>>>       private boolean debug = options.get(OPENEJB_SERVER_DEBUG, false);
>>>       private final boolean profile = options.get("openejb.server.
>>> profile",
>>> false);
>>> @@ -66,10 +68,11 @@ public class RemoteServer {
>>>       private Process server;
>>>       private final int tries;
>>>       private final boolean verbose;
>>> -    private final int shutdownPort;
>>> +    private final int portShutdown;
>>>       private final String host;
>>>       private final String command;
>>>       private File home;
>>> +    private int portStartup;
>>>
>>>       public RemoteServer() {
>>>           this(options.get("connect.tries", 60), options.get("verbose",
>>> false));
>>> @@ -81,7 +84,8 @@ public class RemoteServer {
>>>           home = getHome();
>>>           tomcat = (home != null) && (new File(new File(home, "bin"),
>>> "catalina.sh").exists());
>>>
>>> -        shutdownPort = options.get(SERVER_SHUTDOWN_PORT, tomcat ? 8005
>>> :
>>> 4200);
>>> +        portShutdown = options.get(SERVER_SHUTDOWN_PORT, tomcat ? 8005
>>> :
>>> 4200);
>>> +        portStartup = portShutdown;
>>>           command = options.get(SERVER_SHUTDOWN_COMMAND, "SHUTDOWN");
>>>           host = options.get(SERVER_SHUTDOWN_HOST, "localhost");
>>>       }
>>> @@ -97,10 +101,10 @@ public class RemoteServer {
>>>       }
>>>
>>>       public static void main(final String[] args) {
>>> -        assert args.length > 0 : "no arguments supplied: valid argumen
>>> -efts are 'start' or 'stop'";
>>> -        if (args[0].equalsIgnoreCase("start")) {
>>> +        assert args.length > 0 : "no arguments supplied: valid arguments
>>> are 'start' or 'stop'";
>>> +        if (args[0].equalsIgnoreCase(START)) {
>>>               new RemoteServer().start();
>>> -        } else if (args[0].equalsIgnoreCase("stop")) {
>>> +        } else if (args[0].equalsIgnoreCase(STOP)) {
>>>               final RemoteServer remoteServer = new RemoteServer();
>>>               remoteServer.serverHasAlreadyBeenStarted = false;
>>>               remoteServer.stop();
>>> @@ -109,8 +113,16 @@ public class RemoteServer {
>>>           }
>>>       }
>>>
>>> +    public int getPortStartup() {
>>> +        return this.portStartup;
>>> +    }
>>> +
>>> +    public void setPortStartup(int portStartup) {
>>> +        this.portStartup = portStartup;
>>> +    }
>>> +
>>>       public Properties getProperties() {
>>> -        return properties;
>>> +        return this.properties;
>>>       }
>>>
>>>       public void destroy() {
>>> @@ -125,7 +137,7 @@ public class RemoteServer {
>>>       }
>>>
>>>       public void start() {
>>> -        start(Collections.<String>emptyList(), "start", true);
>>> +        start(Collections.<String>emptyList(), START, true);
>>>       }
>>>
>>>       public void start(final List<String> additionalArgs, final String
>>> cmd, final boolean checkPortAvailable) {
>>> @@ -134,9 +146,12 @@ public class RemoteServer {
>>>
>>>       private void cmd(final List<String> additionalArgs, final String
>>> cmd,
>>> final boolean checkPortAvailable) {
>>>           boolean ok = true;
>>> +        final int port = START.equals(cmd) ? portStartup : portShutdown;
>>> +
>>>           if (checkPortAvailable) {
>>> -            ok = !connect();
>>> +            ok = !connect(port, 1);
>>>           }
>>> +
>>>           if (ok) {
>>>               try {
>>>                   if (verbose) {
>>> @@ -170,7 +185,7 @@ public class RemoteServer {
>>>
>>>                   final String java;
>>>                   final boolean isWindows = System.getProperty("os.name
>>> ",
>>> "unknown").toLowerCase().startsWith("windows");
>>> -                if (isWindows && "start".equals(cmd) &&
>>> options.get("server.windows.fork", false)) {
>>> +                if (isWindows && START.equals(cmd) &&
>>> options.get("server.windows.fork", false)) {
>>>                       // run and forget
>>>                       java = new File(System.getProperty("java.home"),
>>> "bin/javaw").getAbsolutePath();
>>>                   } else {
>>> @@ -298,7 +313,7 @@ public class RemoteServer {
>>>                   }
>>>
>>>                   if (cmd == null) {
>>> -                    argsList.add("start");
>>> +                    argsList.add(START);
>>>                   } else {
>>>                       argsList.add(cmd);
>>>                   }
>>> @@ -313,9 +328,9 @@ public class RemoteServer {
>>>                   final Process process = Runtime.getRuntime().exec(
>>> args);
>>>                   Pipe.pipeOut(process); // why would we need to redirect
>>> System.in to the process, TomEE doesn't use it
>>>
>>> -                if ("start".equals(cmd)) {
>>> +                if (START.equals(cmd)) {
>>>                       server = process;
>>> -                } else if ("stop".equals(cmd) && server != null) {
>>> +                } else if (STOP.equals(cmd) && server != null) {
>>>                       server.waitFor();
>>>                   }
>>>
>>> @@ -324,11 +339,12 @@ public class RemoteServer {
>>>               }
>>>               if (checkPortAvailable) {
>>>                   if (debug) {
>>> -                    if (!connect(Integer.MAX_VALUE)) {
>>> +
>>> +                    if (!connect(port, Integer.MAX_VALUE)) {
>>>                           throw new OpenEJBRuntimeException("Could not
>>> connect to server");
>>>                       }
>>>                   } else {
>>> -                    if (!connect(tries)) {
>>> +                    if (!connect(port, tries)) {
>>>                           throw new OpenEJBRuntimeException("Could not
>>> connect to server");
>>>                       }
>>>                   }
>>> @@ -443,7 +459,7 @@ public class RemoteServer {
>>>           if (verbose) {
>>>               System.out.print("Waiting for TomEE shutdown.");
>>>           }
>>> -        while (connect()) {
>>> +        while (connect(portShutdown, tries)) {
>>>               Thread.sleep(1000);
>>>               if (verbose) {
>>>                   System.out.print(".");
>>> @@ -459,7 +475,7 @@ public class RemoteServer {
>>>           Socket socket = null;
>>>           OutputStream stream = null;
>>>           try {
>>> -            socket = new Socket(host, shutdownPort);
>>> +            socket = new Socket(host, portShutdown);
>>>               stream = socket.getOutputStream();
>>>               final String shutdown = command + Character.toString((char)
>>> 0);
>>>               for (int i = 0; i < shutdown.length(); i++) {
>>> @@ -478,11 +494,7 @@ public class RemoteServer {
>>>           }
>>>       }
>>>
>>> -    private boolean connect() {
>>> -        return connect(1);
>>> -    }
>>> -
>>> -    private boolean connect(int tries) {
>>> +    private boolean connect(final int port, int tries) {
>>>           if (verbose) {
>>>               System.out.println("[] CONNECT ATTEMPT " + (this.tries -
>>> tries));
>>>           }
>>> @@ -490,7 +502,7 @@ public class RemoteServer {
>>>           Socket s = null;
>>>           try {
>>>               s = new Socket();
>>> -            s.connect(new InetSocketAddress(host, shutdownPort), 1000);
>>> +            s.connect(new InetSocketAddress(this.host, port), 1000);
>>>               s.getOutputStream().close();
>>>               if (verbose) {
>>>                   System.out.println("[] CONNECTED IN " + (this.tries -
>>> tries));
>>> @@ -507,7 +519,7 @@ public class RemoteServer {
>>>                   } catch (final Exception e2) {
>>>                       e.printStackTrace();
>>>                   }
>>> -                return connect(--tries);
>>> +                return connect(port, --tries);
>>>               }
>>>           } finally {
>>>               if (s != null) {
>>>
>>> Modified:
>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>>> URL:
>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-
>>> maven-plugin/src/main/java/org/apache/openejb/maven/
>>> plugin/AbstractTomEEMojo.java?rev=1598562&r1=1598561&r2=
>>> 1598562&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>>> (original)
>>> +++
>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>> org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>>> Fri May 30 11:50:45 2014
>>> @@ -81,6 +81,7 @@ public abstract class AbstractTomEEMojo
>>>       private static final String REMOVE_PREFIX = "remove:";
>>>       public static final String QUIT_CMD = "quit";
>>>       public static final String EXIT_CMD = "exit";
>>> +    public static final String TOM_EE = "TomEE";
>>>
>>>       @Component
>>>       protected ArtifactFactory factory;
>>> @@ -258,7 +259,7 @@ public abstract class AbstractTomEEMojo
>>>
>>>       protected File deployedFile = null;
>>>       protected RemoteServer server = null;
>>> -    protected String container = "TomEE";
>>> +    protected String container = TOM_EE;
>>>
>>>       @Override
>>>       public void execute() throws MojoExecutionException,
>>> MojoFailureException {
>>> @@ -711,7 +712,10 @@ public abstract class AbstractTomEEMojo
>>>
>>>           addShutdownHooks(server); // some shutdown hooks are always
>>> added
>>> (see UpdatableTomEEMojo)
>>>
>>> -        if ("TomEE".equals(container)) {
>>> +        if (TOM_EE.equals(container)) {
>>> +
>>> +            server.setPortStartup(tomeeHttpPort);
>>> +
>>>               getLog().info("Running '" +
>>> getClass().getSimpleName().replace("TomEEMojo",
>>> "").toLowerCase(Locale.ENGLISH)
>>>                   + "'. Configured TomEE in plugin is " + tomeeHost +
>>> ":" +
>>> tomeeHttpPort
>>>                   + " (plugin shutdown port is " + tomeeShutdownPort +
>>> ")");
>>> @@ -998,7 +1002,7 @@ public abstract class AbstractTomEEMojo
>>>
>>>               File file = new File(catalinaBase, "conf/tomee.xml");
>>>               if (file.exists()) {
>>> -                container = "TomEE";
>>> +                container = TOM_EE;
>>>               } else {
>>>                   container = "OpenEJB";
>>>                   file = new File(catalinaBase, "conf/openejb.xml");
>>>
>>> Modified:
>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
>>> URL:
>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-
>>> maven-plugin/src/main/java/org/apache/openejb/maven/
>>> plugin/runner/ExecRunner.java?rev=1598562&r1=1598561&r2=
>>> 1598562&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
>>> (original)
>>> +++
>>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/
>>> org/apache/openejb/maven/plugin/runner/ExecRunner.java
>>> Fri May 30 11:50:45 2014
>>> @@ -28,6 +28,7 @@ import java.io.InputStream;
>>>   import java.io.InputStreamReader;
>>>   import java.util.ArrayList;
>>>   import java.util.Collection;
>>> +import java.util.Collections;
>>>   import java.util.LinkedList;
>>>   import java.util.List;
>>>   import java.util.Locale;
>>> @@ -83,7 +84,9 @@ public class ExecRunner {
>>>           if (scripts != null) { // dont use filefilter to avoid
>>> dependency
>>> issue
>>>               for (final File f : scripts) {
>>>                   if (f.getName().endsWith(".sh") && !f.canExecute()) {
>>> -                    f.setExecutable(true, true);
>>> +                    if(!f.setExecutable(true, true)){
>>> +                        System.err.println("Failed make file executable:
>>> " + f);
>>> +                    }
>>>                   }
>>>               }
>>>           }
>>> @@ -101,7 +104,9 @@ public class ExecRunner {
>>>                       throw new IllegalArgumentException("Can't find  "
>>> +
>>> cmd);
>>>                   }
>>>                   if (cmd.endsWith(".sh")) {
>>> -                    scriptFile.setExecutable(true);
>>> +                    if(!scriptFile.setExecutable(true)){
>>> +                        System.err.println("Failed make script file
>>> executable: " + scriptFile);
>>> +                    }
>>>                   }
>>>               }
>>>           }
>>> @@ -117,15 +122,15 @@ public class ExecRunner {
>>>               System.setProperty("server.shutdown.command",
>>> config.getProperty("shutdownCommand"));
>>>
>>>               final RemoteServer server = new RemoteServer();
>>> +            server.setPortStartup(Integer.parseInt(parser.http()));
>>> +
>>>               if (config.containsKey("additionalClasspath")) {
>>>
>>>   server.setAdditionalClasspath(config.getProperty("
>>> additionalClasspath"));
>>>               }
>>>
>>>               final List<String> jvmArgs = new LinkedList<String>();
>>>               if (additionalArgs != null) {
>>> -                for (final String kv : additionalArgs.split(" ")) {
>>> -                    jvmArgs.add(kv);
>>> -                }
>>> +                Collections.addAll(jvmArgs, additionalArgs.split(" "));
>>>               }
>>>               for (final String k : config.stringPropertyNames()) {
>>>                   if (k.startsWith("jvmArg.")) {
>>>
>>> Modified:
>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>> apache/openejb/tck/impl/ContainersImplTomEE.java
>>> URL:
>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-
>>> common/src/main/java/org/apache/openejb/tck/impl/
>>> ContainersImplTomEE.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>> apache/openejb/tck/impl/ContainersImplTomEE.java
>>> (original)
>>> +++
>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>> apache/openejb/tck/impl/ContainersImplTomEE.java
>>> Fri May 30 11:50:45 2014
>>> @@ -32,7 +32,6 @@ import java.io.File;
>>>   import java.io.IOException;
>>>   import java.io.InputStream;
>>>   import java.util.Arrays;
>>> -import java.util.Collections;
>>>   import java.util.Properties;
>>>
>>>   /**
>>> @@ -45,6 +44,7 @@ public class ContainersImplTomEE extends
>>>       private Exception exception;
>>>       private AppInfo appInfo;
>>>       private File currentFile = null;
>>> +    private int port = 8080;
>>>
>>>       private Deployer lookup() {
>>>           final Options options = new Options(System.getProperties());
>>> @@ -53,8 +53,9 @@ public class ContainersImplTomEE extends
>>>           String port = System.getProperty("server.http.port");
>>>           if (port != null) {
>>>               props.put(Context.PROVIDER_URL,
>>> options.get(Context.PROVIDER_URL,"http://localhost:" + port +
>>> "/tomee/ejb"));
>>> +            this.port = Integer.parseInt(port);
>>>           } else {
>>> -            throw new OpenEJBTCKRuntimeException("Please set the tomee
>>> port as a system property");
>>> +            throw new OpenEJBTCKRuntimeException("Please set the tomee
>>> port using the system property 'server.http.port'");
>>>           }
>>>
>>>           final String deployerJndi =
>>> System.getProperty("openejb.deployer.jndiname",
>>> "openejb/DeployerBusinessRemote");
>>> @@ -70,6 +71,7 @@ public class ContainersImplTomEE extends
>>>           System.out.println("ContainersImpl=" +
>>> ContainersImplTomEE.class.getName());
>>>           System.out.println("Initialized ContainersImplTomEE " +
>>> (++count));
>>>           server = new RemoteServer();
>>> +        server.setPortStartup(this.port);
>>>       }
>>>       @Override
>>>       public boolean deploy(InputStream archive, String name) throws
>>> IOException {
>>> @@ -143,8 +145,10 @@ public class ContainersImplTomEE extends
>>>       }
>>>
>>>       protected File getFile(String name) {
>>> -        final File dir = new File(tmpDir, Math.random()+"");
>>> -        dir.mkdir();
>>> +        final File dir = new File(tmpDir, Math.random() + "");
>>> +        if (!dir.exists() && !dir.mkdir()) {
>>> +            throw new RuntimeException("Failed to create directory: " +
>>> dir);
>>> +        }
>>>           dir.deleteOnExit();
>>>           return new File(dir, name);
>>>       }
>>>
>>> Modified:
>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>> apache/openejb/tck/impl/FullRestartContainer.java
>>> URL:
>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-
>>> common/src/main/java/org/apache/openejb/tck/impl/
>>> FullRestartContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>> apache/openejb/tck/impl/FullRestartContainer.java
>>> (original)
>>> +++
>>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/
>>> apache/openejb/tck/impl/FullRestartContainer.java
>>> Fri May 30 11:50:45 2014
>>> @@ -71,7 +71,14 @@ public class FullRestartContainer extend
>>>           System.out.println(currentFile);
>>>           writeToFile(currentFile, archive);
>>>
>>> -        server = new RemoteServer(100, true);
>>> +        String port = System.getProperty("server.http.port");
>>> +        if (port != null) {
>>> +            server = new RemoteServer(100, true);
>>> +            server.setPortStartup(Integer.parseInt(port));
>>> +        } else {
>>> +            throw new OpenEJBTCKRuntimeException("Please set the tomee
>>> port using the system property 'server.http.port'");
>>> +        }
>>> +
>>>           try {
>>>               server.start();
>>>           } catch (RuntimeException e) {
>>> @@ -84,7 +91,11 @@ public class FullRestartContainer extend
>>>
>>>       @Override
>>>       public void undeploy(String name) throws IOException {
>>> -        server.destroy();
>>> +
>>> +        if (null != server) {
>>> +            server.destroy();
>>> +        }
>>> +
>>>           File folder = new File(currentFile.getParentFile(),
>>> currentFile.getName().substring(0, currentFile.getName().length() - 4));
>>>           if (folder.exists()) {
>>>               delete(folder);
>>> @@ -109,9 +120,9 @@ public class FullRestartContainer extend
>>>           String port = System.getProperty("server.http.port");
>>>           if (port != null) {
>>>               System.out.println("provider url = " + "http://localhost:"
>>> +
>>> port + "/tomee/ejb");
>>> -            props.put(Context.PROVIDER_URL,
>>> options.get(Context.PROVIDER_URL,"http://localhost:" + port +
>>> "/tomee/ejb"));
>>> +            props.put(Context.PROVIDER_URL,
>>> options.get(Context.PROVIDER_URL, "http://localhost:" + port +
>>> "/tomee/ejb"));
>>>           } else {
>>> -            throw new OpenEJBTCKRuntimeException("Please set the tomee
>>> port as a system property");
>>> +            throw new OpenEJBTCKRuntimeException("Please set the tomee
>>> port using the system property 'server.http.port'");
>>>           }
>>>
>>>           try {
>>>
>>> Modified:
>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
>>> RemoteTomEEEJBContainer.java
>>> URL:
>>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/
>>> apache-tomee/src/main/java/org/apache/tomee/
>>> RemoteTomEEEJBContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>>
>>> ============================================================
>>> ==================
>>> ---
>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
>>> RemoteTomEEEJBContainer.java
>>> (original)
>>> +++
>>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/
>>> RemoteTomEEEJBContainer.java
>>> Fri May 30 11:50:45 2014
>>> @@ -92,6 +92,7 @@ public class RemoteTomEEEJBContainer ext
>>>               try {
>>>                   instance = new RemoteTomEEEJBContainer();
>>>                   instance.container = new RemoteServer();
>>> +
>>>   instance.container.setPortStartup(Integer.parseInt(parser.http()));
>>>                   instance.container.start();
>>>                   instance.context = new InitialContext(new Properties()
>>> {{
>>>                       setProperty(Context.INITIAL_CONTEXT_FACTORY,
>>> RemoteInitialContextFactory.class.getName());
>>>
>>>
>>>
>>>
> --
>   Andy Gumbrecht
>
>   http://www.tomitribe.com
>   agumbrecht@tomitribe.com
>   https://twitter.com/AndyGeeDe
>
>   TomEE treibt Tomitribe! | http://tomee.apache.org
>
>

Re: svn commit: r1598562 - in /tomee/tomee/trunk: arquillian/arquillian-tomee-remote/ arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/ arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/w...

Posted by Andy Gumbrecht <ag...@tomitribe.com>.
Sure Romain,

The RemoteServer.java does not know what the context is (OpenEJB, TomEE, 
Arquillian) - So what is the service port ? (4201, 8080, ?) - Could 
maybe work it out internally from properties, but the caller already 
knows, hence the setter.
If the setter is not used then it defaults to previous action, which is 
to use the self-determined shutdown port.

The RemoteServer is/was only looking at the shutdown port (OpenEJB, 
Tomcat) to determine if the server is running.

The Tomcat/OpenEJB shutdown port can start to accepts calls before the 
actual service port (Several seconds or more on a busy machine like the 
buildbot).
So using it (in RemoteServer) to see if the server is running often 
leads to an overlap (Port already in use or bind exceptions).

Giving RemoteServer the service port to monitor for a startup connection 
makes more sense to me, as this is the port required for access and not 
the shutdown port.

Shutdown is less of an issue because the shutdown port goes down after 
the service port.

The changes apply to usages of RemoteServer, where the service port is 
known.

Andy.


On 30/05/2014 14:09, Romain Manni-Bucau wrote:
> Hi
>
> I'm not sure to get the goal of it.
>
> PortStartup is set as system property where needed (mainly arquillian) but
> doesn't add much value otherwise since it can just be not existing (I saw
> several instances with only https or ajp configured)
>
> Can you detail the cause please?
>
>
>
>
> Romain Manni-Bucau
> Twitter: @rmannibucau
> Blog: http://rmannibucau.wordpress.com/
> LinkedIn: http://fr.linkedin.com/in/rmannibucau
> Github: https://github.com/rmannibucau
>
>
> 2014-05-30 13:50 GMT+02:00 <an...@apache.org>:
>
>> Author: andygumbrecht
>> Date: Fri May 30 11:50:45 2014
>> New Revision: 1598562
>>
>> URL: http://svn.apache.org/r1598562
>> Log:
>> TOMEE-1230 Provide the known server service port to RemoteServer for
>> better startup monitoring.
>>
>> Modified:
>>      tomee/tomee/trunk/arquillian/arquillian-tomee-remote/   (props changed)
>>
>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>>
>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
>>
>> tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
>>
>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>>
>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.java
>>
>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java
>>
>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java
>>
>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java
>>
>> Propchange: tomee/tomee/trunk/arquillian/arquillian-tomee-remote/
>>
>> ------------------------------------------------------------------------------
>> --- svn:ignore (original)
>> +++ svn:ignore Fri May 30 11:50:45 2014
>> @@ -1,6 +1,8 @@
>>   *.iml
>>   .classpath
>> +.idea
>>   .project
>>   .settings
>>   target
>>   velocity.*
>> +.idea
>>
>> Modified:
>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>> URL:
>> http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>
>> ==============================================================================
>> ---
>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>> (original)
>> +++
>> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>> Fri May 30 11:50:45 2014
>> @@ -71,9 +71,11 @@ public class RemoteTomEEContainer extend
>>       @Override
>>       public void start() throws LifecycleException {
>>           // see if TomEE is already running by checking the http port
>> -        if (Setup.isRunning(configuration.getHost(),
>> configuration.getHttpPort())) {
>> +        final int httpPort = configuration.getHttpPort();
>>
>> -            logger.info(String.format("TomEE found running on port %s",
>> configuration.getHttpPort()));
>> +        if (Setup.isRunning(configuration.getHost(), httpPort)) {
>> +
>> +            logger.info(String.format("TomEE found running on port %s",
>> httpPort));
>>
>>               return;
>>           }
>> @@ -90,15 +92,18 @@ public class RemoteTomEEContainer extend
>>
>>               configure();
>>
>> -            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT,
>> Integer.toString(configuration.getStopPort()));
>> +            int stopPort = configuration.getStopPort();
>> +            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT,
>> Integer.toString(stopPort));
>>               System.setProperty(RemoteServer.SERVER_SHUTDOWN_COMMAND,
>> configuration.getStopCommand());
>>               System.setProperty(RemoteServer.SERVER_SHUTDOWN_HOST,
>> configuration.getStopHost());
>> +
>>               if (configuration.isDebug()) {
>>                   System.setProperty(RemoteServer.OPENEJB_SERVER_DEBUG,
>> "true");
>>                   System.setProperty(RemoteServer.SERVER_DEBUG_PORT,
>> Integer.toString(configuration.getDebugPort()));
>>               }
>> -            container = new RemoteServer();
>>
>> +            container = new RemoteServer();
>> +            container.setPortStartup(httpPort);
>>               container.start(args(), "start", true);
>>               container.killOnExit();
>>
>>
>> Modified:
>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
>> URL:
>> http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>
>> ==============================================================================
>> ---
>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
>> (original)
>> +++
>> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
>> Fri May 30 11:50:45 2014
>> @@ -54,9 +54,10 @@ public class TomEEWebappContainer extend
>>       @Override
>>       public void start() throws LifecycleException {
>>           // see if TomEE is already running by checking the http port
>> -        if (Setup.isRunning(configuration.getHost(),
>> configuration.getHttpPort())) {
>> +        int httpPort = configuration.getHttpPort();
>> +        if (Setup.isRunning(configuration.getHost(), httpPort)) {
>>
>> -            logger.info(String.format("Tomcat found running on port %s",
>> configuration.getHttpPort()));
>> +            logger.info(String.format("Tomcat found running on port %s",
>> httpPort));
>>
>>               return;
>>           }
>> @@ -141,12 +142,13 @@ public class TomEEWebappContainer extend
>>               if (!wereOpenejbHomeSet &&
>> configuration.isUseInstallerServlet()) {
>>                   // instead of calling the Installer, let's just do like
>> users do
>>                   // call the servlet installer instead
>> -                final String baseUrl = "http://" +
>> configuration.getHost() + ":" + configuration.getHttpPort() +
>> "/tomee/installer";
>> +                final String baseUrl = "http://" +
>> configuration.getHost() + ":" + httpPort + "/tomee/installer";
>>
>>                   assert installer != null;
>>                   installer.addTomEEAdminConfInTomcatUsers(true);
>>
>>                   final RemoteServer tmpContainer = new RemoteServer();
>> +                tmpContainer.setPortStartup(httpPort);
>>                   tmpContainer.start();
>>
>>                   final URL url = new URL(baseUrl);
>> @@ -156,7 +158,7 @@ public class TomEEWebappContainer extend
>>                       final URLConnection uc = url.openConnection();
>>                       // dG9tZWU6dG9tZWU= --> Base64 of tomee:tomee
>>                       final String authorizationString = "Basic
>> dG9tZWU6dG9tZWU=";
>> -                    uc.setRequestProperty ("Authorization",
>> authorizationString);
>> +                    uc.setRequestProperty("Authorization",
>> authorizationString);
>>                       try {
>>                           final InputStream is = uc.getInputStream();
>>                           org.apache.openejb.loader.IO.slurp(is);
>> @@ -173,6 +175,7 @@ public class TomEEWebappContainer extend
>>               }
>>
>>               container = new RemoteServer();
>> +            container.setPortStartup(httpPort);
>>
>>   container.start(Arrays.asList("-Dorg.apache.openejb.servlet.filters=" +
>> ArquillianFilterRunner.class.getName() + "=" +
>> ServletMethodExecutor.ARQUILLIAN_SERVLET_MAPPING), "start", true);
>>               container.killOnExit();
>>           } catch (final Exception e) {
>>
>> Modified:
>> tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
>> URL:
>> http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>
>> ==============================================================================
>> ---
>> tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
>> (original)
>> +++
>> tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
>> Fri May 30 11:50:45 2014
>> @@ -50,6 +50,8 @@ public class RemoteServer {
>>       public static final String SERVER_SHUTDOWN_HOST =
>> "server.shutdown.host";
>>       public static final String SERVER_SHUTDOWN_COMMAND =
>> "server.shutdown.command";
>>       public static final String OPENEJB_SERVER_DEBUG =
>> "openejb.server.debug";
>> +    public static final String START = "start";
>> +    public static final String STOP = "stop";
>>
>>       private boolean debug = options.get(OPENEJB_SERVER_DEBUG, false);
>>       private final boolean profile = options.get("openejb.server.profile",
>> false);
>> @@ -66,10 +68,11 @@ public class RemoteServer {
>>       private Process server;
>>       private final int tries;
>>       private final boolean verbose;
>> -    private final int shutdownPort;
>> +    private final int portShutdown;
>>       private final String host;
>>       private final String command;
>>       private File home;
>> +    private int portStartup;
>>
>>       public RemoteServer() {
>>           this(options.get("connect.tries", 60), options.get("verbose",
>> false));
>> @@ -81,7 +84,8 @@ public class RemoteServer {
>>           home = getHome();
>>           tomcat = (home != null) && (new File(new File(home, "bin"),
>> "catalina.sh").exists());
>>
>> -        shutdownPort = options.get(SERVER_SHUTDOWN_PORT, tomcat ? 8005 :
>> 4200);
>> +        portShutdown = options.get(SERVER_SHUTDOWN_PORT, tomcat ? 8005 :
>> 4200);
>> +        portStartup = portShutdown;
>>           command = options.get(SERVER_SHUTDOWN_COMMAND, "SHUTDOWN");
>>           host = options.get(SERVER_SHUTDOWN_HOST, "localhost");
>>       }
>> @@ -97,10 +101,10 @@ public class RemoteServer {
>>       }
>>
>>       public static void main(final String[] args) {
>> -        assert args.length > 0 : "no arguments supplied: valid argumen
>> -efts are 'start' or 'stop'";
>> -        if (args[0].equalsIgnoreCase("start")) {
>> +        assert args.length > 0 : "no arguments supplied: valid arguments
>> are 'start' or 'stop'";
>> +        if (args[0].equalsIgnoreCase(START)) {
>>               new RemoteServer().start();
>> -        } else if (args[0].equalsIgnoreCase("stop")) {
>> +        } else if (args[0].equalsIgnoreCase(STOP)) {
>>               final RemoteServer remoteServer = new RemoteServer();
>>               remoteServer.serverHasAlreadyBeenStarted = false;
>>               remoteServer.stop();
>> @@ -109,8 +113,16 @@ public class RemoteServer {
>>           }
>>       }
>>
>> +    public int getPortStartup() {
>> +        return this.portStartup;
>> +    }
>> +
>> +    public void setPortStartup(int portStartup) {
>> +        this.portStartup = portStartup;
>> +    }
>> +
>>       public Properties getProperties() {
>> -        return properties;
>> +        return this.properties;
>>       }
>>
>>       public void destroy() {
>> @@ -125,7 +137,7 @@ public class RemoteServer {
>>       }
>>
>>       public void start() {
>> -        start(Collections.<String>emptyList(), "start", true);
>> +        start(Collections.<String>emptyList(), START, true);
>>       }
>>
>>       public void start(final List<String> additionalArgs, final String
>> cmd, final boolean checkPortAvailable) {
>> @@ -134,9 +146,12 @@ public class RemoteServer {
>>
>>       private void cmd(final List<String> additionalArgs, final String cmd,
>> final boolean checkPortAvailable) {
>>           boolean ok = true;
>> +        final int port = START.equals(cmd) ? portStartup : portShutdown;
>> +
>>           if (checkPortAvailable) {
>> -            ok = !connect();
>> +            ok = !connect(port, 1);
>>           }
>> +
>>           if (ok) {
>>               try {
>>                   if (verbose) {
>> @@ -170,7 +185,7 @@ public class RemoteServer {
>>
>>                   final String java;
>>                   final boolean isWindows = System.getProperty("os.name",
>> "unknown").toLowerCase().startsWith("windows");
>> -                if (isWindows && "start".equals(cmd) &&
>> options.get("server.windows.fork", false)) {
>> +                if (isWindows && START.equals(cmd) &&
>> options.get("server.windows.fork", false)) {
>>                       // run and forget
>>                       java = new File(System.getProperty("java.home"),
>> "bin/javaw").getAbsolutePath();
>>                   } else {
>> @@ -298,7 +313,7 @@ public class RemoteServer {
>>                   }
>>
>>                   if (cmd == null) {
>> -                    argsList.add("start");
>> +                    argsList.add(START);
>>                   } else {
>>                       argsList.add(cmd);
>>                   }
>> @@ -313,9 +328,9 @@ public class RemoteServer {
>>                   final Process process = Runtime.getRuntime().exec(args);
>>                   Pipe.pipeOut(process); // why would we need to redirect
>> System.in to the process, TomEE doesn't use it
>>
>> -                if ("start".equals(cmd)) {
>> +                if (START.equals(cmd)) {
>>                       server = process;
>> -                } else if ("stop".equals(cmd) && server != null) {
>> +                } else if (STOP.equals(cmd) && server != null) {
>>                       server.waitFor();
>>                   }
>>
>> @@ -324,11 +339,12 @@ public class RemoteServer {
>>               }
>>               if (checkPortAvailable) {
>>                   if (debug) {
>> -                    if (!connect(Integer.MAX_VALUE)) {
>> +
>> +                    if (!connect(port, Integer.MAX_VALUE)) {
>>                           throw new OpenEJBRuntimeException("Could not
>> connect to server");
>>                       }
>>                   } else {
>> -                    if (!connect(tries)) {
>> +                    if (!connect(port, tries)) {
>>                           throw new OpenEJBRuntimeException("Could not
>> connect to server");
>>                       }
>>                   }
>> @@ -443,7 +459,7 @@ public class RemoteServer {
>>           if (verbose) {
>>               System.out.print("Waiting for TomEE shutdown.");
>>           }
>> -        while (connect()) {
>> +        while (connect(portShutdown, tries)) {
>>               Thread.sleep(1000);
>>               if (verbose) {
>>                   System.out.print(".");
>> @@ -459,7 +475,7 @@ public class RemoteServer {
>>           Socket socket = null;
>>           OutputStream stream = null;
>>           try {
>> -            socket = new Socket(host, shutdownPort);
>> +            socket = new Socket(host, portShutdown);
>>               stream = socket.getOutputStream();
>>               final String shutdown = command + Character.toString((char)
>> 0);
>>               for (int i = 0; i < shutdown.length(); i++) {
>> @@ -478,11 +494,7 @@ public class RemoteServer {
>>           }
>>       }
>>
>> -    private boolean connect() {
>> -        return connect(1);
>> -    }
>> -
>> -    private boolean connect(int tries) {
>> +    private boolean connect(final int port, int tries) {
>>           if (verbose) {
>>               System.out.println("[] CONNECT ATTEMPT " + (this.tries -
>> tries));
>>           }
>> @@ -490,7 +502,7 @@ public class RemoteServer {
>>           Socket s = null;
>>           try {
>>               s = new Socket();
>> -            s.connect(new InetSocketAddress(host, shutdownPort), 1000);
>> +            s.connect(new InetSocketAddress(this.host, port), 1000);
>>               s.getOutputStream().close();
>>               if (verbose) {
>>                   System.out.println("[] CONNECTED IN " + (this.tries -
>> tries));
>> @@ -507,7 +519,7 @@ public class RemoteServer {
>>                   } catch (final Exception e2) {
>>                       e.printStackTrace();
>>                   }
>> -                return connect(--tries);
>> +                return connect(port, --tries);
>>               }
>>           } finally {
>>               if (s != null) {
>>
>> Modified:
>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>> URL:
>> http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>
>> ==============================================================================
>> ---
>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>> (original)
>> +++
>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>> Fri May 30 11:50:45 2014
>> @@ -81,6 +81,7 @@ public abstract class AbstractTomEEMojo
>>       private static final String REMOVE_PREFIX = "remove:";
>>       public static final String QUIT_CMD = "quit";
>>       public static final String EXIT_CMD = "exit";
>> +    public static final String TOM_EE = "TomEE";
>>
>>       @Component
>>       protected ArtifactFactory factory;
>> @@ -258,7 +259,7 @@ public abstract class AbstractTomEEMojo
>>
>>       protected File deployedFile = null;
>>       protected RemoteServer server = null;
>> -    protected String container = "TomEE";
>> +    protected String container = TOM_EE;
>>
>>       @Override
>>       public void execute() throws MojoExecutionException,
>> MojoFailureException {
>> @@ -711,7 +712,10 @@ public abstract class AbstractTomEEMojo
>>
>>           addShutdownHooks(server); // some shutdown hooks are always added
>> (see UpdatableTomEEMojo)
>>
>> -        if ("TomEE".equals(container)) {
>> +        if (TOM_EE.equals(container)) {
>> +
>> +            server.setPortStartup(tomeeHttpPort);
>> +
>>               getLog().info("Running '" +
>> getClass().getSimpleName().replace("TomEEMojo",
>> "").toLowerCase(Locale.ENGLISH)
>>                   + "'. Configured TomEE in plugin is " + tomeeHost + ":" +
>> tomeeHttpPort
>>                   + " (plugin shutdown port is " + tomeeShutdownPort + ")");
>> @@ -998,7 +1002,7 @@ public abstract class AbstractTomEEMojo
>>
>>               File file = new File(catalinaBase, "conf/tomee.xml");
>>               if (file.exists()) {
>> -                container = "TomEE";
>> +                container = TOM_EE;
>>               } else {
>>                   container = "OpenEJB";
>>                   file = new File(catalinaBase, "conf/openejb.xml");
>>
>> Modified:
>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.java
>> URL:
>> http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>
>> ==============================================================================
>> ---
>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.java
>> (original)
>> +++
>> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.java
>> Fri May 30 11:50:45 2014
>> @@ -28,6 +28,7 @@ import java.io.InputStream;
>>   import java.io.InputStreamReader;
>>   import java.util.ArrayList;
>>   import java.util.Collection;
>> +import java.util.Collections;
>>   import java.util.LinkedList;
>>   import java.util.List;
>>   import java.util.Locale;
>> @@ -83,7 +84,9 @@ public class ExecRunner {
>>           if (scripts != null) { // dont use filefilter to avoid dependency
>> issue
>>               for (final File f : scripts) {
>>                   if (f.getName().endsWith(".sh") && !f.canExecute()) {
>> -                    f.setExecutable(true, true);
>> +                    if(!f.setExecutable(true, true)){
>> +                        System.err.println("Failed make file executable:
>> " + f);
>> +                    }
>>                   }
>>               }
>>           }
>> @@ -101,7 +104,9 @@ public class ExecRunner {
>>                       throw new IllegalArgumentException("Can't find  " +
>> cmd);
>>                   }
>>                   if (cmd.endsWith(".sh")) {
>> -                    scriptFile.setExecutable(true);
>> +                    if(!scriptFile.setExecutable(true)){
>> +                        System.err.println("Failed make script file
>> executable: " + scriptFile);
>> +                    }
>>                   }
>>               }
>>           }
>> @@ -117,15 +122,15 @@ public class ExecRunner {
>>               System.setProperty("server.shutdown.command",
>> config.getProperty("shutdownCommand"));
>>
>>               final RemoteServer server = new RemoteServer();
>> +            server.setPortStartup(Integer.parseInt(parser.http()));
>> +
>>               if (config.containsKey("additionalClasspath")) {
>>
>>   server.setAdditionalClasspath(config.getProperty("additionalClasspath"));
>>               }
>>
>>               final List<String> jvmArgs = new LinkedList<String>();
>>               if (additionalArgs != null) {
>> -                for (final String kv : additionalArgs.split(" ")) {
>> -                    jvmArgs.add(kv);
>> -                }
>> +                Collections.addAll(jvmArgs, additionalArgs.split(" "));
>>               }
>>               for (final String k : config.stringPropertyNames()) {
>>                   if (k.startsWith("jvmArg.")) {
>>
>> Modified:
>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java
>> URL:
>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>
>> ==============================================================================
>> ---
>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java
>> (original)
>> +++
>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java
>> Fri May 30 11:50:45 2014
>> @@ -32,7 +32,6 @@ import java.io.File;
>>   import java.io.IOException;
>>   import java.io.InputStream;
>>   import java.util.Arrays;
>> -import java.util.Collections;
>>   import java.util.Properties;
>>
>>   /**
>> @@ -45,6 +44,7 @@ public class ContainersImplTomEE extends
>>       private Exception exception;
>>       private AppInfo appInfo;
>>       private File currentFile = null;
>> +    private int port = 8080;
>>
>>       private Deployer lookup() {
>>           final Options options = new Options(System.getProperties());
>> @@ -53,8 +53,9 @@ public class ContainersImplTomEE extends
>>           String port = System.getProperty("server.http.port");
>>           if (port != null) {
>>               props.put(Context.PROVIDER_URL,
>> options.get(Context.PROVIDER_URL,"http://localhost:" + port +
>> "/tomee/ejb"));
>> +            this.port = Integer.parseInt(port);
>>           } else {
>> -            throw new OpenEJBTCKRuntimeException("Please set the tomee
>> port as a system property");
>> +            throw new OpenEJBTCKRuntimeException("Please set the tomee
>> port using the system property 'server.http.port'");
>>           }
>>
>>           final String deployerJndi =
>> System.getProperty("openejb.deployer.jndiname",
>> "openejb/DeployerBusinessRemote");
>> @@ -70,6 +71,7 @@ public class ContainersImplTomEE extends
>>           System.out.println("ContainersImpl=" +
>> ContainersImplTomEE.class.getName());
>>           System.out.println("Initialized ContainersImplTomEE " +
>> (++count));
>>           server = new RemoteServer();
>> +        server.setPortStartup(this.port);
>>       }
>>       @Override
>>       public boolean deploy(InputStream archive, String name) throws
>> IOException {
>> @@ -143,8 +145,10 @@ public class ContainersImplTomEE extends
>>       }
>>
>>       protected File getFile(String name) {
>> -        final File dir = new File(tmpDir, Math.random()+"");
>> -        dir.mkdir();
>> +        final File dir = new File(tmpDir, Math.random() + "");
>> +        if (!dir.exists() && !dir.mkdir()) {
>> +            throw new RuntimeException("Failed to create directory: " +
>> dir);
>> +        }
>>           dir.deleteOnExit();
>>           return new File(dir, name);
>>       }
>>
>> Modified:
>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java
>> URL:
>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>
>> ==============================================================================
>> ---
>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java
>> (original)
>> +++
>> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java
>> Fri May 30 11:50:45 2014
>> @@ -71,7 +71,14 @@ public class FullRestartContainer extend
>>           System.out.println(currentFile);
>>           writeToFile(currentFile, archive);
>>
>> -        server = new RemoteServer(100, true);
>> +        String port = System.getProperty("server.http.port");
>> +        if (port != null) {
>> +            server = new RemoteServer(100, true);
>> +            server.setPortStartup(Integer.parseInt(port));
>> +        } else {
>> +            throw new OpenEJBTCKRuntimeException("Please set the tomee
>> port using the system property 'server.http.port'");
>> +        }
>> +
>>           try {
>>               server.start();
>>           } catch (RuntimeException e) {
>> @@ -84,7 +91,11 @@ public class FullRestartContainer extend
>>
>>       @Override
>>       public void undeploy(String name) throws IOException {
>> -        server.destroy();
>> +
>> +        if (null != server) {
>> +            server.destroy();
>> +        }
>> +
>>           File folder = new File(currentFile.getParentFile(),
>> currentFile.getName().substring(0, currentFile.getName().length() - 4));
>>           if (folder.exists()) {
>>               delete(folder);
>> @@ -109,9 +120,9 @@ public class FullRestartContainer extend
>>           String port = System.getProperty("server.http.port");
>>           if (port != null) {
>>               System.out.println("provider url = " + "http://localhost:" +
>> port + "/tomee/ejb");
>> -            props.put(Context.PROVIDER_URL,
>> options.get(Context.PROVIDER_URL,"http://localhost:" + port +
>> "/tomee/ejb"));
>> +            props.put(Context.PROVIDER_URL,
>> options.get(Context.PROVIDER_URL, "http://localhost:" + port +
>> "/tomee/ejb"));
>>           } else {
>> -            throw new OpenEJBTCKRuntimeException("Please set the tomee
>> port as a system property");
>> +            throw new OpenEJBTCKRuntimeException("Please set the tomee
>> port using the system property 'server.http.port'");
>>           }
>>
>>           try {
>>
>> Modified:
>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java
>> URL:
>> http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>>
>> ==============================================================================
>> ---
>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java
>> (original)
>> +++
>> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java
>> Fri May 30 11:50:45 2014
>> @@ -92,6 +92,7 @@ public class RemoteTomEEEJBContainer ext
>>               try {
>>                   instance = new RemoteTomEEEJBContainer();
>>                   instance.container = new RemoteServer();
>> +
>>   instance.container.setPortStartup(Integer.parseInt(parser.http()));
>>                   instance.container.start();
>>                   instance.context = new InitialContext(new Properties() {{
>>                       setProperty(Context.INITIAL_CONTEXT_FACTORY,
>> RemoteInitialContextFactory.class.getName());
>>
>>
>>

-- 
   Andy Gumbrecht

   http://www.tomitribe.com
   agumbrecht@tomitribe.com
   https://twitter.com/AndyGeeDe

   TomEE treibt Tomitribe! | http://tomee.apache.org


Re: svn commit: r1598562 - in /tomee/tomee/trunk: arquillian/arquillian-tomee-remote/ arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/ arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/w...

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Hi

I'm not sure to get the goal of it.

PortStartup is set as system property where needed (mainly arquillian) but
doesn't add much value otherwise since it can just be not existing (I saw
several instances with only https or ajp configured)

Can you detail the cause please?




Romain Manni-Bucau
Twitter: @rmannibucau
Blog: http://rmannibucau.wordpress.com/
LinkedIn: http://fr.linkedin.com/in/rmannibucau
Github: https://github.com/rmannibucau


2014-05-30 13:50 GMT+02:00 <an...@apache.org>:

> Author: andygumbrecht
> Date: Fri May 30 11:50:45 2014
> New Revision: 1598562
>
> URL: http://svn.apache.org/r1598562
> Log:
> TOMEE-1230 Provide the known server service port to RemoteServer for
> better startup monitoring.
>
> Modified:
>     tomee/tomee/trunk/arquillian/arquillian-tomee-remote/   (props changed)
>
> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
>
> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
>
> tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
>
> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
>
> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.java
>
> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java
>
> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java
>
> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java
>
> Propchange: tomee/tomee/trunk/arquillian/arquillian-tomee-remote/
>
> ------------------------------------------------------------------------------
> --- svn:ignore (original)
> +++ svn:ignore Fri May 30 11:50:45 2014
> @@ -1,6 +1,8 @@
>  *.iml
>  .classpath
> +.idea
>  .project
>  .settings
>  target
>  velocity.*
> +.idea
>
> Modified:
> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
> URL:
> http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>
> ==============================================================================
> ---
> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
> (original)
> +++
> tomee/tomee/trunk/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
> Fri May 30 11:50:45 2014
> @@ -71,9 +71,11 @@ public class RemoteTomEEContainer extend
>      @Override
>      public void start() throws LifecycleException {
>          // see if TomEE is already running by checking the http port
> -        if (Setup.isRunning(configuration.getHost(),
> configuration.getHttpPort())) {
> +        final int httpPort = configuration.getHttpPort();
>
> -            logger.info(String.format("TomEE found running on port %s",
> configuration.getHttpPort()));
> +        if (Setup.isRunning(configuration.getHost(), httpPort)) {
> +
> +            logger.info(String.format("TomEE found running on port %s",
> httpPort));
>
>              return;
>          }
> @@ -90,15 +92,18 @@ public class RemoteTomEEContainer extend
>
>              configure();
>
> -            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT,
> Integer.toString(configuration.getStopPort()));
> +            int stopPort = configuration.getStopPort();
> +            System.setProperty(RemoteServer.SERVER_SHUTDOWN_PORT,
> Integer.toString(stopPort));
>              System.setProperty(RemoteServer.SERVER_SHUTDOWN_COMMAND,
> configuration.getStopCommand());
>              System.setProperty(RemoteServer.SERVER_SHUTDOWN_HOST,
> configuration.getStopHost());
> +
>              if (configuration.isDebug()) {
>                  System.setProperty(RemoteServer.OPENEJB_SERVER_DEBUG,
> "true");
>                  System.setProperty(RemoteServer.SERVER_DEBUG_PORT,
> Integer.toString(configuration.getDebugPort()));
>              }
> -            container = new RemoteServer();
>
> +            container = new RemoteServer();
> +            container.setPortStartup(httpPort);
>              container.start(args(), "start", true);
>              container.killOnExit();
>
>
> Modified:
> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
> URL:
> http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>
> ==============================================================================
> ---
> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
> (original)
> +++
> tomee/tomee/trunk/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
> Fri May 30 11:50:45 2014
> @@ -54,9 +54,10 @@ public class TomEEWebappContainer extend
>      @Override
>      public void start() throws LifecycleException {
>          // see if TomEE is already running by checking the http port
> -        if (Setup.isRunning(configuration.getHost(),
> configuration.getHttpPort())) {
> +        int httpPort = configuration.getHttpPort();
> +        if (Setup.isRunning(configuration.getHost(), httpPort)) {
>
> -            logger.info(String.format("Tomcat found running on port %s",
> configuration.getHttpPort()));
> +            logger.info(String.format("Tomcat found running on port %s",
> httpPort));
>
>              return;
>          }
> @@ -141,12 +142,13 @@ public class TomEEWebappContainer extend
>              if (!wereOpenejbHomeSet &&
> configuration.isUseInstallerServlet()) {
>                  // instead of calling the Installer, let's just do like
> users do
>                  // call the servlet installer instead
> -                final String baseUrl = "http://" +
> configuration.getHost() + ":" + configuration.getHttpPort() +
> "/tomee/installer";
> +                final String baseUrl = "http://" +
> configuration.getHost() + ":" + httpPort + "/tomee/installer";
>
>                  assert installer != null;
>                  installer.addTomEEAdminConfInTomcatUsers(true);
>
>                  final RemoteServer tmpContainer = new RemoteServer();
> +                tmpContainer.setPortStartup(httpPort);
>                  tmpContainer.start();
>
>                  final URL url = new URL(baseUrl);
> @@ -156,7 +158,7 @@ public class TomEEWebappContainer extend
>                      final URLConnection uc = url.openConnection();
>                      // dG9tZWU6dG9tZWU= --> Base64 of tomee:tomee
>                      final String authorizationString = "Basic
> dG9tZWU6dG9tZWU=";
> -                    uc.setRequestProperty ("Authorization",
> authorizationString);
> +                    uc.setRequestProperty("Authorization",
> authorizationString);
>                      try {
>                          final InputStream is = uc.getInputStream();
>                          org.apache.openejb.loader.IO.slurp(is);
> @@ -173,6 +175,7 @@ public class TomEEWebappContainer extend
>              }
>
>              container = new RemoteServer();
> +            container.setPortStartup(httpPort);
>
>  container.start(Arrays.asList("-Dorg.apache.openejb.servlet.filters=" +
> ArquillianFilterRunner.class.getName() + "=" +
> ServletMethodExecutor.ARQUILLIAN_SERVLET_MAPPING), "start", true);
>              container.killOnExit();
>          } catch (final Exception e) {
>
> Modified:
> tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
> URL:
> http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>
> ==============================================================================
> ---
> tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
> (original)
> +++
> tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
> Fri May 30 11:50:45 2014
> @@ -50,6 +50,8 @@ public class RemoteServer {
>      public static final String SERVER_SHUTDOWN_HOST =
> "server.shutdown.host";
>      public static final String SERVER_SHUTDOWN_COMMAND =
> "server.shutdown.command";
>      public static final String OPENEJB_SERVER_DEBUG =
> "openejb.server.debug";
> +    public static final String START = "start";
> +    public static final String STOP = "stop";
>
>      private boolean debug = options.get(OPENEJB_SERVER_DEBUG, false);
>      private final boolean profile = options.get("openejb.server.profile",
> false);
> @@ -66,10 +68,11 @@ public class RemoteServer {
>      private Process server;
>      private final int tries;
>      private final boolean verbose;
> -    private final int shutdownPort;
> +    private final int portShutdown;
>      private final String host;
>      private final String command;
>      private File home;
> +    private int portStartup;
>
>      public RemoteServer() {
>          this(options.get("connect.tries", 60), options.get("verbose",
> false));
> @@ -81,7 +84,8 @@ public class RemoteServer {
>          home = getHome();
>          tomcat = (home != null) && (new File(new File(home, "bin"),
> "catalina.sh").exists());
>
> -        shutdownPort = options.get(SERVER_SHUTDOWN_PORT, tomcat ? 8005 :
> 4200);
> +        portShutdown = options.get(SERVER_SHUTDOWN_PORT, tomcat ? 8005 :
> 4200);
> +        portStartup = portShutdown;
>          command = options.get(SERVER_SHUTDOWN_COMMAND, "SHUTDOWN");
>          host = options.get(SERVER_SHUTDOWN_HOST, "localhost");
>      }
> @@ -97,10 +101,10 @@ public class RemoteServer {
>      }
>
>      public static void main(final String[] args) {
> -        assert args.length > 0 : "no arguments supplied: valid argumen
> -efts are 'start' or 'stop'";
> -        if (args[0].equalsIgnoreCase("start")) {
> +        assert args.length > 0 : "no arguments supplied: valid arguments
> are 'start' or 'stop'";
> +        if (args[0].equalsIgnoreCase(START)) {
>              new RemoteServer().start();
> -        } else if (args[0].equalsIgnoreCase("stop")) {
> +        } else if (args[0].equalsIgnoreCase(STOP)) {
>              final RemoteServer remoteServer = new RemoteServer();
>              remoteServer.serverHasAlreadyBeenStarted = false;
>              remoteServer.stop();
> @@ -109,8 +113,16 @@ public class RemoteServer {
>          }
>      }
>
> +    public int getPortStartup() {
> +        return this.portStartup;
> +    }
> +
> +    public void setPortStartup(int portStartup) {
> +        this.portStartup = portStartup;
> +    }
> +
>      public Properties getProperties() {
> -        return properties;
> +        return this.properties;
>      }
>
>      public void destroy() {
> @@ -125,7 +137,7 @@ public class RemoteServer {
>      }
>
>      public void start() {
> -        start(Collections.<String>emptyList(), "start", true);
> +        start(Collections.<String>emptyList(), START, true);
>      }
>
>      public void start(final List<String> additionalArgs, final String
> cmd, final boolean checkPortAvailable) {
> @@ -134,9 +146,12 @@ public class RemoteServer {
>
>      private void cmd(final List<String> additionalArgs, final String cmd,
> final boolean checkPortAvailable) {
>          boolean ok = true;
> +        final int port = START.equals(cmd) ? portStartup : portShutdown;
> +
>          if (checkPortAvailable) {
> -            ok = !connect();
> +            ok = !connect(port, 1);
>          }
> +
>          if (ok) {
>              try {
>                  if (verbose) {
> @@ -170,7 +185,7 @@ public class RemoteServer {
>
>                  final String java;
>                  final boolean isWindows = System.getProperty("os.name",
> "unknown").toLowerCase().startsWith("windows");
> -                if (isWindows && "start".equals(cmd) &&
> options.get("server.windows.fork", false)) {
> +                if (isWindows && START.equals(cmd) &&
> options.get("server.windows.fork", false)) {
>                      // run and forget
>                      java = new File(System.getProperty("java.home"),
> "bin/javaw").getAbsolutePath();
>                  } else {
> @@ -298,7 +313,7 @@ public class RemoteServer {
>                  }
>
>                  if (cmd == null) {
> -                    argsList.add("start");
> +                    argsList.add(START);
>                  } else {
>                      argsList.add(cmd);
>                  }
> @@ -313,9 +328,9 @@ public class RemoteServer {
>                  final Process process = Runtime.getRuntime().exec(args);
>                  Pipe.pipeOut(process); // why would we need to redirect
> System.in to the process, TomEE doesn't use it
>
> -                if ("start".equals(cmd)) {
> +                if (START.equals(cmd)) {
>                      server = process;
> -                } else if ("stop".equals(cmd) && server != null) {
> +                } else if (STOP.equals(cmd) && server != null) {
>                      server.waitFor();
>                  }
>
> @@ -324,11 +339,12 @@ public class RemoteServer {
>              }
>              if (checkPortAvailable) {
>                  if (debug) {
> -                    if (!connect(Integer.MAX_VALUE)) {
> +
> +                    if (!connect(port, Integer.MAX_VALUE)) {
>                          throw new OpenEJBRuntimeException("Could not
> connect to server");
>                      }
>                  } else {
> -                    if (!connect(tries)) {
> +                    if (!connect(port, tries)) {
>                          throw new OpenEJBRuntimeException("Could not
> connect to server");
>                      }
>                  }
> @@ -443,7 +459,7 @@ public class RemoteServer {
>          if (verbose) {
>              System.out.print("Waiting for TomEE shutdown.");
>          }
> -        while (connect()) {
> +        while (connect(portShutdown, tries)) {
>              Thread.sleep(1000);
>              if (verbose) {
>                  System.out.print(".");
> @@ -459,7 +475,7 @@ public class RemoteServer {
>          Socket socket = null;
>          OutputStream stream = null;
>          try {
> -            socket = new Socket(host, shutdownPort);
> +            socket = new Socket(host, portShutdown);
>              stream = socket.getOutputStream();
>              final String shutdown = command + Character.toString((char)
> 0);
>              for (int i = 0; i < shutdown.length(); i++) {
> @@ -478,11 +494,7 @@ public class RemoteServer {
>          }
>      }
>
> -    private boolean connect() {
> -        return connect(1);
> -    }
> -
> -    private boolean connect(int tries) {
> +    private boolean connect(final int port, int tries) {
>          if (verbose) {
>              System.out.println("[] CONNECT ATTEMPT " + (this.tries -
> tries));
>          }
> @@ -490,7 +502,7 @@ public class RemoteServer {
>          Socket s = null;
>          try {
>              s = new Socket();
> -            s.connect(new InetSocketAddress(host, shutdownPort), 1000);
> +            s.connect(new InetSocketAddress(this.host, port), 1000);
>              s.getOutputStream().close();
>              if (verbose) {
>                  System.out.println("[] CONNECTED IN " + (this.tries -
> tries));
> @@ -507,7 +519,7 @@ public class RemoteServer {
>                  } catch (final Exception e2) {
>                      e.printStackTrace();
>                  }
> -                return connect(--tries);
> +                return connect(port, --tries);
>              }
>          } finally {
>              if (s != null) {
>
> Modified:
> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
> URL:
> http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>
> ==============================================================================
> ---
> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
> (original)
> +++
> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
> Fri May 30 11:50:45 2014
> @@ -81,6 +81,7 @@ public abstract class AbstractTomEEMojo
>      private static final String REMOVE_PREFIX = "remove:";
>      public static final String QUIT_CMD = "quit";
>      public static final String EXIT_CMD = "exit";
> +    public static final String TOM_EE = "TomEE";
>
>      @Component
>      protected ArtifactFactory factory;
> @@ -258,7 +259,7 @@ public abstract class AbstractTomEEMojo
>
>      protected File deployedFile = null;
>      protected RemoteServer server = null;
> -    protected String container = "TomEE";
> +    protected String container = TOM_EE;
>
>      @Override
>      public void execute() throws MojoExecutionException,
> MojoFailureException {
> @@ -711,7 +712,10 @@ public abstract class AbstractTomEEMojo
>
>          addShutdownHooks(server); // some shutdown hooks are always added
> (see UpdatableTomEEMojo)
>
> -        if ("TomEE".equals(container)) {
> +        if (TOM_EE.equals(container)) {
> +
> +            server.setPortStartup(tomeeHttpPort);
> +
>              getLog().info("Running '" +
> getClass().getSimpleName().replace("TomEEMojo",
> "").toLowerCase(Locale.ENGLISH)
>                  + "'. Configured TomEE in plugin is " + tomeeHost + ":" +
> tomeeHttpPort
>                  + " (plugin shutdown port is " + tomeeShutdownPort + ")");
> @@ -998,7 +1002,7 @@ public abstract class AbstractTomEEMojo
>
>              File file = new File(catalinaBase, "conf/tomee.xml");
>              if (file.exists()) {
> -                container = "TomEE";
> +                container = TOM_EE;
>              } else {
>                  container = "OpenEJB";
>                  file = new File(catalinaBase, "conf/openejb.xml");
>
> Modified:
> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.java
> URL:
> http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>
> ==============================================================================
> ---
> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.java
> (original)
> +++
> tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.java
> Fri May 30 11:50:45 2014
> @@ -28,6 +28,7 @@ import java.io.InputStream;
>  import java.io.InputStreamReader;
>  import java.util.ArrayList;
>  import java.util.Collection;
> +import java.util.Collections;
>  import java.util.LinkedList;
>  import java.util.List;
>  import java.util.Locale;
> @@ -83,7 +84,9 @@ public class ExecRunner {
>          if (scripts != null) { // dont use filefilter to avoid dependency
> issue
>              for (final File f : scripts) {
>                  if (f.getName().endsWith(".sh") && !f.canExecute()) {
> -                    f.setExecutable(true, true);
> +                    if(!f.setExecutable(true, true)){
> +                        System.err.println("Failed make file executable:
> " + f);
> +                    }
>                  }
>              }
>          }
> @@ -101,7 +104,9 @@ public class ExecRunner {
>                      throw new IllegalArgumentException("Can't find  " +
> cmd);
>                  }
>                  if (cmd.endsWith(".sh")) {
> -                    scriptFile.setExecutable(true);
> +                    if(!scriptFile.setExecutable(true)){
> +                        System.err.println("Failed make script file
> executable: " + scriptFile);
> +                    }
>                  }
>              }
>          }
> @@ -117,15 +122,15 @@ public class ExecRunner {
>              System.setProperty("server.shutdown.command",
> config.getProperty("shutdownCommand"));
>
>              final RemoteServer server = new RemoteServer();
> +            server.setPortStartup(Integer.parseInt(parser.http()));
> +
>              if (config.containsKey("additionalClasspath")) {
>
>  server.setAdditionalClasspath(config.getProperty("additionalClasspath"));
>              }
>
>              final List<String> jvmArgs = new LinkedList<String>();
>              if (additionalArgs != null) {
> -                for (final String kv : additionalArgs.split(" ")) {
> -                    jvmArgs.add(kv);
> -                }
> +                Collections.addAll(jvmArgs, additionalArgs.split(" "));
>              }
>              for (final String k : config.stringPropertyNames()) {
>                  if (k.startsWith("jvmArg.")) {
>
> Modified:
> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java
> URL:
> http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>
> ==============================================================================
> ---
> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java
> (original)
> +++
> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/ContainersImplTomEE.java
> Fri May 30 11:50:45 2014
> @@ -32,7 +32,6 @@ import java.io.File;
>  import java.io.IOException;
>  import java.io.InputStream;
>  import java.util.Arrays;
> -import java.util.Collections;
>  import java.util.Properties;
>
>  /**
> @@ -45,6 +44,7 @@ public class ContainersImplTomEE extends
>      private Exception exception;
>      private AppInfo appInfo;
>      private File currentFile = null;
> +    private int port = 8080;
>
>      private Deployer lookup() {
>          final Options options = new Options(System.getProperties());
> @@ -53,8 +53,9 @@ public class ContainersImplTomEE extends
>          String port = System.getProperty("server.http.port");
>          if (port != null) {
>              props.put(Context.PROVIDER_URL,
> options.get(Context.PROVIDER_URL,"http://localhost:" + port +
> "/tomee/ejb"));
> +            this.port = Integer.parseInt(port);
>          } else {
> -            throw new OpenEJBTCKRuntimeException("Please set the tomee
> port as a system property");
> +            throw new OpenEJBTCKRuntimeException("Please set the tomee
> port using the system property 'server.http.port'");
>          }
>
>          final String deployerJndi =
> System.getProperty("openejb.deployer.jndiname",
> "openejb/DeployerBusinessRemote");
> @@ -70,6 +71,7 @@ public class ContainersImplTomEE extends
>          System.out.println("ContainersImpl=" +
> ContainersImplTomEE.class.getName());
>          System.out.println("Initialized ContainersImplTomEE " +
> (++count));
>          server = new RemoteServer();
> +        server.setPortStartup(this.port);
>      }
>      @Override
>      public boolean deploy(InputStream archive, String name) throws
> IOException {
> @@ -143,8 +145,10 @@ public class ContainersImplTomEE extends
>      }
>
>      protected File getFile(String name) {
> -        final File dir = new File(tmpDir, Math.random()+"");
> -        dir.mkdir();
> +        final File dir = new File(tmpDir, Math.random() + "");
> +        if (!dir.exists() && !dir.mkdir()) {
> +            throw new RuntimeException("Failed to create directory: " +
> dir);
> +        }
>          dir.deleteOnExit();
>          return new File(dir, name);
>      }
>
> Modified:
> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java
> URL:
> http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>
> ==============================================================================
> ---
> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java
> (original)
> +++
> tomee/tomee/trunk/tck/tck-common/src/main/java/org/apache/openejb/tck/impl/FullRestartContainer.java
> Fri May 30 11:50:45 2014
> @@ -71,7 +71,14 @@ public class FullRestartContainer extend
>          System.out.println(currentFile);
>          writeToFile(currentFile, archive);
>
> -        server = new RemoteServer(100, true);
> +        String port = System.getProperty("server.http.port");
> +        if (port != null) {
> +            server = new RemoteServer(100, true);
> +            server.setPortStartup(Integer.parseInt(port));
> +        } else {
> +            throw new OpenEJBTCKRuntimeException("Please set the tomee
> port using the system property 'server.http.port'");
> +        }
> +
>          try {
>              server.start();
>          } catch (RuntimeException e) {
> @@ -84,7 +91,11 @@ public class FullRestartContainer extend
>
>      @Override
>      public void undeploy(String name) throws IOException {
> -        server.destroy();
> +
> +        if (null != server) {
> +            server.destroy();
> +        }
> +
>          File folder = new File(currentFile.getParentFile(),
> currentFile.getName().substring(0, currentFile.getName().length() - 4));
>          if (folder.exists()) {
>              delete(folder);
> @@ -109,9 +120,9 @@ public class FullRestartContainer extend
>          String port = System.getProperty("server.http.port");
>          if (port != null) {
>              System.out.println("provider url = " + "http://localhost:" +
> port + "/tomee/ejb");
> -            props.put(Context.PROVIDER_URL,
> options.get(Context.PROVIDER_URL,"http://localhost:" + port +
> "/tomee/ejb"));
> +            props.put(Context.PROVIDER_URL,
> options.get(Context.PROVIDER_URL, "http://localhost:" + port +
> "/tomee/ejb"));
>          } else {
> -            throw new OpenEJBTCKRuntimeException("Please set the tomee
> port as a system property");
> +            throw new OpenEJBTCKRuntimeException("Please set the tomee
> port using the system property 'server.http.port'");
>          }
>
>          try {
>
> Modified:
> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java
> URL:
> http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java?rev=1598562&r1=1598561&r2=1598562&view=diff
>
> ==============================================================================
> ---
> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java
> (original)
> +++
> tomee/tomee/trunk/tomee/apache-tomee/src/main/java/org/apache/tomee/RemoteTomEEEJBContainer.java
> Fri May 30 11:50:45 2014
> @@ -92,6 +92,7 @@ public class RemoteTomEEEJBContainer ext
>              try {
>                  instance = new RemoteTomEEEJBContainer();
>                  instance.container = new RemoteServer();
> +
>  instance.container.setPortStartup(Integer.parseInt(parser.http()));
>                  instance.container.start();
>                  instance.context = new InitialContext(new Properties() {{
>                      setProperty(Context.INITIAL_CONTEXT_FACTORY,
> RemoteInitialContextFactory.class.getName());
>
>
>