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());