Package com.netscape.cmscore.dbs
Class DBSubsystem
- java.lang.Object
-
- com.netscape.cmscore.dbs.DBSubsystem
-
- All Implemented Interfaces:
ISubsystem
public class DBSubsystem extends java.lang.Object implements ISubsystem
A class represents the database subsystem that manages the backend data storage. This subsystem maintains multiple sessions that allows operations to be performed, and provide a registry where all the schema information is stored.- Version:
- $Revision$, $Date$
- Author:
- thomask
-
-
Field Summary
Fields Modifier and Type Field Description static intCERTSstatic java.lang.StringIDstatic org.slf4j.Loggerloggerstatic intNUM_REPOSstatic java.lang.StringPROP_ENABLE_SERIAL_MGMTstatic java.lang.StringPROP_ENABLE_SERIAL_NUMBER_RECOVERYstatic java.lang.StringPROP_INFINITE_REPLICA_NUMBERstatic java.lang.StringPROP_INFINITE_REQUEST_NUMBERstatic java.lang.StringPROP_INFINITE_SERIAL_NUMBERstatic java.lang.StringPROP_MAX_REPLICA_NUMBERstatic java.lang.StringPROP_MAX_REQUEST_NUMBERstatic java.lang.StringPROP_MAX_SERIAL_NUMBERstatic java.lang.StringPROP_MIN_REPLICA_NUMBERstatic java.lang.StringPROP_MIN_REQUEST_NUMBERstatic java.lang.StringPROP_MIN_SERIAL_NUMBERstatic java.lang.StringPROP_NEXT_MAX_REPLICA_NUMBERstatic java.lang.StringPROP_NEXT_MAX_REQUEST_NUMBERstatic java.lang.StringPROP_NEXT_MAX_SERIAL_NUMBERstatic java.lang.StringPROP_NEXT_MIN_REPLICA_NUMBERstatic java.lang.StringPROP_NEXT_MIN_REQUEST_NUMBERstatic java.lang.StringPROP_NEXT_MIN_SERIAL_NUMBERstatic java.lang.StringPROP_NEXT_SERIAL_NUMBERstatic java.lang.StringPROP_REPLICA_BASEDNstatic java.lang.StringPROP_REPLICA_INCREMENTstatic java.lang.StringPROP_REPLICA_LOW_WATER_MARKstatic java.lang.StringPROP_REPLICA_RANGE_DNstatic java.lang.StringPROP_REQUEST_BASEDNstatic java.lang.StringPROP_REQUEST_INCREMENTstatic java.lang.StringPROP_REQUEST_LOW_WATER_MARKstatic java.lang.StringPROP_REQUEST_RANGE_DNstatic java.lang.StringPROP_SERIAL_BASEDNstatic java.lang.StringPROP_SERIAL_INCREMENTstatic java.lang.StringPROP_SERIAL_LOW_WATER_MARKstatic java.lang.StringPROP_SERIAL_RANGE_DNstatic intREPLICA_IDstatic intREQUESTS
-
Constructor Summary
Constructors Constructor Description DBSubsystem()Constructs database subsystem.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description IDBSSessioncreateSession()Creates a database session.booleanenableSerialNumberRecovery()java.lang.StringgetBaseDN()Retrieves base DN of backend database.LDAPConfiggetConfigStore()Retrieves internal DB configuration store.DatabaseConfiggetDBConfigStore()Retrieves DB subsystem configuration store.booleangetEnableSerialMgmt()java.lang.StringgetEntryAttribute(java.lang.String dn, java.lang.String attrName, java.lang.String defaultValue, java.lang.String errorValue)java.lang.StringgetId()Retrieves subsystem identifier.java.lang.StringgetIncrementConfig(int repo)Gets range increment for next range in config filestatic DBSubsystemgetInstance()LdapAuthInfogetLdapAuthInfo()LdapConnInfogetLdapConnInfo()Retrieves LDAP connection info (host, port, secure)java.lang.StringgetLowWaterMarkConfig(int repo)Gets low water mark limit in config filejava.lang.StringgetMaxSerialConfig(int repo)Gets maximum serial number limit in config filejava.lang.StringgetMinSerialConfig(int repo)Gets minimum serial number limit in config filejava.lang.StringgetNextMaxSerialConfig(int repo)Gets maximum serial number limit in next range in config filejava.lang.StringgetNextMinSerialConfig(int repo)Gets minimum serial number limit in next range in config filejava.lang.StringgetNextRange(int repo)Gets start of next range from database.java.math.BigIntegergetNextSerialConfig()IDBRegistrygetRegistry()Retrieves the registry.booleanhasRangeConflict(int repo)Determines if a range conflict has been observed in database.voidinit(IConfigStore config)Initializes the internal registery.voidreturnConn(netscape.ldap.LDAPConnection conn)voidsetEnableSerialMgmt(boolean v)voidsetId(java.lang.String id)Sets subsystem identifier.static voidsetInstance(DBSubsystem dbSubsystem)This method is used for unit tests.voidsetMaxSerialConfig(int repo, java.lang.String serial)Sets maximum serial number limit in config filevoidsetMinSerialConfig(int repo, java.lang.String serial)Sets minimum serial number limit in config filevoidsetNextMaxSerialConfig(int repo, java.lang.String serial)Sets maximum serial number limit for next range in config filevoidsetNextMinSerialConfig(int repo, java.lang.String serial)Sets minimum serial number limit for next range in config filevoidsetNextSerialConfig(java.math.BigInteger serial)voidshutdown()Shutdowns this subsystem gracefully.voidstartup()Starts up this service.
-
-
-
Field Detail
-
logger
public static org.slf4j.Logger logger
-
ID
public static final java.lang.String ID
- See Also:
- Constant Field Values
-
CERTS
public static final int CERTS
- See Also:
- Constant Field Values
-
REQUESTS
public static final int REQUESTS
- See Also:
- Constant Field Values
-
REPLICA_ID
public static final int REPLICA_ID
- See Also:
- Constant Field Values
-
NUM_REPOS
public static final int NUM_REPOS
- See Also:
- Constant Field Values
-
PROP_ENABLE_SERIAL_NUMBER_RECOVERY
public static final java.lang.String PROP_ENABLE_SERIAL_NUMBER_RECOVERY
- See Also:
- Constant Field Values
-
PROP_NEXT_SERIAL_NUMBER
public static final java.lang.String PROP_NEXT_SERIAL_NUMBER
- See Also:
- Constant Field Values
-
PROP_MIN_SERIAL_NUMBER
public static final java.lang.String PROP_MIN_SERIAL_NUMBER
- See Also:
- Constant Field Values
-
PROP_MAX_SERIAL_NUMBER
public static final java.lang.String PROP_MAX_SERIAL_NUMBER
- See Also:
- Constant Field Values
-
PROP_NEXT_MIN_SERIAL_NUMBER
public static final java.lang.String PROP_NEXT_MIN_SERIAL_NUMBER
- See Also:
- Constant Field Values
-
PROP_NEXT_MAX_SERIAL_NUMBER
public static final java.lang.String PROP_NEXT_MAX_SERIAL_NUMBER
- See Also:
- Constant Field Values
-
PROP_SERIAL_LOW_WATER_MARK
public static final java.lang.String PROP_SERIAL_LOW_WATER_MARK
- See Also:
- Constant Field Values
-
PROP_SERIAL_INCREMENT
public static final java.lang.String PROP_SERIAL_INCREMENT
- See Also:
- Constant Field Values
-
PROP_SERIAL_BASEDN
public static final java.lang.String PROP_SERIAL_BASEDN
- See Also:
- Constant Field Values
-
PROP_SERIAL_RANGE_DN
public static final java.lang.String PROP_SERIAL_RANGE_DN
- See Also:
- Constant Field Values
-
PROP_MIN_REQUEST_NUMBER
public static final java.lang.String PROP_MIN_REQUEST_NUMBER
- See Also:
- Constant Field Values
-
PROP_MAX_REQUEST_NUMBER
public static final java.lang.String PROP_MAX_REQUEST_NUMBER
- See Also:
- Constant Field Values
-
PROP_NEXT_MIN_REQUEST_NUMBER
public static final java.lang.String PROP_NEXT_MIN_REQUEST_NUMBER
- See Also:
- Constant Field Values
-
PROP_NEXT_MAX_REQUEST_NUMBER
public static final java.lang.String PROP_NEXT_MAX_REQUEST_NUMBER
- See Also:
- Constant Field Values
-
PROP_REQUEST_LOW_WATER_MARK
public static final java.lang.String PROP_REQUEST_LOW_WATER_MARK
- See Also:
- Constant Field Values
-
PROP_REQUEST_INCREMENT
public static final java.lang.String PROP_REQUEST_INCREMENT
- See Also:
- Constant Field Values
-
PROP_REQUEST_BASEDN
public static final java.lang.String PROP_REQUEST_BASEDN
- See Also:
- Constant Field Values
-
PROP_REQUEST_RANGE_DN
public static final java.lang.String PROP_REQUEST_RANGE_DN
- See Also:
- Constant Field Values
-
PROP_MIN_REPLICA_NUMBER
public static final java.lang.String PROP_MIN_REPLICA_NUMBER
- See Also:
- Constant Field Values
-
PROP_MAX_REPLICA_NUMBER
public static final java.lang.String PROP_MAX_REPLICA_NUMBER
- See Also:
- Constant Field Values
-
PROP_NEXT_MIN_REPLICA_NUMBER
public static final java.lang.String PROP_NEXT_MIN_REPLICA_NUMBER
- See Also:
- Constant Field Values
-
PROP_NEXT_MAX_REPLICA_NUMBER
public static final java.lang.String PROP_NEXT_MAX_REPLICA_NUMBER
- See Also:
- Constant Field Values
-
PROP_REPLICA_LOW_WATER_MARK
public static final java.lang.String PROP_REPLICA_LOW_WATER_MARK
- See Also:
- Constant Field Values
-
PROP_REPLICA_INCREMENT
public static final java.lang.String PROP_REPLICA_INCREMENT
- See Also:
- Constant Field Values
-
PROP_REPLICA_BASEDN
public static final java.lang.String PROP_REPLICA_BASEDN
- See Also:
- Constant Field Values
-
PROP_REPLICA_RANGE_DN
public static final java.lang.String PROP_REPLICA_RANGE_DN
- See Also:
- Constant Field Values
-
PROP_INFINITE_SERIAL_NUMBER
public static final java.lang.String PROP_INFINITE_SERIAL_NUMBER
- See Also:
- Constant Field Values
-
PROP_INFINITE_REQUEST_NUMBER
public static final java.lang.String PROP_INFINITE_REQUEST_NUMBER
- See Also:
- Constant Field Values
-
PROP_INFINITE_REPLICA_NUMBER
public static final java.lang.String PROP_INFINITE_REPLICA_NUMBER
- See Also:
- Constant Field Values
-
PROP_ENABLE_SERIAL_MGMT
public static final java.lang.String PROP_ENABLE_SERIAL_MGMT
- See Also:
- Constant Field Values
-
-
Method Detail
-
getInstance
public static DBSubsystem getInstance()
-
setInstance
public static void setInstance(DBSubsystem dbSubsystem)
This method is used for unit tests. It allows the underlying instance to be stubbed out.- Parameters:
dbSubsystem- The stubbed out subsystem to override with.
-
getId
public java.lang.String getId()
Retrieves subsystem identifier.- Specified by:
getIdin interfaceISubsystem- Returns:
- subsystem identifier
-
setId
public void setId(java.lang.String id) throws EBaseExceptionSets subsystem identifier.- Specified by:
setIdin interfaceISubsystem- Parameters:
id- subsystem identifier- Throws:
EBaseException- failed to set id
-
enableSerialNumberRecovery
public boolean enableSerialNumberRecovery()
-
getEnableSerialMgmt
public boolean getEnableSerialMgmt()
-
setEnableSerialMgmt
public void setEnableSerialMgmt(boolean v) throws EBaseException- Throws:
EBaseException
-
getNextSerialConfig
public java.math.BigInteger getNextSerialConfig()
-
setNextSerialConfig
public void setNextSerialConfig(java.math.BigInteger serial) throws EBaseException- Throws:
EBaseException
-
getMinSerialConfig
public java.lang.String getMinSerialConfig(int repo)
Gets minimum serial number limit in config file- Parameters:
repo- repo identifier- Returns:
- min serial number
-
getMaxSerialConfig
public java.lang.String getMaxSerialConfig(int repo)
Gets maximum serial number limit in config file- Parameters:
repo- repo identifier- Returns:
- max serial number
-
getNextMinSerialConfig
public java.lang.String getNextMinSerialConfig(int repo)
Gets minimum serial number limit in next range in config file- Parameters:
repo- repo identifier- Returns:
- min serial number in next range
-
getNextMaxSerialConfig
public java.lang.String getNextMaxSerialConfig(int repo)
Gets maximum serial number limit in next range in config file- Parameters:
repo- repo identifier- Returns:
- max serial number in next range
-
getLowWaterMarkConfig
public java.lang.String getLowWaterMarkConfig(int repo)
Gets low water mark limit in config file- Parameters:
repo- repo identifier- Returns:
- low water mark
-
getIncrementConfig
public java.lang.String getIncrementConfig(int repo)
Gets range increment for next range in config file- Parameters:
repo- repo identifier- Returns:
- range increment
-
setMaxSerialConfig
public void setMaxSerialConfig(int repo, java.lang.String serial) throws EBaseExceptionSets maximum serial number limit in config file- Parameters:
repo- repo identifierserial- max serial number- Throws:
EBaseException- failed to set
-
setMinSerialConfig
public void setMinSerialConfig(int repo, java.lang.String serial) throws EBaseExceptionSets minimum serial number limit in config file- Parameters:
repo- repo identifierserial- min serial number- Throws:
EBaseException- failed to set
-
setNextMaxSerialConfig
public void setNextMaxSerialConfig(int repo, java.lang.String serial) throws EBaseExceptionSets maximum serial number limit for next range in config file- Parameters:
repo- repo identifierserial- max serial number for next range- Throws:
EBaseException- failed to set
-
setNextMinSerialConfig
public void setNextMinSerialConfig(int repo, java.lang.String serial) throws EBaseExceptionSets minimum serial number limit for next range in config file- Parameters:
repo- repo identifierserial- min serial number for next range- Throws:
EBaseException- failed to set
-
getNextRange
public java.lang.String getNextRange(int repo)
Gets start of next range from database. Increments the nextRange attribute and allocates this range to the current instance by creating a pkiRange object.- Parameters:
repo- repo identifier- Returns:
- start of next range
-
hasRangeConflict
public boolean hasRangeConflict(int repo)
Determines if a range conflict has been observed in database. If so, delete the conflict entry and remove the next range. When the next number is requested, if the number of certs is still below the low water mark, then a new range will be requested.- Parameters:
repo- repo identifier- Returns:
- true if range conflict, false otherwise
-
init
public void init(IConfigStore config) throws EBaseException
Initializes the internal registery. Connects to the data source, and create a pool of connection of which applications can use. Optionally, check the integrity of the database.- Specified by:
initin interfaceISubsystem- Parameters:
config- configuration store- Throws:
EBaseException- failed to initialize
-
getEntryAttribute
public java.lang.String getEntryAttribute(java.lang.String dn, java.lang.String attrName, java.lang.String defaultValue, java.lang.String errorValue)
-
startup
public void startup() throws EBaseExceptionStarts up this service.- Specified by:
startupin interfaceISubsystem- Throws:
EBaseException- failed to start up
-
getConfigStore
public LDAPConfig getConfigStore()
Retrieves internal DB configuration store.- Specified by:
getConfigStorein interfaceISubsystem- Returns:
- configuration store of this subsystem
-
getDBConfigStore
public DatabaseConfig getDBConfigStore()
Retrieves DB subsystem configuration store.
-
getBaseDN
public java.lang.String getBaseDN()
Retrieves base DN of backend database.
-
getLdapConnInfo
public LdapConnInfo getLdapConnInfo()
Retrieves LDAP connection info (host, port, secure)
-
getLdapAuthInfo
public LdapAuthInfo getLdapAuthInfo()
-
shutdown
public void shutdown()
Shutdowns this subsystem gracefully.- Specified by:
shutdownin interfaceISubsystem
-
getRegistry
public IDBRegistry getRegistry()
Retrieves the registry.
-
createSession
public IDBSSession createSession() throws EDBException
Creates a database session.- Throws:
EDBException
-
returnConn
public void returnConn(netscape.ldap.LDAPConnection conn)
-
-