package gfembeddedreloaded; import com.sun.grizzly.config.dom.NetworkConfig; import java.io.File; import java.util.logging.Level; import org.glassfish.api.deployment.DeployCommandParameters; import org.glassfish.api.embedded.ContainerBuilder; import org.glassfish.api.embedded.EmbeddedDeployer; import org.glassfish.api.embedded.EmbeddedFileSystem; import org.glassfish.api.embedded.Port; import org.glassfish.api.embedded.Server; import org.glassfish.web.embed.impl.EmbeddedWebContainer; public class Main { private static Server server; private static EmbeddedWebContainer embedded; private static File tempRoot = new File(System.getProperty("java.io.tmpdir")); private final static int port = 8888; public static void main(String[] args) throws Exception { Server.Builder builder = new Server.Builder("testBuilder"); // get the builder for EmbeddedFileSystem EmbeddedFileSystem.Builder efsb = new EmbeddedFileSystem.Builder(); efsb.autoDelete(true); // otherwise leaves the temp gfembed directory EmbeddedFileSystem efs = efsb.build(); builder.embeddedFileSystem(efs); server = builder.build(); // Starts the embedded server (should take no more than a few of seconds) // Add a WEB container ContainerBuilder containerBuilder = server.createConfig(ContainerBuilder.Type.web); server.addContainer(containerBuilder); embedded = (EmbeddedWebContainer) containerBuilder.create(server); embedded.setLogLevel(Level.FINEST); embedded.setPath(tempRoot); // define where to create the temp gfembed server.getHabitat().getComponent(NetworkConfig.class); // Set HTTP port Port http = server.createPort(port); // Starts grizzly if (http == null) { System.out.println("Could not create port " + port + ". Exiting"); System.exit(-1); } embedded.start(); // Starts the embedded web container // Setup machinery to deploy EmbeddedDeployer deployer = server.getDeployer(); DeployCommandParameters deployParams = new DeployCommandParameters(); deployParams.name = "myApplication"; String context = "hello"; deployParams.contextroot = context; File archive = new File("/Users/AlexisMP/Hello2.war"); String applicationName = deployer.deploy(archive, deployParams); // creates default virtual server, web listener, and does the deploy if (applicationName == null) { System.out.println("Deployment failed!"); } else { Runtime.getRuntime().exec("open http://localhost:" + port + "/" + context); System.out.println("Sleeping for a minute..."); Thread.sleep(60000); System.out.println("Undeploying"); deployer.undeploy("myApplication", null); // Could have undeploy params like cascade, ... System.out.println("Shutting down!"); } server.stop(); System.out.println("Stopped!"); System.exit(0); // need this to kill threads left runing. // see https://glassfish.dev.java.net/issues/show_bug.cgi?id=7198 // TODO: clean the "gfembed*" directories this leaves behind. } }