import java.io.File; import java.util.logging.Level; import java.util.logging.Logger; import org.glassfish.api.deployment.DeployCommandParameters; import org.glassfish.api.embedded.ContainerBuilder; import org.glassfish.api.embedded.EmbeddedFileSystem; import org.glassfish.api.embedded.Server; public class Launcher { private static final Logger logger = Logger.getLogger(Launcher.class.getName()); private void startup(File installRoot, int port, File warArchive) { try { logger.info("Prepare embedded server file system builder."); File instanceRoot = new File(new File(installRoot, "domains"), "embeddedDomain"); EmbeddedFileSystem.Builder fsBuilder = new EmbeddedFileSystem.Builder().installRoot(installRoot, true) .instanceRoot(instanceRoot) .autoDelete(true); logger.info("Prepare embedded server builder."); Server.Builder builder = new Server.Builder("SampleServer").logger(true) .verbose(true) .embeddedFileSystem(fsBuilder.build()); logger.info("Build server."); Server server = builder.build(); logger.info("Add web container to server."); server.addContainer(ContainerBuilder.Type.web); logger.info("Create port HTTP port."); server.createPort(port); logger.info("Starting server."); server.start(); logger.info("Deploying application to embedded server."); DeployCommandParameters deployCommandParameters = new DeployCommandParameters(); deployCommandParameters.name = "SampleApplication"; long startTime = System.currentTimeMillis(); server.getDeployer().deploy(warArchive, deployCommandParameters); logger.info("Deployment took " + (System.currentTimeMillis() - startTime) + "ms"); logger.info("Undeploy all"); server.getDeployer().undeployAll(); logger.info("Stopping"); startTime = System.currentTimeMillis(); server.stop(); logger.info("Stop took " + (System.currentTimeMillis() - startTime) + "ms"); } catch (Throwable t) { logger.log(Level.SEVERE, "Unexpected exception occurred", t); } } public static void main(String[] args) { new Launcher().startup(new File(args[0]), Integer.parseInt(args[1]), new File(args[2])); } }