
Sunday, May 18, 2008
in the belly of the beast

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:
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(); } }
Subscribe to:
Posts (Atom)