Author: rmannibucau
Date: Fri Jan 31 17:05:07 2014
New Revision: 1563178

URL: http://svn.apache.org/r1563178
Log:
TOMEE-1114 support openejb-standalone with tomee maven plugin

Modified:
    
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/test/java/org/apache/openejb/maven/plugin/TomEEMavenPluginRule.java

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=1563178&r1=1563177&r2=1563178&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 Jan 31 17:05:07 2014
@@ -16,12 +16,6 @@
  */
 package org.apache.openejb.config;
 
-import org.apache.openejb.OpenEJBRuntimeException;
-import org.apache.openejb.loader.IO;
-import org.apache.openejb.loader.Options;
-import org.apache.openejb.util.Join;
-import org.apache.openejb.util.Pipe;
-
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -35,6 +29,12 @@ import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
+import org.apache.openejb.OpenEJBRuntimeException;
+import org.apache.openejb.loader.IO;
+import org.apache.openejb.loader.Options;
+import org.apache.openejb.util.Join;
+import org.apache.openejb.util.Pipe;
+
 /**
  * @version $Rev$ $Date$
  */
@@ -156,6 +156,9 @@ public class RemoteServer {
                 final File openejbJar = lib("openejb-core", lib, webapplib);
                 final File javaagentJar = lib("openejb-javaagent", lib, 
webapplib);
 
+                final File conf = new File(home, "conf");
+                final File loggingProperties = new File(conf, 
"logging.properties");
+
                 //File openejbJar = new File(lib, "openejb-core-" + version + 
".jar");
 
                 final String java;
@@ -167,30 +170,62 @@ public class RemoteServer {
                     java = new File(System.getProperty("java.home"), 
"bin/java").getAbsolutePath();
                 }
 
+                final List<String> argsList = new ArrayList<String>(20);
+                argsList.add(java);
+                argsList.add("-XX:+HeapDumpOnOutOfMemoryError");
+
+                if (debug) {
+                    argsList.add("-Xdebug");
+                    argsList.add("-Xnoagent");
+                    argsList.add("-Djava.compiler=NONE");
+                    
argsList.add("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=" + 
options.get(SERVER_DEBUG_PORT, 5005));
+                }
+
+                if (profile) {
+                    String yourkitHome = options.get("yourkit.home", 
"/Applications/YourKit_Java_Profiler_9.5.6.app/bin/mac/");
+                    if (!yourkitHome.endsWith("/"))
+                        yourkitHome += "/";
+                    final String yourkitOpts = options.get("yourkit.opts", 
"disablestacktelemetry,disableexceptiontelemetry,builtinprobes=none,delay=10000,sessionname=Tomcat");
+                    argsList.add("-agentpath:" + yourkitHome + 
"libyjpagent.jnilib=" + yourkitOpts);
+                }
+
+                if (javaOpts != null) {
+                    Collections.addAll(argsList, javaOpts.split(" +"));
+                }
+
+                final Map<String, String> addedArgs = new HashMap<String, 
String>();
+                if (additionalArgs != null) {
+                    for (final String arg : additionalArgs) {
+                        final String[] values = arg.split("=");
+                        if (values.length == 1) {
+                            addedArgs.put(values[0], "null");
+                        } else {
+                            addedArgs.put(values[0], values[1]);
+                        }
+                        argsList.add(arg);
+                    }
+                }
+
+                if (!addedArgs.containsKey("-Djava.util.logging.config.file") 
&& loggingProperties.exists()) {
+                    argsList.add("-Djava.util.logging.config.file=" + 
loggingProperties.getAbsolutePath());
+                }
+
+                argsList.add("-javaagent:" + javaagentJar.getAbsolutePath());
+
                 //DMB: If you don't use an array, you get problems with jar 
paths containing spaces
                 // the command won't parse correctly
+                final String ps = File.pathSeparator;
+
                 final String[] args;
-                final int debugPort = options.get(SERVER_DEBUG_PORT, 5005);
                 if (!tomcat) {
-                    if (debug) {
-                        args = new String[]{java,
-                                            "-XX:+HeapDumpOnOutOfMemoryError",
-                                            "-Xdebug",
-                                            "-Xnoagent",
-                                            "-Djava.compiler=NONE",
-                                            
"-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=" + debugPort,
-
-                                            "-javaagent:" + 
javaagentJar.getAbsolutePath(),
-
-                                            "-jar", 
openejbJar.getAbsolutePath(), "start"
-                        };
-                    } else {
-                        args = new String[]{java,
-                                            "-XX:+HeapDumpOnOutOfMemoryError",
-                                            "-javaagent:" + 
javaagentJar.getAbsolutePath(),
-                                            "-jar", 
openejbJar.getAbsolutePath(), "start"
-                        };
+                    final StringBuilder cp = new 
StringBuilder(openejbJar.getAbsolutePath());
+                    if (additionalClasspath != null) {
+                        cp.append(ps).append(additionalClasspath);
                     }
+
+                    argsList.add("-cp");
+                    argsList.add(cp.toString());
+                    argsList.add("org.apache.openejb.cli.Bootstrap");
                 } else {
                     final File bin = new File(home, "bin");
                     final File tlib = new File(home, "lib");
@@ -198,58 +233,15 @@ public class RemoteServer {
                     final File juliJar = new File(bin, "tomcat-juli.jar");
                     final File commonsLoggingJar = new File(bin, 
"commons-logging-api.jar");
 
-                    final File conf = new File(home, "conf");
-                    final File loggingProperties = new File(conf, 
"logging.properties");
-
                     final File endorsed = new File(home, "endorsed");
                     final File temp = new File(home, "temp");
 
-                    final List<String> argsList = new ArrayList<String>();
-                    argsList.add(java);
-                    argsList.add("-XX:+HeapDumpOnOutOfMemoryError");
-
-                    if (debug) {
-                        argsList.add("-Xdebug");
-                        argsList.add("-Xnoagent");
-                        argsList.add("-Djava.compiler=NONE");
-                        
argsList.add("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=" + 
debugPort);
-                    }
-
-                    if (profile) {
-                        String yourkitHome = options.get("yourkit.home", 
"/Applications/YourKit_Java_Profiler_9.5.6.app/bin/mac/");
-                        if (!yourkitHome.endsWith("/"))
-                            yourkitHome += "/";
-                        final String yourkitOpts = options.get("yourkit.opts", 
"disablestacktelemetry,disableexceptiontelemetry,builtinprobes=none,delay=10000,sessionname=Tomcat");
-                        argsList.add("-agentpath:" + yourkitHome + 
"libyjpagent.jnilib=" + yourkitOpts);
-                    }
-
-                    if (javaOpts != null) {
-                        Collections.addAll(argsList, javaOpts.split(" +"));
-                    }
-
-                    final Map<String, String> addedArgs = new HashMap<String, 
String>();
-                    if (additionalArgs != null) {
-                        for (final String arg : additionalArgs) {
-                            final String[] values = arg.split("=");
-                            if (values.length == 1) {
-                                addedArgs.put(values[0], "null");
-                            } else {
-                                addedArgs.put(values[0], values[1]);
-                            }
-                            argsList.add(arg);
-                        }
-                    }
-
-                    argsList.add("-javaagent:" + 
javaagentJar.getAbsolutePath());
                     if 
(!addedArgs.containsKey("-Dcom.sun.management.jmxremote")) {
                         argsList.add("-Dcom.sun.management.jmxremote");
                     }
                     if (!addedArgs.containsKey("-Djava.util.logging.manager")) 
{
                         
argsList.add("-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager");
                     }
-                    if 
(!addedArgs.containsKey("-Djava.util.logging.config.file") && 
loggingProperties.exists()) {
-                        argsList.add("-Djava.util.logging.config.file=" + 
loggingProperties.getAbsolutePath());
-                    }
                     if (!addedArgs.containsKey("-Djava.io.tmpdir")) {
                         argsList.add("-Djava.io.tmpdir=" + 
temp.getAbsolutePath());
                     }
@@ -281,7 +273,7 @@ public class RemoteServer {
 
                     argsList.add("-ea");
                     argsList.add("-classpath");
-                    final String ps = File.pathSeparator;
+
                     final StringBuilder cp = new 
StringBuilder(bootstrapJar.getAbsolutePath()).append(ps).append(juliJar.getAbsolutePath());
                     if (commonsLoggingJar.exists()) {
                         
cp.append(ps).append(commonsLoggingJar.getAbsolutePath());
@@ -292,14 +284,14 @@ public class RemoteServer {
                     argsList.add(cp.toString());
 
                     argsList.add("org.apache.catalina.startup.Bootstrap");
-                    if (cmd == null) {
-                        argsList.add("start");
-                    } else {
-                        argsList.add(cmd);
-                    }
+                }
 
-                    args = argsList.toArray(new String[argsList.size()]);
+                if (cmd == null) {
+                    argsList.add("start");
+                } else {
+                    argsList.add(cmd);
                 }
+                args = argsList.toArray(new String[argsList.size()]);
 
                 if (verbose) {
                     System.out.println(Join.join("\n", args));
@@ -308,11 +300,7 @@ public class RemoteServer {
                 // kill3UNIXDebug();
 
                 final Process process = Runtime.getRuntime().exec(args);
-                if (tomcat) {
-                    Pipe.pipeOut(process); // why would we need to redirect 
System.in to the process, TomEE doesn't use it
-                } else {
-                    Pipe.pipe(process);
-                }
+                Pipe.pipeOut(process); // why would we need to redirect 
System.in to the process, TomEE doesn't use it
 
                 if ("start".equals(cmd)) {
                     server = process;

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=1563178&r1=1563177&r2=1563178&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 Jan 31 17:05:07 2014
@@ -121,6 +121,9 @@ public abstract class AbstractTomEEMojo 
     @Parameter(property = "tomee-plugin.shutdown", defaultValue = "8005")
     protected int tomeeShutdownPort;
 
+    @Parameter(property = "tomee-plugin.shutdown-command", defaultValue = 
"SHUTDOWN")
+    protected String tomeeShutdownCommand;
+
     @Parameter(property = "tomee-plugin.ajp", defaultValue = "8009")
     protected int tomeeAjpPort;
 
@@ -240,6 +243,7 @@ public abstract class AbstractTomEEMojo 
 
     protected File deployedFile = null;
     protected RemoteServer server = null;
+    protected String container = "TomEE";
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
@@ -327,8 +331,13 @@ public abstract class AbstractTomEEMojo 
         final File loggingProperties = new File(catalinaBase, 
"conf/logging.properties");
         if (loggingProperties.exists() && !new File(config, 
"conf/logging.properties").exists()) {
             try {
-                final String content = IO.slurp(loggingProperties)
-                    .replace(SimpleFormatter.class.getName(), 
SimpleTomEEFormatter.class.getName());
+                String content = IO.slurp(loggingProperties);
+                if 
(!content.contains("java.util.logging.ConsoleHandler.formatter")) {
+                    content += System.getProperty("line.separator") + 
"java.util.logging.ConsoleHandler.formatter = " + 
SimpleTomEEFormatter.class.getName();
+                } else {
+                    content = content.replace(SimpleFormatter.class.getName(), 
SimpleTomEEFormatter.class.getName());
+                }
+
                 final FileWriter writer = new FileWriter(loggingProperties);
                 try {
                     writer.write(content);
@@ -537,6 +546,10 @@ public abstract class AbstractTomEEMojo 
 
     private void overrideAddresses() {
         final File serverXml = new File(catalinaBase, "conf/server.xml");
+        if (!serverXml.exists()) { // openejb
+            return;
+        }
+
         final QuickServerXmlParser parser = 
QuickServerXmlParser.parse(serverXml);
 
         String value = read(serverXml);
@@ -697,6 +710,7 @@ public abstract class AbstractTomEEMojo 
             System.setProperty("server.debug.port", 
Integer.toString(debugPort));
         }
         System.setProperty("server.shutdown.port", 
Integer.toString(tomeeShutdownPort));
+        System.setProperty("server.shutdown.command", tomeeShutdownCommand);
 
         server = new RemoteServer(getConnectAttempts(), false);
         server.setAdditionalClasspath(getAdditionalClasspath());
@@ -707,9 +721,13 @@ public abstract class AbstractTomEEMojo 
             strings.add("-Dtomee.noshutdownhook=true");
         }
 
-        getLog().info("Running '" + 
getClass().getSimpleName().replace("TomEEMojo", "").toLowerCase(Locale.ENGLISH)
-            + "'. Configured TomEE in plugin is " + tomeeHost + ":" + 
tomeeHttpPort
-            + " (plugin shutdown port is " + tomeeShutdownPort + ")");
+        if ("TomEE".equals(container)) {
+            getLog().info("Running '" + 
getClass().getSimpleName().replace("TomEEMojo", "").toLowerCase(Locale.ENGLISH)
+                + "'. Configured TomEE in plugin is " + tomeeHost + ":" + 
tomeeHttpPort
+                + " (plugin shutdown port is " + tomeeShutdownPort + ")");
+        } else {
+            getLog().info("Running '" + 
getClass().getSimpleName().replace("TomEEMojo", 
"").toLowerCase(Locale.ENGLISH));
+        }
 
         final InputStream originalIn = System.in; // piped when starting 
resmote server so saving it
 
@@ -770,9 +788,9 @@ public abstract class AbstractTomEEMojo 
         }
         try {
             server.getServer().waitFor();
-            getLog().info("TomEE stopped");
+            getLog().info(container + " stopped");
         } catch (Exception e) {
-            getLog().error("Can't stop TomEE", e);
+            getLog().error("Can't stop " + container, e);
         }
 
         server = null;
@@ -826,6 +844,11 @@ public abstract class AbstractTomEEMojo 
             remoteRepos = new ArrayList<ArtifactRepository>();
         }
 
+        if ((tomeeClassifier != null && (tomeeClassifier.isEmpty() || 
tomeeClassifier.equals("ignore")))
+                || ("org.apache.openejb".equals(tomeeGroupId) && 
"openejb-standalone".equals(tomeeArtifactId))) {
+            tomeeClassifier = null;
+        }
+
         try {
             final Artifact artifact = 
factory.createDependencyArtifact(tomeeGroupId, tomeeArtifactId, 
createFromVersion(tomeeVersion), tomeeType, tomeeClassifier, SCOPE_COMPILE);
             resolver.resolve(artifact, remoteRepos, local);
@@ -845,7 +868,7 @@ public abstract class AbstractTomEEMojo 
             while (entries.hasMoreElements()) {
                 final ZipEntry entry = entries.nextElement();
                 String name = entry.getName();
-                if (name.startsWith("apache-tomee-")) {
+                if (name.startsWith("apache-tomee-") || 
name.startsWith("apache-openejb-")) {
                     int idx = name.indexOf("/");
                     if (idx < 0) {
                         idx = name.indexOf(File.separator);
@@ -880,16 +903,31 @@ public abstract class AbstractTomEEMojo 
                 }
             }
 
-            final FileWriter writer = new FileWriter(new File(catalinaBase, 
"conf/tomee.xml"));
+            File file = new File(catalinaBase, "conf/tomee.xml");
+            if (file.exists()) {
+                container = "TomEE";
+            } else {
+                container = "OpenEJB";
+                file = new File(catalinaBase, "conf/openejb.xml");
+                if (file.exists()) {
+                    webappDir = "apps";
+                }
+            }
+
+            final FileWriter writer = new FileWriter(file);
+            final String rootTag = container.toLowerCase(Locale.ENGLISH);
             writer.write("<?xml version=\"1.0\"?>\n" +
-                "<tomee>\n" +
+                "<" + rootTag + ">\n" +
                 "  <Deployments dir=\"apps\" />\n" +
-                "</tomee>\n");
+                "</" + rootTag + ">\n");
             writer.close();
 
-            new File(catalinaBase, "apps").mkdirs();
+            final File appsFolder = new File(catalinaBase, "apps");
+            if (!appsFolder.exists()) {
+                appsFolder.mkdirs();
+            }
 
-            getLog().info("TomEE was unzipped in '" + 
catalinaBase.getAbsolutePath() + "'");
+            getLog().info(container + " was unzipped in '" + 
catalinaBase.getAbsolutePath() + "'");
         } catch (Exception e) {
             throw new TomEEException(e.getMessage(), e);
         } finally {

Modified: 
tomee/tomee/trunk/maven/tomee-maven-plugin/src/test/java/org/apache/openejb/maven/plugin/TomEEMavenPluginRule.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-maven-plugin/src/test/java/org/apache/openejb/maven/plugin/TomEEMavenPluginRule.java?rev=1563178&r1=1563177&r2=1563178&view=diff
==============================================================================
--- 
tomee/tomee/trunk/maven/tomee-maven-plugin/src/test/java/org/apache/openejb/maven/plugin/TomEEMavenPluginRule.java
 (original)
+++ 
tomee/tomee/trunk/maven/tomee-maven-plugin/src/test/java/org/apache/openejb/maven/plugin/TomEEMavenPluginRule.java
 Fri Jan 31 17:05:07 2014
@@ -193,6 +193,7 @@ public class TomEEMavenPluginRule implem
         tomEEMojo.tomeeHttpPort = NetworkUtil.getNextAvailablePort();
         tomEEMojo.tomeeAjpPort = NetworkUtil.getNextAvailablePort();
         tomEEMojo.tomeeShutdownPort = NetworkUtil.getNextAvailablePort();
+        tomEEMojo.tomeeShutdownCommand = "SHUTDOWN";
         tomEEMojo.tomeeHost = "localhost";
 
         tomEEMojo.useConsole = true;


Reply via email to