aboutsummaryrefslogtreecommitdiff
path: root/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java
diff options
context:
space:
mode:
Diffstat (limited to 'moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java')
-rw-r--r--moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java268
1 files changed, 145 insertions, 123 deletions
diff --git a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java
index 0e592f0..28231e6 100644
--- a/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java
+++ b/moaSig/moa-sig-lib/src/main/java/at/gv/egovernment/moa/spss/server/init/SystemInitializer.java
@@ -21,15 +21,11 @@
* that you distribute must include a readable copy of the "NOTICE" text file.
*/
-
package at.gv.egovernment.moa.spss.server.init;
-import java.io.FileNotFoundException;
import java.io.IOException;
-import java.security.cert.CertificateException;
import java.util.Calendar;
import java.util.Date;
-import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.ServiceLoader;
import java.util.Timer;
@@ -52,13 +48,13 @@ import at.gv.egovernment.moaspss.logging.LoggingContextManager;
import at.gv.egovernment.moaspss.util.Constants;
import at.gv.egovernment.moaspss.util.DOMUtils;
import iaik.asn1.ObjectID;
-import iaik.pki.store.certstore.CertStoreException;
-import iaik.pki.store.truststore.TrustStoreException;
+import iaik.pkcs.pkcs12.PKCS12KeyStore;
import iaik.server.ConfigurationData;
+import iaik.utils.RFC2253NameParser;
/**
* MOA SP/SS web service initialization.
- *
+ *
* @author Patrick Peck
* @version $Id$
*/
@@ -69,37 +65,40 @@ public class SystemInitializer {
private static final String LOGGING_HIERARCHY = "moa.spss.server";
/** Whether XML schema grammars have been initialized. */
private static boolean grammarsInitialized = false;
-
+
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SystemInitializer.class);
- private static ServiceLoader<ExternalInitializer> initializerServices =
- ServiceLoader.load(ExternalInitializer.class);
-
-
+ private static ServiceLoader<ExternalInitializer> initializerServices =
+ ServiceLoader.load(ExternalInitializer.class);
+ private static ConfigurationData iaikConfiguration;
+ private static ConfigurationProvider config;
+
private static void runInitializer(ConfigurationProvider configurationProvider) {
- Iterator<ExternalInitializer> initializerIterator = initializerServices.iterator();
- logger.info("Running external initializers");
- while(initializerIterator.hasNext()) {
- ExternalInitializer externalInitializer = initializerIterator.next();
- externalInitializer.initialize(configurationProvider);
- }
+ final Iterator<ExternalInitializer> initializerIterator = initializerServices.iterator();
+ logger.info("Running external initializers");
+ while (initializerIterator.hasNext()) {
+ final ExternalInitializer externalInitializer = initializerIterator.next();
+ externalInitializer.initialize(configurationProvider);
+ }
}
-
+
/**
* Initialize the MOA SP/SS webservice.
+ *
+ * @return
*/
- public static void init() {
-
- logger.info("##############################################################################");
- logger.info("##############################################################################");
- logger.info("### ###");
- logger.info("### LOADING MOA-SPSS ###");
- logger.info("### ================ ###");
- logger.info("### ###");
- logger.info("##############################################################################");
- logger.info("##############################################################################");
-
- MessageProvider msg = MessageProvider.getInstance();
+ public static StartupConfigurationHolder init() {
+
+ logger.info("##############################################################################");
+ logger.info("##############################################################################");
+ logger.info("### ###");
+ logger.info("### LOADING MOA-SPSS ###");
+ logger.info("### ================ ###");
+ logger.info("### ###");
+ logger.info("##############################################################################");
+ logger.info("##############################################################################");
+
+ final MessageProvider msg = MessageProvider.getInstance();
Thread archiveCleaner;
@@ -108,91 +107,99 @@ public class SystemInitializer {
// set up a logging context for logging the startup
LoggingContextManager.getInstance().setLoggingContext(
- new LoggingContext("startup"));
-
+ new LoggingContext("startup"));
+
// AxisProperties.setProperty("enableNamespacePrefixOptimization","false");
// AxisProperties.setProperty("disablePrettyXML", "true");
// AxisProperties.setProperty("axis.doAutoTypes", "true");
-
- // initialize preparsed Xerces grammar pool for faster XML
+
+ // initialize preparsed Xerces grammar pool for faster XML
// parsing/validating
try {
if (!grammarsInitialized) {
- Class clazz = SystemInitializer.class;
+ final Class clazz = SystemInitializer.class;
// preparse XML schema
DOMUtils.addSchemaToPool(
- clazz.getResourceAsStream(Constants.XML_SCHEMA_LOCATION),
- Constants.XML_NS_URI);
+ clazz.getResourceAsStream(Constants.XML_SCHEMA_LOCATION),
+ Constants.XML_NS_URI);
// preparse XMLDsig Filter2 schema
DOMUtils.addSchemaToPool(
- clazz.getResourceAsStream(Constants.DSIG_FILTER2_SCHEMA_LOCATION),
- Constants.DSIG_FILTER2_NS_URI);
+ clazz.getResourceAsStream(Constants.DSIG_FILTER2_SCHEMA_LOCATION),
+ Constants.DSIG_FILTER2_NS_URI);
// preparse XMLDsig schema
DOMUtils.addSchemaToPool(
- clazz.getResourceAsStream(Constants.DSIG_SCHEMA_LOCATION),
- Constants.DSIG_NS_URI);
+ clazz.getResourceAsStream(Constants.DSIG_SCHEMA_LOCATION),
+ Constants.DSIG_NS_URI);
// preparse MOA schema
DOMUtils.addSchemaToPool(
- clazz.getResourceAsStream(Constants.MOA_SCHEMA_LOCATION),
- Constants.MOA_NS_URI);
+ clazz.getResourceAsStream(Constants.MOA_SCHEMA_LOCATION),
+ Constants.MOA_NS_URI);
grammarsInitialized = true;
}
- } catch (IOException e) {
+ } catch (final IOException e) {
Logger.warn(new LogMsg(msg.getMessage("init.04", null)), e);
}
-
+
// initialize configuration
try {
- Logger.info("Initialize MOA-SP/SS configuration ... ");
- ConfigurationProvider config = ConfigurationProvider.getInstance();
-
- //initialize TSL module
- TSLConfiguration moaSPTslConfig = config.getTSLConfiguration();
- if (moaSPTslConfig != null) {
- Logger.debug("Starting TSL-Service initialization ... ");
- TslConfigurationImpl tslConfig = new TslConfigurationImpl();
- tslConfig.setEuTslURL(moaSPTslConfig.getEuTSLUrl());
- tslConfig.setTslWorkingDirectory(moaSPTslConfig.getWorkingDirectory());
- tslConfig.setNetworkReadTimeout(config.getReadTimeout() / 1000);
-
- Logger.info(new LogMsg(msg.getMessage("config.41", null)));
- TSLServiceFactory.initialize(tslConfig);
- Logger.info("TSL-Service client initialization finished");
-
- //initialize TSL Update Task
- initTSLUpdateTask(moaSPTslConfig);
-
- }
+ Logger.info("Initialize MOA-SP/SS configuration ... ");
+ config = ConfigurationProvider.getInstance();
+
+ // initialize TSL module
+ final TSLConfiguration moaSPTslConfig = config.getTSLConfiguration();
+ if (moaSPTslConfig != null) {
+ Logger.debug("Starting TSL-Service initialization ... ");
+ final TslConfigurationImpl tslConfig = new TslConfigurationImpl();
+ tslConfig.setEuTslURL(moaSPTslConfig.getEuTSLUrl());
+ tslConfig.setTslWorkingDirectory(moaSPTslConfig.getWorkingDirectory());
+ tslConfig.setNetworkReadTimeout(config.getReadTimeout() / 1000);
+
+ Logger.info(new LogMsg(msg.getMessage("config.41", null)));
+ TSLServiceFactory.initialize(tslConfig);
+ Logger.info("TSL-Service client initialization finished");
+
+ // initialize TSL Update Task
+ initTSLUpdateTask(moaSPTslConfig);
+
+ }
+
+ Logger.info("Register additional RFC2253 Object identifier");
+ RFC2253NameParser.register(
+ "organizationIdentifier",
+ new ObjectID("2.5.4.97", "organizationIdentifier", (String) null, false));
+
+ Logger.info("Building IAIK-MOA configuration ... ");
+ iaikConfiguration = new IaikConfigurator().configure(config);
+
+ runInitializer(config);
- Logger.info("Building IAIK-MOA configuration ... ");
- new IaikConfigurator().configure(config);
-
- runInitializer(config);
- Logger.info(new LogMsg(msg.getMessage("init.01", null)));
-
- } catch (MOAException e) {
- Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e);
+ // set Fallback mode in IAIK KeyStore implementation to 'true' to fix problems default behavior of JVM
+ PKCS12KeyStore.setUseJKSFallBack(true);
+ Logger.info("Set fallback mode in: " + PKCS12KeyStore.class.getSimpleName()
+ + " to :" + PKCS12KeyStore.getUseJKSFallBack());
- } catch (Throwable e) {
- Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e);
- throw new RuntimeException(e);
-
- } finally {
- logger.info("Configuration initialized");
- }
-
-
-
+ Logger.info(new LogMsg(msg.getMessage("init.01", null)));
+
+ } catch (final MOAException e) {
+ Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e);
+ throw new RuntimeException(e);
+
+ } catch (final Throwable e) {
+ Logger.fatal(new LogMsg(msg.getMessage("init.00", null)), e);
+ throw new RuntimeException(e);
+
+ }
+
// CHANGE IXSIL to XSECT
// set IXSIL debug output
- //IXSILInit.setPrintDebugLog(
- // Logger.isDebugEnabled(IaikLog.IAIK_LOG_HIERARCHY));
- //Logger.info("Registering XSECT");
- //XSecProvider.addAsProvider(true);
-
+ // IXSILInit.setPrintDebugLog(
+ // Logger.isDebugEnabled(IaikLog.IAIK_LOG_HIERARCHY));
+ // Logger.info("Registering XSECT");
+ // XSecProvider.addAsProvider(true);
+
// start the archive cleanup thread
archiveCleaner =
- new Thread(new RevocationArchiveCleaner(ARCHIVE_CLEANUP_INTERVAL));
+ new Thread(new RevocationArchiveCleaner(ARCHIVE_CLEANUP_INTERVAL));
archiveCleaner.setName("RevocationArchiveCleaner");
archiveCleaner.setDaemon(true);
archiveCleaner.setPriority(Thread.MIN_PRIORITY);
@@ -203,42 +210,57 @@ public class SystemInitializer {
logger.info("==============================================================================");
logger.info("=== CONFIGURATION DONE ===");
logger.info("==============================================================================");
+
+ return new StartupConfigurationHolder(config, iaikConfiguration);
+
+ }
+
+ /**
+ * Get configuration object from IAIK modules.
+ *
+ * @return Configuration or <code>null</code> of it was not configurated yet
+ */
+ public static ConfigurationData getIaikConfiguration() {
+ return iaikConfiguration;
+
}
-
+
private static void initTSLUpdateTask(TSLConfiguration tslconfig) {
- MessageProvider msg = MessageProvider.getInstance();
- if (tslconfig != null) {
- // get start time and period from config
- long period = tslconfig.getUpdateSchedulePeriod();
- Date startConfig = tslconfig.getUpdateScheduleStartTime();
-
- // get hh:mm:ss from config date
- Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
- calendar.setTime(startConfig); // assigns calendar to given date
- int hour = calendar.get(Calendar.HOUR_OF_DAY);
- int min = calendar.get(Calendar.MINUTE);
- int sec = calendar.get(Calendar.SECOND);
-
- // create date with today and time from config
- Calendar cal = Calendar.getInstance();
- Date now = cal.getTime();
- cal.set(Calendar.HOUR_OF_DAY, hour);
- cal.set(Calendar.MINUTE, min);
- cal.set(Calendar.SECOND, sec);
-
- // proposed start time
- Date start = cal.getTime();
-
- // if start time has already passed today - add one day (86400000 milliseconds = 1 day)
- if (start.before(now))
- start = new Date(start.getTime() + 86400000);
-
- Logger.debug(new LogMsg(msg.getMessage("config.46", new String[]{start.toString(), "" + period})));
-
- // start TSL updater task
- Timer timer = new Timer();
- timer.schedule(new TSLUpdaterTimerTask(), start, period);
+ final MessageProvider msg = MessageProvider.getInstance();
+ if (tslconfig != null) {
+ // get start time and period from config
+ final long period = tslconfig.getUpdateSchedulePeriod();
+ final Date startConfig = tslconfig.getUpdateScheduleStartTime();
+
+ // get hh:mm:ss from config date
+ final Calendar calendar = Calendar.getInstance(); // creates a new calendar instance
+ calendar.setTime(startConfig); // assigns calendar to given date
+ final int hour = calendar.get(Calendar.HOUR_OF_DAY);
+ final int min = calendar.get(Calendar.MINUTE);
+ final int sec = calendar.get(Calendar.SECOND);
+
+ // create date with today and time from config
+ final Calendar cal = Calendar.getInstance();
+ final Date now = cal.getTime();
+ cal.set(Calendar.HOUR_OF_DAY, hour);
+ cal.set(Calendar.MINUTE, min);
+ cal.set(Calendar.SECOND, sec);
+
+ // proposed start time
+ Date start = cal.getTime();
+
+ // if start time has already passed today - add one day (86400000 milliseconds =
+ // 1 day)
+ if (start.before(now)) {
+ start = new Date(start.getTime() + 86400000);
}
+
+ Logger.debug(new LogMsg(msg.getMessage("config.46", new String[] { start.toString(), "" + period })));
+
+ // start TSL updater task
+ final Timer timer = new Timer("TSL_DB_Updater");
+ timer.schedule(new TSLUpdaterTimerTask(), start, period);
+ }
}
}