aboutsummaryrefslogtreecommitdiffstats
path: root/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProvRunner.java
diff options
context:
space:
mode:
Diffstat (limited to 'datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProvRunner.java')
-rw-r--r--datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProvRunner.java208
1 files changed, 17 insertions, 191 deletions
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProvRunner.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProvRunner.java
index 4078922e..8a0ef448 100644
--- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProvRunner.java
+++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/ProvRunner.java
@@ -32,37 +32,15 @@ import com.att.eelf.configuration.EELFManager;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
-import java.security.Security;
-import java.util.EnumSet;
import java.util.Properties;
import java.util.Timer;
-import javax.servlet.DispatcherType;
-import org.eclipse.jetty.http.HttpVersion;
-import org.eclipse.jetty.server.Connector;
-import org.eclipse.jetty.server.Handler;
-import org.eclipse.jetty.server.HttpConfiguration;
-import org.eclipse.jetty.server.HttpConnectionFactory;
-import org.eclipse.jetty.server.NCSARequestLog;
import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.ServerConnector;
-import org.eclipse.jetty.server.SslConnectionFactory;
-import org.eclipse.jetty.server.handler.ContextHandlerCollection;
-import org.eclipse.jetty.server.handler.DefaultHandler;
-import org.eclipse.jetty.server.handler.HandlerCollection;
-import org.eclipse.jetty.server.handler.RequestLogHandler;
-import org.eclipse.jetty.servlet.FilterHolder;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.util.ssl.SslContextFactory;
-import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.onap.dmaap.datarouter.provisioning.utils.AafPropsUtils;
-import org.onap.dmaap.datarouter.provisioning.utils.DRProvCadiFilter;
import org.onap.dmaap.datarouter.provisioning.utils.LogfileLoader;
import org.onap.dmaap.datarouter.provisioning.utils.Poker;
import org.onap.dmaap.datarouter.provisioning.utils.ProvDbUtils;
import org.onap.dmaap.datarouter.provisioning.utils.PurgeLogDirTask;
import org.onap.dmaap.datarouter.provisioning.utils.SynchronizerTask;
-import org.onap.dmaap.datarouter.provisioning.utils.ThrottleFilter;
/**
* <p>
@@ -98,10 +76,7 @@ public class ProvRunner {
public static final EELFLogger intlogger = EELFManager.getInstance()
.getLogger("org.onap.dmaap.datarouter.provisioning.internal");
- /**
- * The one and only {@link Server} instance in this JVM.
- */
- private static Server server;
+ private static Server provServer;
private static AafPropsUtils aafPropsUtils;
private static Properties provProperties;
@@ -109,199 +84,50 @@ public class ProvRunner {
* Starts the Data Router Provisioning server.
*
* @param args not used
- * @throws Exception if Jetty has a problem starting
*/
- public static void main(String[] args) throws Exception {
-
- intlogger.info("PROV0000 **** Data Router Provisioning Server starting....");
-
+ public static void main(String[] args) {
// Check DB is accessible and contains the expected tables
if (!ProvDbUtils.getInstance().initProvDB()) {
intlogger.error("Data Router Provisioning database init failure. Exiting.");
exit(1);
}
-
- int httpPort = Integer.parseInt(
- getProvProperties().getProperty("org.onap.dmaap.datarouter.provserver.http.port", "8080"));
- final int httpsPort = Integer.parseInt(
- getProvProperties().getProperty("org.onap.dmaap.datarouter.provserver.https.port", "8443"));
-
- Security.setProperty("networkaddress.cache.ttl", "4");
- // Server's thread pool
- QueuedThreadPool queuedThreadPool = new QueuedThreadPool();
- queuedThreadPool.setMinThreads(10);
- queuedThreadPool.setMaxThreads(200);
- queuedThreadPool.setDetailedDump(false);
-
- // The server itself
- server = new Server(queuedThreadPool);
- server.setStopAtShutdown(true);
- server.setStopTimeout(5000);
- server.setDumpAfterStart(false);
- server.setDumpBeforeStop(false);
-
- // Request log configuration
- NCSARequestLog ncsaRequestLog = new NCSARequestLog();
- ncsaRequestLog.setFilename(getProvProperties()
- .getProperty("org.onap.dmaap.datarouter.provserver.accesslog.dir")
- + "/request.log.yyyy_mm_dd");
- ncsaRequestLog.setFilenameDateFormat("yyyyMMdd");
- ncsaRequestLog.setRetainDays(90);
- ncsaRequestLog.setAppend(true);
- ncsaRequestLog.setExtended(false);
- ncsaRequestLog.setLogCookies(false);
- ncsaRequestLog.setLogTimeZone("GMT");
-
- RequestLogHandler requestLogHandler = new RequestLogHandler();
- requestLogHandler.setRequestLog(ncsaRequestLog);
- server.setRequestLog(ncsaRequestLog);
-
- // HTTP configuration
- HttpConfiguration httpConfiguration = new HttpConfiguration();
- httpConfiguration.setSecureScheme("https");
- httpConfiguration.setSecurePort(httpsPort);
- httpConfiguration.setOutputBufferSize(32768);
- httpConfiguration.setRequestHeaderSize(8192);
- httpConfiguration.setResponseHeaderSize(8192);
- httpConfiguration.setSendServerVersion(true);
- httpConfiguration.setSendDateHeader(false);
-
+ // Set up AAF properties
try {
- AafPropsUtils.init(new File(getProvProperties().getProperty(
+ aafPropsUtils = new AafPropsUtils(new File(getProvProperties().getProperty(
"org.onap.dmaap.datarouter.provserver.aafprops.path",
"/opt/app/osaaf/local/org.onap.dmaap-dr.props")));
} catch (IOException e) {
intlogger.error("NODE0314 Failed to load AAF props. Exiting", e);
exit(1);
}
- aafPropsUtils = AafPropsUtils.getInstance();
-
- //HTTP Connector
- HandlerCollection handlerCollection;
- try (ServerConnector httpServerConnector =
- new ServerConnector(server, new HttpConnectionFactory(httpConfiguration))) {
- httpServerConnector.setPort(httpPort);
- httpServerConnector.setAcceptQueueSize(2);
- httpServerConnector.setIdleTimeout(300000);
-
- // SSL Context
- SslContextFactory sslContextFactory = new SslContextFactory();
- sslContextFactory.setKeyStoreType(AafPropsUtils.KEYSTORE_TYPE_PROPERTY);
- sslContextFactory.setKeyStorePath(getAafPropsUtils().getKeystorePathProperty());
- sslContextFactory.setKeyStorePassword(getAafPropsUtils().getKeystorePassProperty());
- sslContextFactory.setKeyManagerPassword(getAafPropsUtils().getKeystorePassProperty());
-
- String truststorePathProperty = getAafPropsUtils().getTruststorePathProperty();
- if (truststorePathProperty != null && truststorePathProperty.length() > 0) {
- intlogger.info("@@ TS -> " + truststorePathProperty);
- sslContextFactory.setTrustStoreType(AafPropsUtils.TRUESTSTORE_TYPE_PROPERTY);
- sslContextFactory.setTrustStorePath(truststorePathProperty);
- sslContextFactory.setTrustStorePassword(getAafPropsUtils().getTruststorePassProperty());
- } else {
- sslContextFactory.setTrustStorePath(AafPropsUtils.DEFAULT_TRUSTSTORE);
- sslContextFactory.setTrustStorePassword("changeit");
- }
-
- sslContextFactory.setWantClientAuth(true);
- sslContextFactory.setExcludeCipherSuites(
- "SSL_RSA_WITH_DES_CBC_SHA",
- "SSL_DHE_RSA_WITH_DES_CBC_SHA",
- "SSL_DHE_DSS_WITH_DES_CBC_SHA",
- "SSL_RSA_EXPORT_WITH_RC4_40_MD5",
- "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA",
- "SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA",
- "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"
- );
- sslContextFactory.addExcludeProtocols("SSLv3");
- sslContextFactory.setIncludeProtocols(getProvProperties().getProperty(
- "org.onap.dmaap.datarouter.provserver.https.include.protocols",
- "TLSv1.1|TLSv1.2").trim().split("\\|"));
-
- intlogger.info("Not supported protocols prov server:-"
- + String.join(",", sslContextFactory.getExcludeProtocols()));
- intlogger.info("Supported protocols prov server:-"
- + String.join(",", sslContextFactory.getIncludeProtocols()));
- intlogger.info("Not supported ciphers prov server:-"
- + String.join(",", sslContextFactory.getExcludeCipherSuites()));
- intlogger.info("Supported ciphers prov server:-"
- + String.join(",", sslContextFactory.getIncludeCipherSuites()));
-
- // HTTPS configuration
- HttpConfiguration httpsConfiguration = new HttpConfiguration(httpConfiguration);
- httpsConfiguration.setRequestHeaderSize(8192);
-
- // HTTPS connector
- try (ServerConnector httpsServerConnector = new ServerConnector(server,
- new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
- new HttpConnectionFactory(httpsConfiguration))) {
-
- httpsServerConnector.setPort(httpsPort);
- httpsServerConnector.setIdleTimeout(30000);
- httpsServerConnector.setAcceptQueueSize(2);
-
- // Servlet and Filter configuration
- ServletContextHandler servletContextHandler = new ServletContextHandler(0);
- servletContextHandler.setContextPath("/");
- servletContextHandler.addServlet(new ServletHolder(new FeedServlet()), "/feed/*");
- servletContextHandler.addServlet(new ServletHolder(new FeedLogServlet()), "/feedlog/*");
- servletContextHandler.addServlet(new ServletHolder(new PublishServlet()), "/publish/*");
- servletContextHandler.addServlet(new ServletHolder(new SubscribeServlet()), "/subscribe/*");
- servletContextHandler.addServlet(new ServletHolder(new StatisticsServlet()), "/statistics/*");
- servletContextHandler.addServlet(new ServletHolder(new SubLogServlet()), "/sublog/*");
- servletContextHandler.addServlet(new ServletHolder(new GroupServlet()), "/group/*");
- servletContextHandler.addServlet(new ServletHolder(new SubscriptionServlet()), "/subs/*");
- servletContextHandler.addServlet(new ServletHolder(new InternalServlet()), "/internal/*");
- servletContextHandler.addServlet(new ServletHolder(new RouteServlet()), "/internal/route/*");
- servletContextHandler.addServlet(new ServletHolder(new DRFeedsServlet()), "/");
- servletContextHandler.addFilter(new FilterHolder(new ThrottleFilter()),
- "/publish/*", EnumSet.of(DispatcherType.REQUEST));
-
- //CADI Filter activation check
- if (Boolean.parseBoolean(getProvProperties().getProperty(
- "org.onap.dmaap.datarouter.provserver.cadi.enabled", "false"))) {
- servletContextHandler.addFilter(new FilterHolder(new DRProvCadiFilter(true, getAafPropsUtils().getPropAccess())),
- "/*", EnumSet.of(DispatcherType.REQUEST));
- intlogger.info("PROV0001 AAF CADI Auth enabled for ");
- }
-
- ContextHandlerCollection contextHandlerCollection = new ContextHandlerCollection();
- contextHandlerCollection.addHandler(servletContextHandler);
-
- // Server's Handler collection
- handlerCollection = new HandlerCollection();
- handlerCollection.setHandlers(new Handler[]{contextHandlerCollection, new DefaultHandler()});
- handlerCollection.addHandler(requestLogHandler);
-
- server.setConnectors(new Connector[]{httpServerConnector, httpsServerConnector});
- }
- }
- server.setHandler(handlerCollection);
-
// Daemon to clean up the log directory on a daily basis
Timer rolex = new Timer();
rolex.scheduleAtFixedRate(new PurgeLogDirTask(), 0, 86400000L); // run once per day
- // Start LogfileLoader
- LogfileLoader.getLoader();
-
try {
- server.start();
- intlogger.info("Prov Server started-" + server.getState());
+ // Create and start the Jetty server
+ provServer = ProvServer.getServerInstance();
+ intlogger.info("PROV0000 **** DMaaP Data Router Provisioning Server starting....");
+ provServer.start();
+ provServer.dumpStdErr();
+ provServer.join();
+ intlogger.info("PROV0000 **** DMaaP Data Router Provisioning Server started: " + provServer.getState());
} catch (Exception e) {
- intlogger.error("Jetty failed to start. Exiting: " + e.getMessage(), e);
+ intlogger.error(
+ "PROV0010 **** DMaaP Data Router Provisioning Server failed to start. Exiting: " + e.getMessage(), e);
exit(1);
}
- server.join();
- intlogger.info("PROV0001 **** AT&T Data Router Provisioning Server halted.");
+ // Start LogfileLoader
+ LogfileLoader.getLoader();
}
/**
* Stop the Jetty server.
*/
- public static void shutdown() {
+ static void shutdown() {
new Thread(() -> {
try {
- server.stop();
+ provServer.stop();
Thread.sleep(5000L);
exit(0);
} catch (Exception e) {