import java.io.File;
import org.apache.catalina.Context;
import org.apache.catalina.Engine;
import org.apache.catalina.Host;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.realm.MemoryRealm;
import org.apache.catalina.startup.Embedded;
public class ETomcat {
private int port = 8877;
private String path;
private Embedded embedded;
private Host host;
public ETomcat() {
path = new File("").getAbsolutePath();
}
public String getPath() {
return this.path;
}
public void startTomcat() throws LifecycleException {
System.setProperty("catalina.home", getPath());
embedded = new Embedded();
Engine engine = embedded.createEngine();
engine.setDefaultHost("localhost");
embedded.addEngine(engine);
host = embedded.createHost("localhost", getPath() + "/webapps");
engine.addChild(host);
host.setAutoDeploy(true);
Context context = embedded.createContext("/root", getPath() +"/webapps/ROOT");
host.addChild(context);
Context context2 = embedded.createContext("/root/manager", getPath() +"/webapps/manager");
context2.setPrivileged(true);
host.addChild(context2);
Connector connector = embedded.createConnector((String) null, port, "http");
embedded.addConnector(connector);
MemoryRealm realm = new MemoryRealm();
realm.setPathname(getPath() + "/conf/tomcat-users.xml");
host.setRealm(realm);
embedded.start();
registerWAR("/s", getPath() + "/myapp/s");
}
public void stopTomcat() throws LifecycleException {
embedded.stop();
}
public void registerWAR(String contextPath, String absolutePath) {
Context context = embedded.createContext(contextPath, absolutePath);
context.setReloadable(false);
host.addChild(context);
}
public void unregisterWAR(String contextPath) throws Exception {
Context context = host.map(contextPath);
if (context != null) {
this.embedded.removeContext(context);
}
}
/**
* @param args
*/
public static void main(String[] args) {
final ETomcat eTomcat = new ETomcat();
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
eTomcat.startTomcat();
} catch (LifecycleException e) {
e.printStackTrace();
}
}
});
thread.setDaemon(false);
thread.start();
try {
Thread.sleep(2000000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}