supporting to run tomee with another JVM than the maven one
diff --git a/java9.source b/java9.source
new file mode 100644
index 0000000..86cc7b9
--- /dev/null
+++ b/java9.source
@@ -0,0 +1,20 @@
+#! /bin/bash
+
+#
+# to test against java 9 TCKs we run the TCK themself with java 7/8 and the container with java 9
+#
+# You can validate it with `tomeeTckCheckJavaRunVersion` once you ran some TCK.
+#
+# Note: this is mainly to not have to migrate this project yet to java 9 (upgrading groovy plugin and groovy itself).
+#
+
+tomee_version=7.0.4-SNAPSHOT
+
+# we run tck with java 7 for the runner (javatest jvm) but java 9 for the server
+export MAVEN_OPTS="-Dtck.java.home=$JAVA9_HOME -Dtck.java.version=1.9 -Dopenejb.groupId=org.apache.tomee -Dopenejb.version=$tomee_version -Dtomee.version=$tomee_version"
+echo "MAVEN_OPTS set for java 9"
+
+function tomeeTckCheckJavaRunVersion() {
+    grep 'JVM Version' target/logs/javatest.log | sed 's/.*JVM Version/JVM Version/'
+}
+
diff --git a/pom.xml b/pom.xml
index 9059431..9158110 100644
--- a/pom.xml
+++ b/pom.xml
@@ -955,20 +955,6 @@
 
   <repositories>
     <repository>
-      <id>nexus-staging</id>
-      <name>Nexus Staging Repository</name>
-      <url>https://repository.apache.org/content/repositories/orgapachetomee-1068</url>
-      <layout>default</layout>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-      <releases>
-        <enabled>true</enabled>
-        <checksumPolicy>ignore</checksumPolicy>
-      </releases>
-    </repository>
-
-    <repository>
       <id>apache-m2-snapshot</id>
       <name>Apache M2 Snapshot Repository</name>
       <url>http://repository.apache.org/snapshots/</url>
@@ -996,19 +982,6 @@
 
   <pluginRepositories>
     <pluginRepository>
-      <id>nexus-staging-plugin</id>
-      <name>Nexus Staging Repository</name>
-      <url>https://repository.apache.org/content/repositories/orgapachetomee-1068</url>
-      <layout>default</layout>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-      <releases>
-        <enabled>true</enabled>
-        <checksumPolicy>ignore</checksumPolicy>
-      </releases>
-    </pluginRepository>
-    <pluginRepository>
       <id>codehaus-snapshots</id>
       <name>Codehaus Snapshot</name>
       <url>https://nexus.codehaus.org/content/repositories/snapshots/</url>
diff --git a/runtests b/runtests
index 35ef90c..5bd6d9d 100755
--- a/runtests
+++ b/runtests
@@ -330,7 +330,7 @@
 
 # Fire up Maven to do the real work
 if [ -z $nc ]; then
-exec mvn -V --file "$DIRNAME/pom.xml" \
+exec mvn $MAVEN_OPTS -V --file "$DIRNAME/pom.xml" \
       --batch-mode \
       --errors \
       $CONFIG \
@@ -346,7 +346,7 @@
                -e "s/\(\[ERROR\].*\)/${BOLD}${TEXT_RED}\1${RESET_FORMATTING}/g" \
                -e "s/Tests run: \([^,]*\), Failures: \([^,]*\), Errors: \([^,]*\), Skipped: \([^,]*\)/${BOLD}${TEXT_GREEN}Tests run: \1${RESET_FORMATTING}, Failures: ${BOLD}${TEXT_RED}\2${RESET_FORMATTING}, Errors: ${BOLD}${TEXT_RED}\3${RESET_FORMATTING}, Skipped: ${BOLD}${TEXT_YELLOW}\4${RESET_FORMATTING}/g"
 else
-exec mvn -V --file "$DIRNAME/pom.xml" \
+exec mvn $MAVEN_OPTS -V --file "$DIRNAME/pom.xml" \
       --batch-mode \
       --errors \
       $CONFIG \
diff --git a/src/main/java/org/apache/openejb/cts/DeploymentImpl.java b/src/main/java/org/apache/openejb/cts/DeploymentImpl.java
index 991230a..0ef72e0 100644
--- a/src/main/java/org/apache/openejb/cts/DeploymentImpl.java
+++ b/src/main/java/org/apache/openejb/cts/DeploymentImpl.java
@@ -53,17 +53,36 @@
 //        System.setProperty("java.opts", "-Xmx128m -XX:MaxPermSize=128m");
 //        System.setProperty("java.opts", "-XX:MaxPermSize=64m");
 //        System.setProperty("openejb.server.profile", "true");
