import org.apache.catalina.*; import org.apache.catalina.connector.*; import org.apache.catalina.realm.*; import org.apache.catalina.startup.*; public class EmbeddedTomcat { // Instance variables: private String name; private int portNumber; private Embedded embedded; private Engine baseEngine; private Host baseHost; private Connector httpConnector; /** Creates a new instance of EmbeddedTomcat */ public EmbeddedTomcat( String name, int portNumber) { this.name = name; this.portNumber = portNumber; init(); } private void init() { MemoryRealm realm; Context context; String baseEngineName; String hostName; embedded = new Embedded(); // set default logger and realm /* FileLogger fileLog = new FileLogger(); fileLog.setDirectory("."); fileLog.setPrefix(name); fileLog.setSuffix(".log"); fileLog.setTimestamp(true); embedded.setLogger(fileLog); */ realm = new MemoryRealm(); embedded.setRealm(realm); // create an Engine baseEngine = embedded.createEngine(); // set Engine properties baseEngineName = name + "Engine"; hostName = name + "Host"; baseEngine.setName(baseEngineName); baseEngine.setDefaultHost(hostName); baseHost = embedded.createHost(hostName, "webapps"); baseEngine.addChild(baseHost); // RootContext context = addContext("", "ROOT"); // ManagerContext context = addContext("/manager", "manager"); context.setPrivileged(true); /* This is where you add your webapps*/ // GeoBrowserContext context = addContext("/geobrowser", "geobrowser"); context.setPrivileged(true); // add new Engine to set of Engine for embedded server embedded.addEngine(baseEngine); // create Connector httpConnector = embedded.createConnector((java.net.InetAddress) null, portNumber, false); // add new Connector to set of Connectors for embedded server, associated // with Engine embedded.addConnector(httpConnector); } public void start() { // start server try { embedded.start(); } catch (org.apache.catalina.LifecycleException ex) { ex.printStackTrace(); //fileLog.log("Startup failed"); //fileLog.log(ex.getMessage()); } } public void stop() { // start server try { embedded.stop(); } catch (org.apache.catalina.LifecycleException ex) { ex.printStackTrace(); //fileLog.log("Startup failed"); //fileLog.log(ex.getMessage()); } } public Context addContext( String path, String docBase) { Context c; c = embedded.createContext(path, docBase); baseHost.addChild(c); return c; } public static void main(String[] args) { new EmbeddedTomcat("RedSpider", 8080).start(); } }
Saturday, May 10, 2008
Embedded tomcat and launch4j FTW
I've been meaning to get around to this for years.
Using this example, I compiled it with my webapps and then used lauch4j to create a windows executable wrapper. Throw in a jre and some data and I'm good to go. Now I just give the live demos to the sales people and clients on a USB stick without having to go through the install or setting it up on a web server.
Here's the code example:
Labels:
embedded tomcat,
java
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment