summaryrefslogtreecommitdiffstats
path: root/pki/base
diff options
context:
space:
mode:
Diffstat (limited to 'pki/base')
-rw-r--r--pki/base/common/src/com/netscape/certsrv/jobs/IJob.java12
-rw-r--r--pki/base/common/src/com/netscape/cms/jobs/AJobBase.java22
-rw-r--r--pki/base/common/src/com/netscape/cms/jobs/PublishCertsJob.java9
-rw-r--r--pki/base/common/src/com/netscape/cms/jobs/RenewalNotificationJob.java2
-rw-r--r--pki/base/common/src/com/netscape/cms/jobs/RequestInQueueJob.java2
-rw-r--r--pki/base/common/src/com/netscape/cms/jobs/UnpublishExpiredJob.java2
-rw-r--r--pki/base/common/src/com/netscape/cmscore/apps/CMSEngine.java2
-rw-r--r--pki/base/common/src/com/netscape/cmscore/dbs/CertificateRepository.java7
-rw-r--r--pki/base/common/src/com/netscape/cmscore/jobs/JobsScheduler.java48
9 files changed, 51 insertions, 55 deletions
diff --git a/pki/base/common/src/com/netscape/certsrv/jobs/IJob.java b/pki/base/common/src/com/netscape/certsrv/jobs/IJob.java
index 3683b1f09..5584d68ff 100644
--- a/pki/base/common/src/com/netscape/certsrv/jobs/IJob.java
+++ b/pki/base/common/src/com/netscape/certsrv/jobs/IJob.java
@@ -91,4 +91,16 @@ public interface IJob {
* @return configuration store
*/
public IConfigStore getConfigStore();
+
+ /**
+ * Request the job to stop gracefully. The job may not stop immediately.
+ */
+ public void stop();
+
+ /**
+ * Check whether the job has been asked to stop. Long running jobs should call
+ * this method occasionally inside the run() method and exit gracefully if it
+ * returns true.
+ */
+ public boolean isStopped();
}
diff --git a/pki/base/common/src/com/netscape/cms/jobs/AJobBase.java b/pki/base/common/src/com/netscape/cms/jobs/AJobBase.java
index 4a70147de..0da5d2028 100644
--- a/pki/base/common/src/com/netscape/cms/jobs/AJobBase.java
+++ b/pki/base/common/src/com/netscape/cms/jobs/AJobBase.java
@@ -74,6 +74,8 @@ public abstract class AJobBase implements IJob, Runnable {
protected Hashtable<String, Object> mContentParams = new Hashtable<String, Object>();
protected Hashtable<String, Object> mItemParams = new Hashtable<String, Object>();
+ boolean stopped;
+
public AJobBase() {
}
@@ -209,17 +211,17 @@ public abstract class AJobBase implements IJob, Runnable {
protected void buildItemParams(X509CertImpl cert) {
mItemParams.put(IEmailFormProcessor.TOKEN_SERIAL_NUM,
- (Object) cert.getSerialNumber().toString());
+ cert.getSerialNumber().toString());
mItemParams.put(IEmailFormProcessor.TOKEN_HEX_SERIAL_NUM,
- (Object) cert.getSerialNumber().toString(16));
+ cert.getSerialNumber().toString(16));
mItemParams.put(IEmailFormProcessor.TOKEN_ISSUER_DN,
- (Object) cert.getIssuerDN().toString());
+ cert.getIssuerDN().toString());
mItemParams.put(IEmailFormProcessor.TOKEN_SUBJECT_DN,
- (Object) cert.getSubjectDN().toString());
+ cert.getSubjectDN().toString());
mItemParams.put(IEmailFormProcessor.TOKEN_NOT_AFTER,
- (Object) cert.getNotAfter().toString());
+ cert.getNotAfter().toString());
mItemParams.put(IEmailFormProcessor.TOKEN_NOT_BEFORE,
- (Object) cert.getNotBefore().toString());
+ cert.getNotBefore().toString());
// ... and more
}
@@ -288,4 +290,12 @@ public abstract class AJobBase implements IJob, Runnable {
mLogger.log(ILogger.EV_SYSTEM, null, ILogger.S_OTHER,
level, mId + ": " + msg, multiline);
}
+
+ public void stop() {
+ stopped = true;
+ }
+
+ public boolean isStopped() {
+ return stopped;
+ }
}
diff --git a/pki/base/common/src/com/netscape/cms/jobs/PublishCertsJob.java b/pki/base/common/src/com/netscape/cms/jobs/PublishCertsJob.java
index 903f83691..2289d7255 100644
--- a/pki/base/common/src/com/netscape/cms/jobs/PublishCertsJob.java
+++ b/pki/base/common/src/com/netscape/cms/jobs/PublishCertsJob.java
@@ -17,7 +17,6 @@
// --- END COPYRIGHT BLOCK ---
package com.netscape.cms.jobs;
-import java.security.cert.X509Certificate;
import java.text.DateFormat;
import java.util.Date;
import java.util.Enumeration;
@@ -135,7 +134,7 @@ public class PublishCertsJob extends AJobBase
}
mReqQ = mCa.getRequestQueue();
- mRepository = (ICertificateRepository) mCa.getCertificateRepository();
+ mRepository = mCa.getCertificateRepository();
mPublisherProcessor = mCa.getPublisherProcessor();
// read from the configuration file
@@ -299,7 +298,7 @@ public class PublishCertsJob extends AJobBase
try {
if ((mPublisherProcessor != null) &&
mPublisherProcessor.enabled()) {
- mPublisherProcessor.publishCert((X509Certificate) cert, req);
+ mPublisherProcessor.publishCert(cert, req);
if (mSummary == true)
buildItemParams(IEmailFormProcessor.TOKEN_STATUS,
STATUS_SUCCESS);
@@ -322,7 +321,7 @@ public class PublishCertsJob extends AJobBase
try {
if ((mPublisherProcessor != null) &&
mPublisherProcessor.enabled()) {
- mPublisherProcessor.publishCert((X509Certificate) cert, null);
+ mPublisherProcessor.publishCert(cert, null);
if (mSummary == true)
buildItemParams(IEmailFormProcessor.TOKEN_STATUS,
@@ -396,6 +395,6 @@ public class PublishCertsJob extends AJobBase
* @return String array of configuration parameter names.
*/
public String[] getConfigParams() {
- return (mConfigParams);
+ return mConfigParams;
}
}
diff --git a/pki/base/common/src/com/netscape/cms/jobs/RenewalNotificationJob.java b/pki/base/common/src/com/netscape/cms/jobs/RenewalNotificationJob.java
index 621d987fe..5a14c6278 100644
--- a/pki/base/common/src/com/netscape/cms/jobs/RenewalNotificationJob.java
+++ b/pki/base/common/src/com/netscape/cms/jobs/RenewalNotificationJob.java
@@ -275,7 +275,7 @@ public class RenewalNotificationJob
return;
}
- mCertDB = (ICertificateRepository) mCA.getCertificateRepository();
+ mCertDB = mCA.getCertificateRepository();
mCron = mConfig.getString(IJobCron.PROP_CRON);
if (mCron == null) {
diff --git a/pki/base/common/src/com/netscape/cms/jobs/RequestInQueueJob.java b/pki/base/common/src/com/netscape/cms/jobs/RequestInQueueJob.java
index adddc9755..775845ca7 100644
--- a/pki/base/common/src/com/netscape/cms/jobs/RequestInQueueJob.java
+++ b/pki/base/common/src/com/netscape/cms/jobs/RequestInQueueJob.java
@@ -213,6 +213,6 @@ public class RequestInQueueJob extends AJobBase
* @return String array of configuration parameter names.
*/
public String[] getConfigParams() {
- return (mConfigParams);
+ return mConfigParams;
}
}
diff --git a/pki/base/common/src/com/netscape/cms/jobs/UnpublishExpiredJob.java b/pki/base/common/src/com/netscape/cms/jobs/UnpublishExpiredJob.java
index c61d953eb..63cae7f30 100644
--- a/pki/base/common/src/com/netscape/cms/jobs/UnpublishExpiredJob.java
+++ b/pki/base/common/src/com/netscape/cms/jobs/UnpublishExpiredJob.java
@@ -135,7 +135,7 @@ public class UnpublishExpiredJob extends AJobBase
}
mReqQ = mCa.getRequestQueue();
- mRepository = (ICertificateRepository) mCa.getCertificateRepository();
+ mRepository = mCa.getCertificateRepository();
mPublisherProcessor = mCa.getPublisherProcessor();
// read from the configuration file
diff --git a/pki/base/common/src/com/netscape/cmscore/apps/CMSEngine.java b/pki/base/common/src/com/netscape/cmscore/apps/CMSEngine.java
index 6ca1b6e7e..e1981132d 100644
--- a/pki/base/common/src/com/netscape/cmscore/apps/CMSEngine.java
+++ b/pki/base/common/src/com/netscape/cmscore/apps/CMSEngine.java
@@ -1621,8 +1621,6 @@ public class CMSEngine implements ICMSEngine {
shutdownSubsystems(mFinalSubsystems);
shutdownSubsystems(mDynSubsystems);
shutdownSubsystems(mStaticSubsystems);
-
- System.exit(0);
}
/**
diff --git a/pki/base/common/src/com/netscape/cmscore/dbs/CertificateRepository.java b/pki/base/common/src/com/netscape/cmscore/dbs/CertificateRepository.java
index 0d004d335..c563a3a45 100644
--- a/pki/base/common/src/com/netscape/cmscore/dbs/CertificateRepository.java
+++ b/pki/base/common/src/com/netscape/cmscore/dbs/CertificateRepository.java
@@ -245,6 +245,7 @@ public class CertificateRepository extends Repository
}
if (mResults != null) {
mRetrieveModificationsThread.setResults(mResults);
+ mRetrieveModificationsThread.setDaemon(true);
mRetrieveModificationsThread.start();
}
}
@@ -254,6 +255,7 @@ public class CertificateRepository extends Repository
CMS.debug("In setCertStatusUpdateInterval about to create CertStatusUpdateThread ");
mCertStatusUpdateThread = new CertStatusUpdateThread(this, requestRepo, "CertStatusUpdateThread");
mCertStatusUpdateThread.setInterval(interval);
+ mCertStatusUpdateThread.setDaemon(true);
mCertStatusUpdateThread.start();
} else {
CMS.debug("In setCertStatusUpdateInterval it thinks the thread is up already ");
@@ -1903,11 +1905,6 @@ public class CertificateRepository extends Repository
}
public void shutdown() {
- //if (mCertStatusUpdateThread != null)
- // mCertStatusUpdateThread.destroy();
-
- //if (mRetrieveModificationsThread != null)
- // mRetrieveModificationsThread.destroy();
}
}
diff --git a/pki/base/common/src/com/netscape/cmscore/jobs/JobsScheduler.java b/pki/base/common/src/com/netscape/cmscore/jobs/JobsScheduler.java
index 79225a13f..b35f8c340 100644
--- a/pki/base/common/src/com/netscape/cmscore/jobs/JobsScheduler.java
+++ b/pki/base/common/src/com/netscape/cmscore/jobs/JobsScheduler.java
@@ -118,7 +118,7 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
// register all job plugins
while (mImpls.hasMoreElements()) {
- String id = (String) mImpls.nextElement();
+ String id = mImpls.nextElement();
String pluginPath = c.getString(id + "." + PROP_CLASS);
JobPlugin plugin = new JobPlugin(id, pluginPath);
@@ -131,10 +131,9 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
Enumeration<String> jobs = c.getSubStoreNames();
while (jobs.hasMoreElements()) {
- String jobName = (String) jobs.nextElement();
+ String jobName = jobs.nextElement();
String implName = c.getString(jobName + "." + PROP_PLUGIN);
- JobPlugin plugin =
- (JobPlugin) mJobPlugins.get(implName);
+ JobPlugin plugin = mJobPlugins.get(implName);
if (plugin == null) {
log(ILogger.LL_FAILURE,
@@ -145,10 +144,8 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
String classPath = plugin.getClassPath();
// instantiate and init the job
- IJob job = null;
-
try {
- job = (IJob)
+ IJob job = (IJob)
Class.forName(classPath).newInstance();
IConfigStore jconfig = c.getSubStore(jobName);
@@ -205,7 +202,7 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
// get time now
Calendar cal = Calendar.getInstance();
long rightNow = cal.getTime().getTime();
- long duration = 0;
+ long duration;
long second = cal.get(Calendar.SECOND);
if (second != 1) { // scheduler needs adjustment
@@ -238,6 +235,7 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
System.out.println(e);
}
}
+
// if (duration == 0), it's time
// woke up...
@@ -262,10 +260,8 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
*/
wokeupTime = cal.getTime().getTime();
- IJob job = null;
-
- for (Enumeration<IJob> e = mJobs.elements(); e.hasMoreElements();) {
- job = e.nextElement();
+ for (Enumeration<IJob> e = mJobs.elements(); e.hasMoreElements(); ) {
+ IJob job = e.nextElement();
// is it enabled?
IConfigStore cs = job.getConfigStore();
@@ -285,7 +281,7 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
// log(ILogger.LL_INFO, "show time for: "+job.getId());
// if previous thread still alive, skip
- Thread jthread = (Thread) mJobThreads.get(job.getId());
+ Thread jthread = mJobThreads.get(job.getId());
if ((jthread == null) || (!jthread.isAlive())) {
Thread jobThread = new Thread((Runnable) job, job.getId());
@@ -381,7 +377,7 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
* @return name of the Jobs Scheduler subsystem
*/
public String getId() {
- return (mId);
+ return mId;
}
/**
@@ -419,24 +415,9 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
* <P>
*/
public void shutdown() {
- mJobPlugins.clear();
- mJobPlugins = null;
- mJobs.clear();
- mJobs = null;
-
- Enumeration<String> enums = mJobThreads.keys();
- while (enums.hasMoreElements()) {
- String id = (String) enums.nextElement();
- Thread currthread = (Thread) mJobThreads.get(id);
- //if (currthread != null)
- // currthread.destroy();
+ for (IJob job : mJobs.values()) {
+ job.stop();
}
-
- mJobThreads.clear();
- mJobThreads = null;
-
- //if (mScheduleThread != null)
- // mScheduleThread.destroy();
}
/**
@@ -462,7 +443,7 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
Debug.trace("in getCofigParams()");
// is this a registered implname?
- JobPlugin plugin = (JobPlugin) mJobPlugins.get(implName);
+ JobPlugin plugin = mJobPlugins.get(implName);
if (plugin == null) {
log(ILogger.LL_FAILURE,
@@ -477,13 +458,12 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
// auth manager instantces to avoid instantiation just for this.
// a temporary instance
- IJob jobInst = null;
String className = plugin.getClassPath();
if (Debug.ON)
Debug.trace("className = " + className);
try {
- jobInst = (IJob)
+ IJob jobInst = (IJob)
Class.forName(className).newInstance();
if (Debug.ON)
Debug.trace("class instantiated");