📄 localejbcahardtokenbatchjobsessionbean.java
字号:
/************************************************************************* * * * EJBCA: The OpenSource Certificate Authority * * * * This software is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or any later version. * * * * See terms of license at gnu.org. * * * *************************************************************************/package org.ejbca.core.ejb.hardtoken;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.Collection;import javax.ejb.CreateException;import javax.ejb.EJBException;import org.ejbca.core.ejb.BaseSessionBean;import org.ejbca.core.ejb.JNDINames;import org.ejbca.core.ejb.log.ILogSessionLocal;import org.ejbca.core.ejb.log.ILogSessionLocalHome;import org.ejbca.core.model.InternalResources;import org.ejbca.core.model.SecConst;import org.ejbca.core.model.hardtoken.UnavailableTokenException;import org.ejbca.core.model.log.Admin;import org.ejbca.core.model.log.LogEntry;import org.ejbca.core.model.ra.UserDataConstants;import org.ejbca.core.model.ra.UserDataVO;import org.ejbca.util.JDBCUtil;/** * Remote interface for bean used by hardtoken batchprograms to retrieve users to generate from EJBCA RA. * * @ejb.bean * description="Session bean handling userdata queue for hard token issuers" * display-name="HardTokenBatchJobSessionSB" * name="HardTokenBatchJobSession" * jndi-name="HardTokenBatchJobSession" * local-jndi-name="HardTokenBatchJobSessionLocal" * view-type="both" * type="Stateless" * transaction-type="Container" * * @ejb.transaction type="Required" * * @weblogic.enable-call-by-reference True * * @ejb.env-entry * description="The JDBC datasource to be used" * name="DataSource" * type="java.lang.String" * value="${datasource.jndi-name-prefix}${datasource.jndi-name}" * * @ejb.home * extends="javax.ejb.EJBHome" * local-extends="javax.ejb.EJBLocalHome" * local-class="org.ejbca.core.ejb.hardtoken.IHardTokenBatchJobSessionLocalHome" * remote-class="org.ejbca.core.ejb.hardtoken.IHardTokenBatchJobSessionHome" * * @ejb.interface * extends="javax.ejb.EJBObject" * local-extends="javax.ejb.EJBLocalObject" * local-class="org.ejbca.core.ejb.hardtoken.IHardTokenBatchJobSessionLocal" * remote-class="org.ejbca.core.ejb.hardtoken.IHardTokenBatchJobSessionRemote" * * @ejb.ejb-external-ref * description="The User entity bean" * view-type="local" * ref-name="ejb/UserDataLocal" * type="Entity" * home="org.ejbca.core.ejb.ra.UserDataLocalHome" * business="org.ejbca.core.ejb.ra.UserDataLocal" * link="UserData" * * @ejb.ejb-external-ref * description="The Certificate Store session bean" * view-type="local" * ref-name="ejb/HardTokenSessionLocal" * type="Session" * home="org.ejbca.core.ejb.hardtoken.IHardTokenSessionLocalHome" * business="org.ejbca.core.ejb.hardtoken.IHardTokenSessionLocal" * link="HardTokenSession" * * @ejb.ejb-external-ref * description="The log session bean" * view-type="local" * ref-name="ejb/LogSessionLocal" * type="Session" * home="org.ejbca.core.ejb.log.ILogSessionLocalHome" * business="org.ejbca.core.ejb.log.ILogSessionLocal" * link="LogSession" * * @jonas.bean * ejb-name="HardTokenSession" * */public class LocalEjbcaHardTokenBatchJobSessionBean extends BaseSessionBean { public static final int MAX_RETURNED_QUEUE_SIZE = 300; /** Internal localization of logs and errors */ private static final InternalResources intres = InternalResources.getInstance(); /** Columns in the database used in select */ private static final String USERDATA_COL = "username, subjectDN, subjectAltName, subjectEmail, status, type, clearpassword, timeCreated, timeModified, endEntityprofileId, certificateProfileId, tokenType, hardTokenIssuerId, cAId"; /** The local interface of hard token session bean */ private IHardTokenSessionLocal hardtokensession = null; /** The remote interface of log session bean */ private ILogSessionLocal logsession = null; /** * Default create for SessionBean without any creation Arguments. * @throws CreateException if bean instance can't be created */ public void ejbCreate() throws CreateException { } /** Gets connection to hard token session bean * @return IHardTokenSessionLocal */ private IHardTokenSessionLocal getHardTokenSession() { if(hardtokensession == null){ try{ IHardTokenSessionLocalHome hardtokensessionhome = (IHardTokenSessionLocalHome) getLocator().getLocalHome(IHardTokenSessionLocalHome.COMP_NAME); hardtokensession = hardtokensessionhome.create(); }catch(Exception e){ throw new EJBException(e); } } return hardtokensession; } //getHardTokenSession /** Gets connection to log session bean * @return Connection */ private ILogSessionLocal getLogSession() { if(logsession == null){ try{ ILogSessionLocalHome logsessionhome = (ILogSessionLocalHome) getLocator().getLocalHome(ILogSessionLocalHome.COMP_NAME); logsession = logsessionhome.create(); }catch(Exception e){ throw new EJBException(e); } } return logsession; } //getLogSession /** * Returns the next user scheduled for batch generation for the given issuer. * * @param admin the administrator performing the actions * * @return The next user to generate or NULL if there are no users i queue. * @throws EJBException if a communication or other error occurs. * @ejb.interface-method view-type="both" */ public UserDataVO getNextHardTokenToGenerate(Admin admin, String alias) throws UnavailableTokenException{ debug(">getNextHardTokenToGenerate()"); debug("alias " + alias); UserDataVO returnval=null; int issuerid = getHardTokenSession().getHardTokenIssuerId(admin, alias); debug("issuerid " + issuerid); if(issuerid != LocalHardTokenSessionBean.NO_ISSUER){ Connection con = null; ResultSet rs = null; PreparedStatement ps = null; try{ // Construct SQL query. debug("HERE"); con = JDBCUtil.getDBConnection(JNDINames.DATASOURCE); ps = con.prepareStatement("select " + USERDATA_COL + " from UserData where hardTokenIssuerId=? and tokenType>? and (status=? or status=?)" ); ps.setInt(1,issuerid); ps.setInt(2,SecConst.TOKEN_SOFT); ps.setInt(3,UserDataConstants.STATUS_NEW); ps.setInt(4,UserDataConstants.STATUS_KEYRECOVERY); // Execute query. rs = ps.executeQuery(); // Assemble result. if(rs.next()){ // TODO add support for Extended Information returnval = new UserDataVO(rs.getString(1), rs.getString(2), rs.getInt(14), rs.getString(3), rs.getString(4), rs.getInt(5), rs.getInt(6) , rs.getInt(10), rs.getInt(11) , new java.util.Date(rs.getLong(8)), new java.util.Date(rs.getLong(9)) , rs.getInt(12), rs.getInt(13),null); returnval.setPassword(rs.getString(7)); debug("found user" + returnval.getUsername()); } if(returnval !=null){ getHardTokenSession().getIsHardTokenProfileAvailableToIssuer(admin, issuerid, returnval);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -