You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/03/21 07:57:03 UTC
svn commit: r1579890 - in /tomee/tomee/trunk:
container/openejb-core/src/main/java/org/apache/openejb/config/
container/openejb-loader/src/main/java/org/apache/openejb/loader/
maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/
mave...
Author: rmannibucau
Date: Fri Mar 21 06:57:02 2014
New Revision: 1579890
URL: http://svn.apache.org/r1579890
Log:
TOMEE-1144 supporting full java run - no script
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java
tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/Options.java
tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/ExecMojo.java
tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/runner/ExecRunner.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=1579890&r1=1579889&r2=1579890&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 Mar 21 06:57:02 2014
@@ -16,6 +16,12 @@
*/
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;
@@ -29,13 +35,9 @@ 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;
-
/**
+ * NOTE: don't add inner classes or anonymous one or dependency without updating ExecMojo
+ *
* @version $Rev$ $Date$
*/
@SuppressWarnings("UseOfSystemOutOrSystemErr")
@@ -330,41 +332,6 @@ public class RemoteServer {
}
}
- // debugging method (mainly for buildbot), don't let it activated when all is fine
- private void kill3UNIXDebug() { //NOPMD
- final Thread t = new Thread() {
- @Override
- public void run() {
- setName("[DEBUG] Dump Observer");
-
- boolean end = false;
- int i = 0;
- while (!end) {
- try {
- if (server == null) {
- throw new IllegalThreadStateException();
- }
- server.exitValue();
- end = true;
- } catch (final IllegalThreadStateException e) {
- i++;
- try {
- Thread.sleep(Integer.getInteger("sleep", 5000 * 60));
- } catch (final InterruptedException e1) {
- e1.printStackTrace();
- }
- if (i == 5) {
- kill3UNIX();
- i = 0;
- }
- }
- }
- }
- };
- t.setDaemon(true);
- t.start();
- }
-
public void kill3UNIX() { // debug purpose only
if (System.getProperty("os.name", "unknown").toLowerCase().startsWith("windows")) {
return;
@@ -560,20 +527,22 @@ public class RemoteServer {
static final List<Process> kill = new ArrayList<Process>();
static {
- Runtime.getRuntime().addShutdownHook(new Thread() {
- @Override
- public void run() {
- for (final Process server : kill) {
- try {
- if (server != null) {
- server.destroy();
- server.waitFor();
- }
- } catch (final Throwable e) {
- //Ignore
+ Runtime.getRuntime().addShutdownHook(new CleanUpThread());
+ }
+
+ public static class CleanUpThread extends Thread {
+ @Override
+ public void run() {
+ for (final Process server : kill) {
+ try {
+ if (server != null) {
+ server.destroy();
+ server.waitFor();
}
+ } catch (final Throwable e) {
+ //Ignore
}
}
- });
+ }
}
}
Modified: tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/Options.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/Options.java?rev=1579890&r1=1579889&r2=1579890&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/Options.java (original)
+++ tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/Options.java Fri Mar 21 06:57:02 2014
@@ -333,7 +333,7 @@ public class Options {
return sb.toString();
}
- private final static class NullOptions extends Options {
+ public final static class NullOptions extends Options {
private Log logger;
Modified: tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/ExecMojo.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/ExecMojo.java?rev=1579890&r1=1579889&r2=1579890&view=diff
==============================================================================
--- tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/ExecMojo.java (original)
+++ tomee/tomee/trunk/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/ExecMojo.java Fri Mar 21 06:57:02 2014
@@ -25,13 +25,18 @@ import org.apache.maven.plugin.MojoFailu
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.apache.openejb.OpenEJBRuntimeException;
+import org.apache.openejb.config.RemoteServer;
import org.apache.openejb.loader.Files;
import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.JarLocation;
import org.apache.openejb.loader.LoaderRuntimeException;
+import org.apache.openejb.loader.Options;
import org.apache.openejb.loader.Zips;
import org.apache.openejb.maven.plugin.runner.ExecRunner;
+import org.apache.openejb.util.Join;
import org.apache.openejb.util.Pipe;
+import org.apache.tomee.util.QuickServerXmlParser;
import org.codehaus.plexus.archiver.jar.Manifest;
import org.codehaus.plexus.util.IOUtil;
@@ -95,8 +100,19 @@ public class ExecMojo extends BuildTomEE
config.put("distribution", distributionName);
config.put("workingDir", runtimeWorkingDir);
config.put("command", script);
- config.put("catalinaOpts", toString(generateJVMArgs()));
+ final List<String> jvmArgs = generateJVMArgs();
+ config.put("catalinaOpts", toString(jvmArgs));
config.put("timestamp", Long.toString(System.currentTimeMillis()));
+ // java only
+ final String cp = getAdditionalClasspath();
+ if (cp != null) {
+ config.put("additionalClasspath", cp);
+ }
+ config.put("shutdownCommand", tomeeShutdownCommand);
+ int i = 0;
+ for (final String jvmArg : jvmArgs) {
+ config.put("jvmArg." + i++, jvmArg);
+ }
// create an executable jar with main runner and zipFile
final FileOutputStream fileOutputStream = new FileOutputStream(execFile);
@@ -143,8 +159,12 @@ public class ExecMojo extends BuildTomEE
Files.class, Files.PatternFileFilter.class, Files.DeleteThread.class,
Files.FileRuntimeException.class, Files.FileDoesNotExistException.class, Files.NoopOutputStream.class,
LoaderRuntimeException.class,
- Pipe.class, IO.class, Zips.class, JarLocation.class
- )) {
+ Pipe.class, IO.class, Zips.class, JarLocation.class,
+ RemoteServer.class, RemoteServer.CleanUpThread.class,
+ OpenEJBRuntimeException.class, Join.class, QuickServerXmlParser.class,
+ Options.class, Options.NullLog.class, Options.TomEEPropertyAdapter.class, Options.NullOptions.class,
+ Options.Log.class
+ )) {
final String name = clazz.getName().replace('.', '/') + ".class";
os.putArchiveEntry(new JarArchiveEntry(name));
IOUtils.copy(getClass().getResourceAsStream('/' + name), os);
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=1579890&r1=1579889&r2=1579890&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 Mar 21 06:57:02 2014
@@ -16,15 +16,19 @@
*/
package org.apache.openejb.maven.plugin.runner;
+import org.apache.openejb.config.RemoteServer;
import org.apache.openejb.loader.Files;
import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.Zips;
import org.apache.openejb.util.Pipe;
+import org.apache.tomee.util.QuickServerXmlParser;
import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Locale;
import java.util.Properties;
@@ -33,7 +37,14 @@ import static java.util.Arrays.asList;
public class ExecRunner {
private static final String SH_BAT_AUTO = "[.sh|.bat]";
- public static void main(final String[] args) throws Exception {
+ public static void main(final String[] rawArgs) throws Exception {
+ final String[] args;
+ if (rawArgs == null || rawArgs.length == 0) {
+ args = new String[] { "run" };
+ } else {
+ args = rawArgs;
+ }
+
final Properties config = new Properties();
final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
@@ -65,6 +76,14 @@ public class ExecRunner {
if (extracted != null && extracted.length == 1) {
distribOutput = extracted[0];
}
+ final File[] scripts = new File(distribOutput, "conf").listFiles();
+ 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);
+ }
+ }
+ }
String cmd = config.getProperty("command");
if (cmd.endsWith(SH_BAT_AUTO)) {
@@ -85,34 +104,58 @@ public class ExecRunner {
}
final Collection<String> params = new ArrayList<String>();
- params.add(cmd);
- if (args != null) {
+ if ("java".equals(cmd)) {
+ final QuickServerXmlParser parser = QuickServerXmlParser.parse(new File(distribOutput,"conf/server.xml"));
+
+ System.setProperty("openejb.home", distribOutput.getAbsolutePath());
+ System.setProperty("server.shutdown.port", parser.stop());
+ System.setProperty("server.shutdown.command", config.getProperty("shutdownCommand"));
+
+ final RemoteServer server = new RemoteServer();
+ if (config.containsKey("additionalClasspath")) {
+ server.setAdditionalClasspath(config.getProperty("additionalClasspath"));
+ }
+
+ final List<String> jvmArgs = new LinkedList<String>();
+ for (final String k : config.stringPropertyNames()) {
+ if (k.startsWith("jvmArg.")) {
+ jvmArgs.add(config.getProperty(k));
+ }
+ }
+
+ if ("run".equals(args[0])) {
+ args[0] = "start";
+ }
+ server.start(jvmArgs, args[0], true);
+ server.getServer().waitFor();
+ } else {
+ params.add(cmd);
params.addAll(asList(args));
- }
- final ProcessBuilder builder = new ProcessBuilder(params.toArray(new String[params.size()])).directory(distribOutput);
+ final ProcessBuilder builder = new ProcessBuilder(params.toArray(new String[params.size()])).directory(distribOutput);
- final String catalinaOpts = config.getProperty("catalinaOpts");
- if (catalinaOpts != null) { // inherit from existing env
- builder.environment().put("CATALINA_OPTS", catalinaOpts);
- }
+ final String catalinaOpts = config.getProperty("catalinaOpts");
+ if (catalinaOpts != null) { // inherit from existing env
+ builder.environment().put("CATALINA_OPTS", catalinaOpts);
+ }
- boolean redirectOut = false;
- try { // java >= 7
- ProcessBuilder.class.getDeclaredMethod("inheritIO").invoke(builder);
- } catch (final Throwable th){ // java 6
- redirectOut = true;
- }
+ boolean redirectOut = false;
+ try { // java >= 7
+ ProcessBuilder.class.getDeclaredMethod("inheritIO").invoke(builder);
+ } catch (final Throwable th){ // java 6
+ redirectOut = true;
+ }
+
+ final Process process = builder.start();
+ if (redirectOut) {
+ Pipe.pipe(process);
+ }
- final Process process = builder.start();
- if (redirectOut) {
- Pipe.pipe(process);
+ process.waitFor();
}
- process.waitFor();
System.out.flush();
System.err.flush();
- System.out.println("Exit status: " + process.exitValue());
}
private ExecRunner() {