if (!resolvedName.equals(identifier)) { try { deployVerticle(resolvedName, options, completionHandler); } catch (Exception e) { if (completionHandler != null) { vertx.<Verticle[]>executeBlocking(createFut -> { try { Verticle[] verticles = createVerticles(verticleFactory, identifier, options.getInstances(), cl); createFut.complete(verticles); } catch (Exception e) { doDeploy(identifier, options, parentContext, callingContext, completionHandler, cl, res.result()); } else { doDeployVerticle(iter, res.cause(), identifier, options, parentContext, callingContext, cl, completionHandler); } else { try { Verticle[] verticles = createVerticles(verticleFactory, identifier, options.getInstances(), cl); doDeploy(identifier, options, parentContext, callingContext, completionHandler, cl, verticles); return; } catch (Exception e) { doDeployVerticle(iter, err, identifier, options, parentContext, callingContext, cl, completionHandler); }); } else { if (prevErr != null) {
@Override public Set<String> deploymentIDs() { return deploymentManager.deployments(); }
public void deployVerticle(String identifier, DeploymentOptions options, Handler<AsyncResult<String>> completionHandler) { ContextInternal callingContext = vertx.getOrCreateContext(); ClassLoader cl = getClassLoader(options); doDeployVerticle(identifier, options, callingContext, callingContext, cl, completionHandler); }
ClassLoader cl = getClassLoader(options); int nbInstances = options.getInstances(); Set<Verticle> verticles = Collections.newSetFromMap(new IdentityHashMap<>()); doDeploy("java:" + verticleClass, options, currentContext, currentContext, completionHandler, cl, verticlesArray);
ContextHandlerCollection contexts = new ContextHandlerCollection(); server.setHandler(contexts); DeploymentManager deployer = new DeploymentManager(); deployer.setContexts(contexts); deployer.setContextAttribute( "org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", ".*/servlet-api-[^/]*\\.jar$"); WebAppProvider webapp_provider = new WebAppProvider(); // The directory to monitor for WAR + XML files webapp_provider.setMonitoredDirName("/opt/jetty/webapps"); webapp_provider.setScanInterval(1); // how often to scan webapp_provider.setExtractWars(true); webapp_provider.setTempDir(new File("/opt/jetty/work")); deployer.addAppProvider(webapp_provider); server.addBean(deployer);
private void undeployHADeployments() { for (String deploymentID: deploymentManager.deployments()) { Deployment dep = deploymentManager.getDeployment(deploymentID); if (dep != null) { if (dep.deploymentOptions().isHa()) { ContextInternal ctx = vertx.getContext(); try { ContextImpl.setContext(null); deploymentManager.undeployVerticle(deploymentID, result -> { if (result.succeeded()) { log.info("Successfully undeployed HA deployment " + deploymentID + "-" + dep.verticleIdentifier() + " as there is no quorum"); addToHADeployList(dep.verticleIdentifier(), dep.deploymentOptions(), result1 -> { if (result1.succeeded()) { log.info("Successfully redeployed verticle " + dep.verticleIdentifier() + " after quorum was re-attained"); } else { log.error("Failed to redeploy verticle " + dep.verticleIdentifier() + " after quorum was re-attained", result1.cause()); } }); } else { log.error("Failed to undeploy deployment on lost quorum", result.cause()); } }); } finally { ContextImpl.setContext((ContextImpl) ctx); } } } } }
this.addressResolverOptions = options.getAddressResolverOptions(); this.addressResolver = new AddressResolver(this, options.getAddressResolverOptions()); this.deploymentManager = new DeploymentManager(this); if (options.isClustered()) { this.clusterManager = getClusterManager(options);
String deploymentID = generateDeploymentID(); DeploymentImpl deployment = new DeploymentImpl(parent, deploymentID, identifier, options); reportSuccess(deploymentID, callingContext, completionHandler);
@Override public void deployVerticle(Supplier<Verticle> verticleSupplier, DeploymentOptions options, Handler<AsyncResult<String>> completionHandler) { boolean closed; synchronized (this) { closed = this.closed; } if (closed) { if (completionHandler != null) { completionHandler.handle(Future.failedFuture("Vert.x closed")); } } else { deploymentManager.deployVerticle(verticleSupplier, options, completionHandler); } }
ClassLoader cl; if (isolationGroup == null) { cl = getCurrentClassLoader(); } else { cl = classloaders.get(isolationGroup); if (cl == null) { ClassLoader current = getCurrentClassLoader(); if (!(current instanceof URLClassLoader)) { throw new IllegalStateException("Current classloader must be URLClassLoader"); cl = new IsolatingClassLoader(urls.toArray(new URL[urls.size()]), getCurrentClassLoader(), options.getIsolatedClasses()); classloaders.put(isolationGroup, cl);
private void undeployHADeployments() { for (String deploymentID: deploymentManager.deployments()) { Deployment dep = deploymentManager.getDeployment(deploymentID); if (dep != null) { if (dep.deploymentOptions().isHa()) { ContextInternal ctx = vertx.getContext(); try { ContextImpl.setContext(null); deploymentManager.undeployVerticle(deploymentID, result -> { if (result.succeeded()) { log.info("Successfully undeployed HA deployment " + deploymentID + "-" + dep.verticleIdentifier() + " as there is no quorum"); addToHADeployList(dep.verticleIdentifier(), dep.deploymentOptions(), result1 -> { if (result1.succeeded()) { log.info("Successfully redeployed verticle " + dep.verticleIdentifier() + " after quorum was re-attained"); } else { log.error("Failed to redeploy verticle " + dep.verticleIdentifier() + " after quorum was re-attained", result1.cause()); } }); } else { log.error("Failed to undeploy deployment on lost quorum", result.cause()); } }); } finally { ContextImpl.setContext((ContextImpl) ctx); } } } } }
this.addressResolverOptions = options.getAddressResolverOptions(); this.addressResolver = new AddressResolver(this, options.getAddressResolverOptions()); this.deploymentManager = new DeploymentManager(this); if (options.isClustered()) { this.clusterManager = getClusterManager(options);
ClassLoader cl = getClassLoader(options); int nbInstances = options.getInstances(); Set<Verticle> verticles = Collections.newSetFromMap(new IdentityHashMap<>()); doDeploy("java:" + verticleClass, options, currentContext, currentContext, completionHandler, cl, verticlesArray);
String deploymentID = generateDeploymentID(); DeploymentImpl deployment = new DeploymentImpl(parent, deploymentID, identifier, options); reportSuccess(deploymentID, callingContext, completionHandler);
private void doDeployVerticle(final String verticleName, DeploymentOptions deploymentOptions, final Handler<AsyncResult<String>> doneHandler) { final Handler<AsyncResult<String>> wrappedHandler = ar1 -> { vertx.<String>executeBlocking(fut -> { if (ar1.succeeded()) { // Tell the other nodes of the cluster about the verticle for HA purposes String deploymentID = ar1.result(); addToHA(deploymentID, verticleName, deploymentOptions); fut.complete(deploymentID); } else { fut.fail(ar1.cause()); } }, false, ar2 -> { if (doneHandler != null) { doneHandler.handle(ar2); } else if (ar2.failed()) { log.error("Failed to deploy verticle", ar2.cause()); } }); }; deploymentManager.deployVerticle(verticleName, deploymentOptions, wrappedHandler); }
ClassLoader cl; if (isolationGroup == null) { cl = getCurrentClassLoader(); } else { cl = classloaders.get(isolationGroup); if (cl == null) { ClassLoader current = getCurrentClassLoader(); if (!(current instanceof URLClassLoader)) { throw new IllegalStateException("Current classloader must be URLClassLoader"); cl = new IsolatingClassLoader(urls.toArray(new URL[urls.size()]), getCurrentClassLoader(), options.getIsolatedClasses()); classloaders.put(isolationGroup, cl);
if (!resolvedName.equals(identifier)) { try { deployVerticle(resolvedName, options, completionHandler); } catch (Exception e) { if (completionHandler != null) { vertx.<Verticle[]>executeBlocking(createFut -> { try { Verticle[] verticles = createVerticles(verticleFactory, identifier, options.getInstances(), cl); createFut.complete(verticles); } catch (Exception e) { doDeploy(identifier, options, parentContext, callingContext, completionHandler, cl, res.result()); } else { doDeployVerticle(iter, res.cause(), identifier, options, parentContext, callingContext, cl, completionHandler); } else { try { Verticle[] verticles = createVerticles(verticleFactory, identifier, options.getInstances(), cl); doDeploy(identifier, options, parentContext, callingContext, completionHandler, cl, verticles); return; } catch (Exception e) { doDeployVerticle(iter, err, identifier, options, parentContext, callingContext, cl, completionHandler); }); } else { if (prevErr != null) {
public void deployVerticle(String identifier, DeploymentOptions options, Handler<AsyncResult<String>> completionHandler) { if (options.isMultiThreaded() && !options.isWorker()) { throw new IllegalArgumentException("If multi-threaded then must be worker too"); } ContextInternal callingContext = vertx.getOrCreateContext(); ClassLoader cl = getClassLoader(options); doDeployVerticle(identifier, options, callingContext, callingContext, cl, completionHandler); }
@Override public void deployVerticle(String name, DeploymentOptions options, Handler<AsyncResult<String>> completionHandler) { if (options.isHa() && haManager() != null && haManager().isEnabled()) { haManager().deployVerticle(name, options, completionHandler); } else { deploymentManager.deployVerticle(name, options, completionHandler); } }
@Override public Set<String> deploymentIDs() { return deploymentManager.deployments(); }