-        System.setProperty("java.opts", "-Dopenejb.deployer.jndiname=openejb/WebappDeployerRemote");
-        final RemoteServer remoteServer = new RemoteServer(250, true);
-        // remoteServer.start(Arrays.asList("-Xmx128m", "-XX:MaxPermSize=128m"), "start", true);
-        // remoteServer.start(Arrays.asList("-Djava.util.logging.config.file=/logging.properties"), "start", true);
-        remoteServer.start();
+        System.setProperty("java.opts", System.getProperty("tck.java.opts", "-Dopenejb.deployer.jndiname=openejb/WebappDeployerRemote"));
+        final String tckJavaHome = System.getProperty("tck.java.home");
+        final String tckJavaVersion = System.getProperty("tck.java.version");
+        final String oldJavaHome = System.getProperty("java.home");
+        final String oldJavaVersion = System.getProperty("java.version");
+        if (tckJavaHome != null) {
+            System.setProperty("java.home", tckJavaHome);
+        }
+        if (tckJavaVersion != null) {
+            System.setProperty("java.version", tckJavaVersion);
+        }
+        try {
+            final RemoteServer remoteServer = new RemoteServer(250, true);
+            // remoteServer.start(Arrays.asList("-Xmx128m", "-XX:MaxPermSize=128m"), "start", true);
+            // remoteServer.start(Arrays.asList("-Djava.util.logging.config.file=/logging.properties"), "start", true);
+            remoteServer.start();
 
-        Runtime.getRuntime().addShutdownHook(new Thread() {
-            public void run() {
-                remoteServer.destroy();
+            Runtime.getRuntime().addShutdownHook(new Thread() {
+                public void run() {
+                    remoteServer.destroy();
+                }
+            });
+        } finally {
+            if (tckJavaHome != null) {
+                System.setProperty("java.home", oldJavaHome);
             }
-        });
+            if (tckJavaVersion != null) {
+                System.setProperty("java.version", oldJavaVersion);
+            }
+        }
     }
 
     private PrintWriter log;
diff --git a/src/test/script/openejb/tck/commands/JavaTestCommand.groovy b/src/test/script/openejb/tck/commands/JavaTestCommand.groovy
index 53c7586..28cd85b 100644
--- a/src/test/script/openejb/tck/commands/JavaTestCommand.groovy
+++ b/src/test/script/openejb/tck/commands/JavaTestCommand.groovy
@@ -200,6 +200,23 @@
                     jvmarg(value: '-Dopenejb.server.debug=true')
                 }
 
+                def tckJavaHome = get('tck.java.home')
+                if (tckJavaHome != null) {
+                    log.info("Using java home ${tckJavaHome}")
+                    jvmarg(value: "-Dtck.java.home=${tckJavaHome}")
+                }
+
+                def tckJavaVersion = get('tck.java.version')
+                if (tckJavaVersion != null) {
+                    log.info("Using java version ${tckJavaVersion}")
+                    jvmarg(value: "-Dtck.java.version=${tckJavaVersion}")
+                }
+
+                def opts = get('tck.java.opts')
+                if (tckJavaVersion != null && (tckJavaVersion.startsWith("9") || tckJavaVersion.startsWith("1.9"))) {
+                    jvmarg(value: "-Dtck.java.opts=-Dopenejb.deployer.jndiname=openejb/WebappDeployerRemote --add-opens java.base/java.net=ALL-UNNAMED --add-modules java.xml.bind,java.corba")
+                }
+
                 sysproperty(key: "user.language", value: 'en')
                 sysproperty(key: "user.country", value: 'US')
 
@@ -219,7 +236,9 @@
                 sysproperty(key: "java.security.policy", file: "${javaeeRiHome}/bin/harness.policy")
                 sysproperty(key: "J2EE_HOME_RI", file: javaeeRiHome)
                 sysproperty(key: "deliverable.class", value: require('deliverable.class'))
-                sysproperty(key: "java.endorsed.dirs", file: "${javaeeRiHome}/lib/endorsed")
+                if (tckJavaHome == null || !new File(tckJavaHome, 'jmods').exists()/*j9 doesnt support it*/) {
+                    sysproperty(key: "java.endorsed.dirs", file: "${javaeeRiHome}/lib/endorsed")
+                }
                 sysproperty(key: "com.sun.enterprise.home", file: javaeeRiHome)
                 sysproperty(key: "com.sun.aas.installRoot", file: javaeeRiHome)
                 sysproperty(key: "DEPLOY_DELAY_IN_MINUTES", value: require('deploy_delay_in_minutes'))
@@ -304,6 +323,9 @@
                 // HACK: Some pre-running feedback (have to include this in the java closure)
                 //
                 log.info("Running tests...")
+                log.info("> Container Java Home: ${tckJavaHome}")
+                log.info("> Container Java Version: ${tckJavaVersion}")
+                log.info("> Container Java Opts: ${opts}")
 
                 line()
             }