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("