package com.mxgraph.examples.web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.mortbay.jetty.Handler; import org.mortbay.jetty.Request; import org.mortbay.jetty.Server; import org.mortbay.jetty.handler.AbstractHandler; import org.mortbay.jetty.handler.DefaultHandler; import org.mortbay.jetty.handler.HandlerList; import org.mortbay.jetty.handler.ResourceHandler; import org.mortbay.jetty.servlet.Context; import org.mortbay.jetty.servlet.ServletHolder; import com.mxgraph.util.mxUtils; public class Main { public static int PORT = 8080; public static void main(String[] args) throws Exception { Server server = new Server(PORT); // Static file handler Context fileContext = new Context(server, "/mxgraph", Context.SESSIONS); ResourceHandler fileHandler = new ResourceHandler(); fileHandler.setResourceBase("."); fileContext.setHandler(fileHandler); // Servlets Context context = new Context(server, "/", Context.SESSIONS); context.addServlet(new ServletHolder(new Roundtrip()), "/Roundtrip"); context.addServlet(new ServletHolder(new ServerView()), "/ServerView"); context.addServlet(new ServletHolder(new ExportServlet()), "/Export"); context.addServlet(new ServletHolder(new EchoServlet()), "/Echo"); context.addServlet(new ServletHolder(new Deploy()), "/Deploy"); context.addServlet(new ServletHolder(new Link()), "/Link"); context.addServlet(new ServletHolder(new EmbedImage()), "/EmbedImage"); context.addServlet(new ServletHolder(new Backend()), "/Backend"); HandlerList handlers = new HandlerList(); handlers.setHandlers(new Handler[] { new RedirectHandler(), fileContext, context, new DefaultHandler() }); server.setHandler(handlers); System.out.println("Go to http://localhost:" + PORT + "/"); server.start(); server.join(); } /** * Handles some special redirects for the Java server examples. */ public static class RedirectHandler extends AbstractHandler { public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException { if (target.toLowerCase().endsWith(".xml")) { // Forces the browser to not cache any XML files response.setContentType("text/xml;charset=UTF-8"); response.setHeader("Pragma", "no-cache"); // HTTP 1.0 response.setHeader("Cache-Control", "no-store"); response.setHeader("Expires", "0"); } else if (target.equalsIgnoreCase("/") || target.equalsIgnoreCase("/index.html")) { // Gets the file contents for the index.html file String filename = Main.class.getResource( "/com/mxgraph/examples/web/resources/index.html") .getPath(); response.getWriter().write(mxUtils.readFile(filename)); response.setStatus(HttpServletResponse.SC_OK); ((Request) request).setHandled(true); } else if (target.equalsIgnoreCase("/export.html")) { // Gets the file contents for the index.html file String filename = Main.class.getResource( "/com/mxgraph/examples/web/resources/export.html") .getPath(); response.getWriter().write(mxUtils.readFile(filename)); response.setStatus(HttpServletResponse.SC_OK); ((Request) request).setHandled(true); } else if (target.equalsIgnoreCase("/frontend.html")) { // Gets the file contents for the index.html file String filename = Main.class.getResource( "/com/mxgraph/examples/web/resources/frontend.html") .getPath(); response.getWriter().write(mxUtils.readFile(filename)); response.setStatus(HttpServletResponse.SC_OK); ((Request) request).setHandled(true); } } } }