use of org.commonjava.propulsor.boot.BootOptions in project indy by Commonjava.
the class IndyDeployer method deploy.
@Override
public void deploy(BootOptions bootOptions) throws DeployException {
final DeploymentInfo di = indyDeployment.getDeployment(bootOptions.getContextPath()).setContextPath("/");
final DeploymentManager dm = Servlets.defaultContainer().addDeployment(di);
Collection<String> list = Servlets.defaultContainer().listDeployments();
logger.info("List deployments: {}", list);
dm.deploy();
try {
Integer port = bootOptions.getPort();
if (port < 1) {
logger.info("Looking for open Undertow port...");
final AtomicReference<Exception> errorHolder = new AtomicReference<>();
final AtomicReference<Integer> usingPort = new AtomicReference<>();
server = PortFinder.findPortFor(16, (foundPort) -> {
usingPort.set(foundPort);
try {
return buildAndStartUndertow(dm, foundPort, bootOptions.getBind(), restConfig);
} catch (Exception e) {
errorHolder.set(e);
}
return null;
});
Exception e = errorHolder.get();
if (e != null) {
throw e;
}
bootOptions.setPort(usingPort.get());
} else {
logger.info("Start Undertow server, bind: {}, port: {}", bootOptions.getBind(), port);
server = buildAndStartUndertow(dm, port, bootOptions.getBind(), restConfig);
}
logger.info("Indy listening on {}:{}\n\n", bootOptions.getBind(), bootOptions.getPort());
} catch (Exception e) {
logger.error("Deploy failed", e);
throw new DeployException("Deploy failed", e);
}
}
use of org.commonjava.propulsor.boot.BootOptions in project indy by Commonjava.
the class JaxRsBooter method main.
public static void main(final String[] args) {
setDefaultUncaughtExceptionHandler();
BootOptions boot;
try {
boot = loadFromSysProps("indy", BOOT_DEFAULTS_PROP, HOME_PROP);
} catch (final BootException e) {
e.printStackTrace();
System.err.printf("ERROR: %s", e.getMessage());
System.exit(ERR_LOAD_BOOT_OPTIONS);
return;
}
try {
if (boot.parseArgs(args)) {
Booter booter = new JaxRsBooter();
booter.runAndWait(boot);
}
} catch (final BootException e) {
e.printStackTrace();
System.err.printf("ERROR: %s", e.getMessage());
System.exit(ERR_START);
}
}
use of org.commonjava.propulsor.boot.BootOptions in project indy by Commonjava.
the class HttpProxyTest method setup.
@Before
public void setup() throws Exception {
contentMetadata.clear();
core.initGalley();
final TransportManager transports = new TransportManagerImpl(new HttpClientTransport(new HttpImpl(new MemoryPasswordManager())));
core.withTransportManager(transports);
core.initMissingComponents();
final HttproxConfig config = new HttproxConfig();
config.setEnabled(true);
proxyPort = config.getPort();
final BootOptions bootOpts = new BootOptions();
bootOpts.setBind(HOST);
storeManager = new MemoryStoreDataManager(true);
final IndyObjectMapper mapper = new IndyObjectMapper(true);
final DefaultIndyConfiguration indyConfig = new DefaultIndyConfiguration();
indyConfig.setNotFoundCacheTimeoutSeconds(1);
final ExpiringMemoryNotFoundCache nfc = new ExpiringMemoryNotFoundCache(indyConfig);
WeftExecutorService rescanService = new PoolWeftExecutorService("test-rescan-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false, null, null);
final DownloadManager downloadManager = new DefaultDownloadManager(storeManager, core.getTransferManager(), core.getLocationExpander(), new MockInstance<>(new MockContentAdvisor()), nfc, rescanService);
WeftExecutorService contentAccessService = new PoolWeftExecutorService("test-content-access-executor", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false, null, null);
DirectContentAccess dca = new DefaultDirectContentAccess(downloadManager, contentAccessService);
ContentDigester contentDigester = new DefaultContentDigester(dca, new CacheHandle<>("content-metadata", contentMetadata));
final ContentManager contentManager = new DefaultContentManager(storeManager, downloadManager, mapper, new SpecialPathManagerImpl(), new MemoryNotFoundCache(), contentDigester, new ContentGeneratorManager());
DataFileManager dfm = new DataFileManager(temp.newFolder(), new DataFileEventManager());
final TemplatingEngine templates = new TemplatingEngine(new GStringTemplateEngine(), dfm);
final ContentController contentController = new ContentController(storeManager, contentManager, templates, mapper, new MimeTyper());
KeycloakConfig kcConfig = new KeycloakConfig();
kcConfig.setEnabled(false);
final KeycloakProxyAuthenticator auth = new KeycloakProxyAuthenticator(kcConfig, config);
ScriptEngine scriptEngine = new ScriptEngine(dfm);
WeftExecutorService transferService = new PoolWeftExecutorService("test-mitm-transfers", (ThreadPoolExecutor) Executors.newCachedThreadPool(), 2, 10f, false, null, null);
ProxyTransfersExecutor handler = new ProxyTransfersExecutor(transferService);
IndyTraceConfiguration itc = new IndyTraceConfiguration();
TraceManager tm = new TraceManager(new OtelTracePlugin(itc, itc), new SpanFieldsDecorator(Collections.emptyList()), itc);
proxy = new HttpProxy(config, bootOpts, new ProxyAcceptHandler(config, storeManager, contentController, auth, core.getCache(), scriptEngine, new MDCManager(), null, null, new CacheProducer(null, cacheManager, null), handler, tm));
proxy.start();
}
use of org.commonjava.propulsor.boot.BootOptions in project indy by Commonjava.
the class CoreServerFixture method newBootOptions.
private static BootOptions newBootOptions(final File bootDefaults, final String indyHome) {
final Properties properties = System.getProperties();
properties.setProperty("indy.home", indyHome);
System.setProperties(properties);
try {
final BootOptions options = new BootOptions("indy", indyHome, bootDefaults);
options.setPort(findOpenPort(MAX_PORTGEN_TRIES));
return options;
} catch (IOException | InterpolationException e) {
throw new IllegalStateException("Cannot start core Indy server with the given configuration: " + e.getMessage(), e);
}
}
Aggregations