diff -urN ../ejbca_3_5_9/Changelog.txt ./Changelog.txt
--- ../ejbca_3_5_9/Changelog.txt 2008-10-06 12:08:00.000000000 +0200
+++ ./Changelog.txt 2008-11-14 13:36:10.000000000 +0100
@@ -1,3 +1,8 @@
+3.5.10, 2008-11-14
+---
+Bug
+ * [ECA-724] - CertificateExpirationNotifier service not working on Weblogic-Oracle
+
3.5.9, 2008-10-06
---
Improvement
diff -urN ../ejbca_3_5_9/doc/RELEASE_NOTES ./doc/RELEASE_NOTES
--- ../ejbca_3_5_9/doc/RELEASE_NOTES 2008-10-06 12:08:00.000000000 +0200
+++ ./doc/RELEASE_NOTES 2008-11-14 13:36:10.000000000 +0100
@@ -1,3 +1,12 @@
+EJBCA 3.5.10
+-----------
+This is a minor release, only backorting a fix done in 3.6.
+- CertificateExpirationNotifier service not working on Weblogic-Oracle
+
+Read the changelog for details.
+
+This is a plug-in upgrade from 3.5.x. See UPGRADE for the simple instructions.
+
EJBCA 3.5.9
-----------
This is a minor release, targeted for fixing a few annoying bugs.
diff -urN ../ejbca_3_5_9/propertiesAndPaths.xmli ./propertiesAndPaths.xmli
--- ../ejbca_3_5_9/propertiesAndPaths.xmli 2008-10-06 12:08:00.000000000 +0200
+++ ./propertiesAndPaths.xmli 2008-11-14 13:36:10.000000000 +0100
@@ -3,7 +3,7 @@
-
+
diff -urN ../ejbca_3_5_9/src/java/org/ejbca/core/ejb/services/LocalServiceSessionBean.java ./src/java/org/ejbca/core/ejb/services/LocalServiceSessionBean.java
--- ../ejbca_3_5_9/src/java/org/ejbca/core/ejb/services/LocalServiceSessionBean.java 2008-05-02 08:27:20.000000000 +0200
+++ ./src/java/org/ejbca/core/ejb/services/LocalServiceSessionBean.java 2008-11-14 13:12:12.000000000 +0100
@@ -120,6 +120,14 @@
* home="org.ejbca.core.ejb.services.IServiceTimerSessionLocalHome"
* business="org.ejbca.core.ejb.services.IServiceTimerSessionLocal"
* link="ServiceTimerSession"
+ *
+ * @ejb.ejb-external-ref description="The Certificate store used to store and fetch certificates"
+ * view-type="local"
+ * ref-name="ejb/CertificateStoreSessionLocal"
+ * type="Session"
+ * home="org.ejbca.core.ejb.ca.store.ICertificateStoreSessionLocalHome"
+ * business="org.ejbca.core.ejb.ca.store.ICertificateStoreSessionLocal"
+ * link="CertificateStoreSession"
*
* @jonas.bean ejb-name="ServiceSession"
*/
diff -urN ../ejbca_3_5_9/src/java/org/ejbca/core/model/services/workers/CertificateExpirationNotifierWorker.java ./src/java/org/ejbca/core/model/services/workers/CertificateExpirationNotifierWorker.java
--- ../ejbca_3_5_9/src/java/org/ejbca/core/model/services/workers/CertificateExpirationNotifierWorker.java 2008-05-02 08:27:24.000000000 +0200
+++ ./src/java/org/ejbca/core/model/services/workers/CertificateExpirationNotifierWorker.java 2008-11-14 13:12:12.000000000 +0100
@@ -23,14 +23,16 @@
import org.apache.log4j.Logger;
import org.ejbca.core.ejb.JNDINames;
+import org.ejbca.core.ejb.ServiceLocator;
import org.ejbca.core.ejb.ca.store.CertificateDataBean;
+import org.ejbca.core.ejb.ca.store.ICertificateStoreSessionLocal;
+import org.ejbca.core.ejb.ca.store.ICertificateStoreSessionLocalHome;
import org.ejbca.core.model.InternalResources;
+import org.ejbca.core.model.log.Admin;
import org.ejbca.core.model.ra.UserDataVO;
import org.ejbca.core.model.services.BaseWorker;
import org.ejbca.core.model.services.ServiceExecutionFailedException;
import org.ejbca.core.model.services.actions.MailActionInfo;
-import org.ejbca.util.Base64;
-import org.ejbca.util.CertTools;
import org.ejbca.util.JDBCUtil;
import org.ejbca.util.NotificationParamGen;
@@ -158,20 +160,26 @@
try{
con = JDBCUtil.getDBConnection(JNDINames.DATASOURCE);
- ps = con.prepareStatement("SELECT DISTINCT fingerprint, base64Cert, username"
- + " FROM CertificateData WHERE ("
- + cASelectString + ") AND ("
- + checkDate + ") AND ("
- + statuses + ")");
+ // We can not select the base64 certificate data here, because it may be a LONG datatype which we can't simply
+ String sql = "SELECT DISTINCT fingerprint, username"
+ + " FROM CertificateData WHERE ("
+ + cASelectString + ") AND ("
+ + checkDate + ") AND ("
+ + statuses + ")";
+ log.debug("Executing SQL: "+ sql);
+ ps = con.prepareStatement(sql);
result = ps.executeQuery();
-
+ // Certificate store session bean for retrieving the certificate.
+ ICertificateStoreSessionLocalHome cs = (ICertificateStoreSessionLocalHome)ServiceLocator.getInstance().getLocalHome(ICertificateStoreSessionLocalHome.COMP_NAME);
+ ICertificateStoreSessionLocal cl = cs.create();
while(result.next()){
// For each certificate update status.
String fingerprint = result.getString(1);
- String certBase64 = result.getString(2);
- String username = result.getString(3);
- X509Certificate cert = CertTools.getCertfromByteArray(Base64.decode(certBase64.getBytes()));
+ String username = result.getString(2);
+ log.debug("Found one result for user "+username+", fingerprint="+fingerprint);
+ // Get the certificate through a session bean
+ X509Certificate cert = (X509Certificate )cl.findCertificateByFingerprint(new Admin(Admin.TYPE_INTERNALUSER), fingerprint);
UserDataVO userData = getUserAdminSession().findUser(getAdmin(), username);
if(userData != null){
@@ -221,6 +229,8 @@
sendEmails(adminEmailQueue);
}
+ } else {
+ log.debug("No CAs to check");
}
log.debug("