io.vertx.core.Launcher Maven / Gradle / Ivy
/*
* Copyright (c) 2011-2019 Contributors to the Eclipse Foundation
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
* which is available at https://www.apache.org/licenses/LICENSE-2.0.
*
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
*/
package io.vertx.core;
import io.vertx.core.impl.launcher.VertxCommandLauncher;
import io.vertx.core.impl.launcher.VertxLifecycleHooks;
import io.vertx.core.json.JsonObject;
/**
* A {@code main()} class that can be used to create Vert.x instance and deploy a verticle, or run a bare Vert.x instance.
*
* This class is used by the {@code vertx} command line utility to deploy verticles from the command line.
* It is extensible as "commands" can be added using the {@link io.vertx.core.spi.launcher.CommandFactory}
* SPI.
*
* E.g.
*
* {@code vertx run myverticle.js}
* {@code vertx my-command ...}
*
* It can also be used as the main class of an executable jar so you can run verticles directly with:
*
* {@code java -jar myapp.jar}
*
* @author Clement Escoffier
*/
public class Launcher extends VertxCommandLauncher implements VertxLifecycleHooks {
/**
* Main entry point.
*
* @param args the user command line arguments.
*/
public static void main(String[] args) {
new Launcher().dispatch(args);
}
/**
* Utility method to execute a specific command.
*
* @param cmd the command
* @param args the arguments
*/
public static void executeCommand(String cmd, String... args) {
new Launcher().execute(cmd, args);
}
/**
* Hook for sub-classes of {@link Launcher} after the config has been parsed.
*
* @param config the read config, empty if none are provided.
*/
public void afterConfigParsed(JsonObject config) {
}
/**
* Hook for sub-classes of {@link Launcher} before the vertx instance is started.
*
* @param options the configured Vert.x options. Modify them to customize the Vert.x instance.
*/
public void beforeStartingVertx(VertxOptions options) {
}
/**
* Hook for sub-classes of {@link Launcher} after the vertx instance is started.
*
* @param vertx the created Vert.x instance
*/
public void afterStartingVertx(Vertx vertx) {
}
/**
* Hook for sub-classes of {@link Launcher} before the verticle is deployed.
*
* @param deploymentOptions the current deployment options. Modify them to customize the deployment.
*/
public void beforeDeployingVerticle(DeploymentOptions deploymentOptions) {
}
@Override
public void beforeStoppingVertx(Vertx vertx) {
}
@Override
public void afterStoppingVertx() {
}
/**
* A deployment failure has been encountered. You can override this method to customize the behavior.
* By default it closes the `vertx` instance.
*
* @param vertx the vert.x instance
* @param mainVerticle the verticle
* @param deploymentOptions the verticle deployment options
* @param cause the cause of the failure
*/
public void handleDeployFailed(Vertx vertx, String mainVerticle, DeploymentOptions deploymentOptions, Throwable cause) {
// Default behaviour is to close Vert.x if the deploy failed
vertx.close();
}
}