package main; import org.mortbay.http.HttpContext; import org.mortbay.http.HttpServer; import org.mortbay.http.SocketListener; import org.mortbay.http.handler.ResourceHandler; import org.mortbay.jetty.servlet.ServletHandler; import org.mortbay.jetty.servlet.ServletHolder; import org.mortbay.jetty.servlet.WebApplicationContext; import org.mortbay.util.MultiException; import java.io.File; import java.util.List; /** * Runs Railo as a Java Application */ public class RunAsJavaApplication { private static String port = "8888"; public static void addContext(HttpServer server, String strContext, String host, String path, String appDir, String webContextDir, String adminContextDir) { if (appDir == null) appDir = "./web"; if (webContextDir == null) webContextDir = appDir + "/WEB-INF/railo"; if (adminContextDir == null) adminContextDir = appDir + "/WEB-INF/lib/railo-server"; System.out.println("appdir:" + appDir); System.out.println("webcontext:" + webContextDir); System.out.println("servercontext:" + adminContextDir); HttpContext context = new HttpContext(); //context.setClassLoader(new ContextClassloader()); context.setContextPath(strContext); context.addWelcomeFile("index.cfm"); if ( host != null && !host.isEmpty() ) context.addVirtualHost(host); //context.setClassPath(lib); server.addContext(context); // Create a servlet container ServletHandler servlets = new ServletHandler(); context.addHandler(servlets); // Map a servlet onto the container ServletHolder servlet = servlets.addServlet("CFMLServlet", "*.cfc/*,*.cfm/*,*.cfml/*,*.cfc,*.cfm,*.cfml", "railo.debug.loader.servlet.CFMLServlet"); servlet.setInitOrder(0); if (adminContextDir == null) webContextDir = appDir; servlet.setInitParameter("railo-server-directory", adminContextDir); servlet.setInitParameter("railo-web-directory", webContextDir); // Uncomment line below to debug Railo REST Servlet //servlet = servlets.addServlet("RESTServlet", "/rest/*", "railo.debug.loader.servlet.RESTServlet"); //servlet = servlets.addServlet("FileServlet","/","servlet.FileServlet"); /* Uncomment to add remote flash support; toggle block comment by adding/removing a '/' at the beginning of this line servlet = servlets.addServlet("openamf","/flashservices/gateway/*,/openamf/gateway/*","servlet.AMFServlet"); servlet = servlets.addServlet("openamf","/openamf/gateway/*","railo.loader.servlet.AMFServlet"); servlet = servlets.addServlet("MessageBrokerServlet","/flashservices/gateway/*,/messagebroker/*,/flex2gateway/*","flex.messaging.MessageBrokerServlet"); servlet.setInitParameter("services.configuration.file", "/WEB-INF/flex/services-config.xml"); //*/ appDir += path; context.setResourceBase(appDir); context.addHandler(new ResourceHandler()); } public static void addWebXmlContext(HttpServer server, String strContext, String host, String path, String appDir, String webContextDir, String adminContextDir) { if (appDir == null) appDir = "./web"; if (webContextDir == null) webContextDir = appDir + "/WEB-INF/railo"; if (adminContextDir == null) adminContextDir = appDir + "/WEB-INF/lib/railo-server"; System.out.println("appdir:" + appDir); System.out.println("webcontext:" + webContextDir); System.out.println("servercontext:" + adminContextDir); WebApplicationContext context = new WebApplicationContext(appDir); context.setContextPath(strContext); if ( host != null && !host.isEmpty() ) context.addVirtualHost(host); server.addContext(context); appDir += path; context.addHandler(new ResourceHandler()); } /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { try { _main(args); } catch (MultiException e) { List list = e.getExceptions(); int len = list.size(); for (int i = 0; i < len; i++) { ((Throwable) list.get(i)).printStackTrace(); } } catch (Exception e) { throw e; } } public static void _main(String[] args) throws Exception { // Create the server HttpServer server = new HttpServer(); String portArg = port; String appDir = "./web"; String webContextDir = appDir + "/WEB-INF/railo"; String serverContextDir = appDir + "/WEB-INF/lib/railo"; if (args.length > 0) { portArg = args[0]; } if (args.length > 1) { appDir = args[1]; webContextDir = appDir + "/WEB-INF/railo"; serverContextDir = appDir + "/WEB-INF/lib/railo-server"; } if (args.length > 2) { webContextDir = args[1]; } if (args.length > 3) { serverContextDir = args[2]; } // Create a port listener SocketListener listener = new SocketListener(); int port = Integer.parseInt(portArg); listener.setPort(port); server.addListener(listener); String host = null; // Create a context File webxml = new File(appDir + "/WEB-INF/web.xml"); if (webxml.exists()) { addWebXmlContext(server, "/", host, "/", appDir, webContextDir, serverContextDir); } else { addContext(server, "/", host, "/", appDir, webContextDir, serverContextDir); } //addContext(server,"/susi/","localhost","/jm/",null,null); //addContext(server,"/sub1/","localhost","/subweb1/",null,null); //addContext(server,"/sub2/","localhost","/subweb2/",null,null); //addContext(server,"/","192.168.2.104","/",null,null); //addContext(server,"/","context.example.local","/",null); //addContext(server,"/","7of9","/",null); //for(int i=1;i<10;i++) // addContext(server,"/","context"+i+".example.local","/context"+i+"/",null,null); server.start(); if ( host != null && !host.isEmpty() ) DesktopUtil.launchBrowser( host, port, false ); } }