package org.onap.dmaap.datarouter.node;
-import org.eclipse.jetty.http.HttpVersion;
-import org.eclipse.jetty.servlet.*;
-import org.eclipse.jetty.util.ssl.*;
-import org.eclipse.jetty.server.*;
+import java.util.Arrays;
import org.apache.log4j.Logger;
+import org.eclipse.jetty.http.HttpVersion;
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.HttpConfiguration;
+import org.eclipse.jetty.server.HttpConnectionFactory;
+import org.eclipse.jetty.server.SecureRequestCustomizer;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.server.SslConnectionFactory;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
+import org.eclipse.jetty.util.ssl.SslContextFactory;
/**
* The main starting point for the Data Router node
*/
public class NodeMain {
+
private NodeMain() {
}
- private static Logger logger = Logger.getLogger("org.onap.dmaap.datarouter.node.NodeMain");
+ private static Logger nodeMainLogger = Logger.getLogger("org.onap.dmaap.datarouter.node.NodeMain");
+
+ private static class WaitForConfig implements Runnable {
- private static class wfconfig implements Runnable {
- private NodeConfigManager ncm;
+ private NodeConfigManager localNodeConfigManager;
- wfconfig(NodeConfigManager ncm) {
- this.ncm = ncm;
+ WaitForConfig(NodeConfigManager ncm) {
+ this.localNodeConfigManager = ncm;
}
public synchronized void run() {
notify();
}
- synchronized void waitforconfig() {
- ncm.registerConfigTask(this);
- while (!ncm.isConfigured()) {
- logger.info("NODE0003 Waiting for Node Configuration");
+ synchronized void waitForConfig() {
+ localNodeConfigManager.registerConfigTask(this);
+ while (!localNodeConfigManager.isConfigured()) {
+ nodeMainLogger.info("NODE0003 Waiting for Node Configuration");
try {
wait();
- } catch (Exception e) {
- logger.debug("NodeMain: waitforconfig exception");
+ } catch (Exception exception) {
+ nodeMainLogger
+ .debug("NodeMain: waitForConfig exception. Exception Message:- " + exception.toString(),
+ exception);
}
}
- ncm.deregisterConfigTask(this);
- logger.info("NODE0004 Node Configuration Data Received");
+ localNodeConfigManager.deregisterConfigTask(this);
+ nodeMainLogger.info("NODE0004 Node Configuration Data Received");
}
}
- private static Delivery d;
- private static NodeConfigManager ncm;
+ private static Delivery delivery;
+ private static NodeConfigManager nodeConfigManager;
/**
* Reset the retry timer for a subscription
*/
static void resetQueue(String subid, String ip) {
- d.resetQueue(ncm.getSpoolDir(subid, ip));
+ delivery.resetQueue(nodeConfigManager.getSpoolDir(subid, ip));
}
/**
* Start the data router.
* <p>
- * The location of the node configuration file can be set using the
- * org.onap.dmaap.datarouter.node.ConfigFile system property. By
- * default, it is "etc/node.properties".
+ * The location of the node configuration file can be set using the org.onap.dmaap.datarouter.node.ConfigFile system
+ * property. By default, it is "etc/node.properties".
*/
public static void main(String[] args) throws Exception {
- logger.info("NODE0001 Data Router Node Starting");
+ nodeMainLogger.info("NODE0001 Data Router Node Starting");
IsFrom.setDNSCache();
- ncm = NodeConfigManager.getInstance();
- logger.info("NODE0002 I am " + ncm.getMyName());
- (new wfconfig(ncm)).waitforconfig();
- d = new Delivery(ncm);
- LogManager lm = new LogManager(ncm);
+ nodeConfigManager = NodeConfigManager.getInstance();
+ nodeMainLogger.info("NODE0002 I am " + nodeConfigManager.getMyName());
+ (new WaitForConfig(nodeConfigManager)).waitForConfig();
+ delivery = new Delivery(nodeConfigManager);
Server server = new Server();
-
// HTTP configuration
- HttpConfiguration http_config = new HttpConfiguration();
- http_config.setIdleTimeout(2000);
- http_config.setRequestHeaderSize(2048);
-
- ServerConnector http = new ServerConnector(server, new HttpConnectionFactory(http_config));
- http.setPort(ncm.getHttpPort());
-
- // HTTPS configuration
- SslContextFactory sslContextFactory = new SslContextFactory();
- sslContextFactory.setKeyStoreType(ncm.getKSType());
- sslContextFactory.setKeyStorePath(ncm.getKSFile());
- sslContextFactory.setKeyStorePassword(ncm.getKSPass());
- sslContextFactory.setKeyManagerPassword(ncm.getKPass());
-
- HttpConfiguration https_config = new HttpConfiguration(http_config);
- https_config.setRequestHeaderSize(8192);
-
- ServerConnector https = new ServerConnector(server,
- new SslConnectionFactory(sslContextFactory,HttpVersion.HTTP_1_1.asString()),
- new HttpConnectionFactory(https_config));
- https.setPort(ncm.getHttpsPort());
- https.setIdleTimeout(500000);
- https.setAcceptQueueSize(2);
-
- /* Skip SSLv3 Fixes */
- sslContextFactory.addExcludeProtocols("SSLv3");
- logger.info("Excluded protocols node-" + sslContextFactory.getExcludeProtocols());
- /* End of SSLv3 Fixes */
-
- server.setConnectors(new Connector[]{http, https});
- ServletContextHandler ctxt = new ServletContextHandler(0);
+ HttpConfiguration httpConfiguration = new HttpConfiguration();
+ httpConfiguration.setRequestHeaderSize(2048);
+
+ // HTTP connector
+ ServletContextHandler ctxt;
+ try (ServerConnector httpServerConnector = new ServerConnector(server,
+ new HttpConnectionFactory(httpConfiguration))) {
+ httpServerConnector.setPort(nodeConfigManager.getHttpPort());
+ httpServerConnector.setIdleTimeout(2000);
+
+ // HTTPS configuration
+ SslContextFactory sslContextFactory = new SslContextFactory();
+ sslContextFactory.setKeyStoreType(nodeConfigManager.getKSType());
+ sslContextFactory.setKeyStorePath(nodeConfigManager.getKSFile());
+ sslContextFactory.setKeyStorePassword(nodeConfigManager.getKSPass());
+ sslContextFactory.setKeyManagerPassword(nodeConfigManager.getKPass());
+ /* Skip SSLv3 Fixes */
+ sslContextFactory.addExcludeProtocols("SSLv3");
+ nodeMainLogger.info("Excluded protocols node-" + Arrays.toString(sslContextFactory.getExcludeProtocols()));
+ /* End of SSLv3 Fixes */
+
+ HttpConfiguration httpsConfiguration = new HttpConfiguration(httpConfiguration);
+ httpsConfiguration.setRequestHeaderSize(8192);
+
+ SecureRequestCustomizer secureRequestCustomizer = new SecureRequestCustomizer();
+ secureRequestCustomizer.setStsMaxAge(2000);
+ secureRequestCustomizer.setStsIncludeSubDomains(true);
+ httpsConfiguration.addCustomizer(secureRequestCustomizer);
+
+ // HTTPS connector
+ try (ServerConnector httpsServerConnector = new ServerConnector(server,
+ new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
+ new HttpConnectionFactory(httpsConfiguration))) {
+ httpsServerConnector.setPort(nodeConfigManager.getHttpsPort());
+ httpsServerConnector.setIdleTimeout(500000);
+ httpsServerConnector.setAcceptQueueSize(2);
+
+ server.setConnectors(new Connector[]{httpServerConnector, httpsServerConnector});
+ }
+ }
+ ctxt = new ServletContextHandler(0);
ctxt.setContextPath("/");
server.setHandler(ctxt);
ctxt.addServlet(new ServletHolder(new NodeServlet()), "/*");
- logger.info("NODE0005 Data Router Node Activating Service");
+ nodeMainLogger.info("NODE0005 Data Router Node Activating Service");
server.start();
server.join();
}