import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; import java.sql.SQLException; import java.util.concurrent.CompletableFuture; import java.util.logging.Level; import java.util.logging.Logger; import org.eclipse.jetty.annotations.AnnotationConfiguration; import org.eclipse.jetty.plus.webapp.EnvConfiguration; import org.eclipse.jetty.plus.webapp.PlusConfiguration; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.webapp.Configuration; import org.eclipse.jetty.webapp.FragmentConfiguration; import org.eclipse.jetty.webapp.MetaInfConfiguration; import org.eclipse.jetty.webapp.WebAppConfiguration; import org.eclipse.jetty.webapp.WebAppContext; import org.eclipse.jetty.webapp.WebInfConfiguration; import org.eclipse.jetty.webapp.WebXmlConfiguration; /** * * @author Mark George <mark.george@otago.ac.nz> */ public class Start { private static final Integer PORT = 8080; private static final String CONTEXT_PATH = "/shop"; public static void main(String[] args) throws Exception { Server server = new Server(PORT); WebAppContext context = new WebAppContext(); context.setWar("build/libs/jetty.war"); context.setConfigurations( new Configuration[]{ new AnnotationConfiguration(), new WebAppConfiguration(), new WebXmlConfiguration(), new WebInfConfiguration(), new PlusConfiguration(), new MetaInfConfiguration(), new FragmentConfiguration(), new EnvConfiguration() } ); context.setContextPath(CONTEXT_PATH); context.setParentLoaderPriority(true); server.setHandler(context); server.start(); String path = context.getServletContext().getRealPath(File.separator); String dbUri = "jdbc:h2:file:" + path + "/db/users;AUTO_SERVER=TRUE;IFEXISTS=TRUE"; // open the web console for the deployed database (comment out block if you don't want the console) CompletableFuture.runAsync(() -> { try { new org.h2.tools.Console().runTool("-user", "sa", "-url", dbUri); } catch (Exception ex) { Logger.getLogger(Start.class.getName()).log(Level.SEVERE, null, ex); } }); // h2 has a pretty comprehensive openBrowser method that seems more reliable than the Desktop.browse method org.h2.tools.Server.openBrowser("http://localhost:8080" + CONTEXT_PATH); server.join(); } }