package testsuite.sitemesh;
import org.apache.catalina.*;
import org.apache.catalina.connector.*;
import org.apache.catalina.realm.*;
import org.apache.catalina.startup.*;
import java.io.File;
public class TomcatWebServer {// Instance variables:
private String name = "sitemesh_tomcat_";
private Embedded embedded;
private Host baseHost;
/**
* Creates a new instance of EmbeddedTomcat
*/
public TomcatWebServer(int port, String pathToWebApp) {
try {
embedded = new Embedded();
embedded.setRealm(new MemoryRealm());
// create an Engine
Engine baseEngine = embedded.createEngine();
// set Engine properties
String hostName = name + "Host";
baseEngine.setName(name + "Engine");
baseEngine.setDefaultHost(hostName);
baseHost = embedded.createHost(hostName, "webapps");
baseEngine.addChild(baseHost);
// RootContext
addContext("", pathToWebApp);
// add new Engine to set of Engine for embedded server
embedded.addEngine(baseEngine);
// create Connector
Connector httpConnector = new Connector(); //this method shows errors better than the one below
httpConnector.setPort(port);
// Connector httpConnector = embedded.createConnector((java.net.InetAddress) null, port, false);
// add new Connector to set of Connectors for embedded server, associated
// with Engine
embedded.addConnector(httpConnector);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Exception starting server " + e, e);
}
}
public void start() {
// start server
try {
embedded.start();
}
catch (org.apache.catalina.LifecycleException e) {
e.printStackTrace();
throw new RuntimeException("Cannot start server", e);
}
}
public void stop() {
try {
embedded.stop();
} catch (LifecycleException e) {
e.printStackTrace();
throw new RuntimeException("Cannot stop server", e);
}
}
public Context addContext(String path, String docBase) {
Context c = embedded.createContext(path, docBase);
baseHost.addChild(c);
return c;
}
public static void main(String[] args) {
System.out.println("new File() = " + new File("").getAbsolutePath());
new TomcatWebServer(9920, new File("").getAbsolutePath() + "/src/webapp").start();
}
}