The AlertConfigurationService enables the Enterpriser Manager and other management clients to manage and control the delivery reliability of alerts from applications or JBI based components to their clients. Enterprise Manager always receives alerts when it is started, while all other clients are required to register in order to receive alerts. The configuration to manage includes the enabling and disabling of the persistence of alerts in the database as well as the policy to manage the deletion of alerts.
Users of earlier releases of Java CAPS must enable persistence and journaling to obtain the functionality to which they are accustomed.
Persisted Alerts Removal Policy
The composite removal policy is defined by controlling three items:
Alerts Count
The maximum number of alerts that can be persisted. When this policy is enforced, the oldest-generated alerts are removed.
Alerts Age
The maximum amount of time, that is, “age,” that an alert can be persisted.
Alerts Level
Every generated alert has one priority level, from low to high, associated with it:
INFO
WARNING
MINOR
MAJOR
CRITICAL
FATAL
All the alerts that have a lower priority up to the defined level are removed.
The implementation is based upon a “first come first served” policy, as described in the Alert Configuration Service API. The policy is a combination of all the defined policy items, an “and” condition, and is applied even if the result of the executed policy item nullifies the execution of the next policy item.
By default, persistence is set to “not enabled.” If you change the persistence default to “enabled” but journaling is not “on,” you do not need to set the policy. However, if journaling is set to “on,” you can set the policy for Alerts Count, Alerts Age, and Alerts Level.
Alert Configuration Service API
* Enable alerts persistence in the alerts database. * enabling it allow for reliable alerts delivery in * case of delivery channel failure or Application * server restart. * * @param enableJournaling * true - will prevent the system from * removing alerts after they * are delivered. The alert stay * in the database until the * user removes them. * false - The system will remove the alert * upon acknowledgment from * the reliable client in case one was * setup or upon send the alert to * all the non reliable client/s. * @throws ManagementRemoteException if JMX related exception is * thrown or the list of target name is null or empty. */ public void enableAlertsPersistence(Boolean enableJournaling) throws * ManagementRemoteException; /** * Disable alerts persistence in the alerts database. * * @throws ManagementRemoteException if JMX related exception is * thrown or the list of target name is null or empty. */ public void disableAlertsPersistence() throws ManagementRemoteException; /** * @return the last setting of alert persistence enabling operation. * true if enable otherwise false. * @throws ManagementRemoteException if JMX related exception. */ public Boolean isAlertsPersistenceEnabled()throws * ManagementRemoteException; /** * @return the last setting of alert journal enabling operation. * true if enable otherwise false. * @throws ManagementRemoteException if JMX related exception. */ public Boolean isAlertsJournalEnabled()throws ManagementRemoteException; /** * set the JNDI name of the data source database to be used * for persistence. if not provided at least once the persistence * will be disabled even if enableAlertsPersistence was set to true. * * @param jndiName - of the data source to be used in conjunction with * enableAlertsPersistence set to true * @throws ManagementRemoteException if JMX related exception is * thrown orjndiName parameter is null or empty. */ public void setPersistenceDataSourceJndiName(String jndiName) throws * ManagementRemoteException; /** * @return the last set JNDI name for the alert persistence data source. * @throws ManagementRemoteException */ public String getPersistenceDataSourceJndiName() throws ManagementRemoteException; /** * set the database type to be used for persistence. * Derby is the assumed default database. If different database is * used this method should be called prior to enabling the persistence. * * @param dbtype - one of the predefined typed defined in {@link * com.sun.caps.management.api.alerts.AlertPersistenceDBType} * @throws ManagementRemoteException if JMX related exception is thrown. */ public void setPersistenceDataBaseType(AlertPersistenceDBType dbtype) throws * ManagementRemoteException; /** * @return The return value represent the last set DB type * {@link com.sun.caps.management.api.alerts.AlertPersistenceDBType} * for each. * @throws ManagementRemoteException if JMX related exception is thrown. */ public AlertPersistenceDBType getPersistenceDataBaseType() throws ManagementRemoteException; /** * Set the maximum time a persisted alert will be stored in the alert database * before it will be deleted as part of the removal policy * @param timeToLive - maximum time in millisecond. * * @throws ManagementRemoteException if JMX related exception is thrown. */ public void setPersistedAlertsMaxAge(Long timeToLive) throws ManagementRemoteException; /** * return the last setting for the allowed persisted alert age. * A value of 0 current time which could cause all persisted alerts to be deleted. * A negative value this policy element is ignored. * @return the returned value representing as time in milliseconds set for each. * @throws ManagementRemoteException if JMX related exception is thrown. */ public Long getPersistedAlertsMaxAge() throws ManagementRemoteException; /** * set the maximum number of alerts allowed to be persisted before it will be * deleted as part of the removal policy * @param size - Maximum number of alerts. * @throws ManagementRemoteException if JMX related exception is thrown. */ public void setPersistedAlertsMaxCount(Long size) throws ManagementRemoteException; /** * return the last setting for the maximum of alerts allowed to be persisted. * A value of 0 mean no alerts persisted. It behave as if the user * set enableAlertsPersistence to false * * A negative value this policy element is ignored. * @return the returned value represent the maximum number of alerts allowed to be * persisted on each target. * @throws ManagementRemoteException if JMX related exception is thrown. */ public Long getPersistedAlertsMaxCount() throws ManagementRemoteException; /** * The priority based alert level that will be part of the removal policy. * the priorities are as follows (from low to high): * INFO,WARNING,MINOR,MAJOR,CRITICAL,FATAL. * all alerts from the provided level and below will be candidates for removal. * * @param level - an AlertLevelType representing the level. * @throws ManagementRemoteException if JMX related exception is thrown. */ public void setPersistedAlertsLevel(AlertLevelType level) throws ManagementRemoteException; /** * @return the returned value represent the last setting for the level of alerts * that allowed to be removed from persistence for each target. * @throws ManagementRemoteException if JMX related exception is thrown. */ public AlertLevelType getPersistedAlertsLevel() throws ManagementRemoteException; /** * set the effective policy for the removal of persisted alerts. * @param policyList - an array of AlertRemovalPolicyType where the priority * of the given policy is defined by its position in the list. * i.e the lower the index that policy will be applied first. * possible values are: * ALERTS_AGE,ALERTS_COUNT,ALERTS_LEVEL. * * null value or empty array indicate no policy will be * enforced. * @throws ManagementRemoteException if JMX related exception is thrown. */ public void setPersistedAlertsRemovelPolicy(AlertRemovalPolicyType[] policyList) * throws ManagementRemoteException; /** * @return the return value representing an array the last setting the policy used * when persisted alerts are to be removed. An empty array mean no policy * is enforced. * @throws ManagementRemoteException if JMX related exception is thrown. */ public String[] getPersistedAlertsRemovalPolicy() throws ManagementRemoteException; /** * enable or disable the ability to use removal policy. * @param enableExecuation - true the current setting is enforced. False the * current policy is ignored. * @throws ManagementRemoteException if JMX related exception is thrown. */ public void enablePersistedAlertsPolicyExecution(Boolean enableExecution) throws * ManagementRemoteException; /** * @return the returned value represent the last setting that enable/disable the * removal policy * @throws ManagementRemoteException */ public Boolean isPersistedAlertsPolicyExecutionEnabled()throws * ManagementRemoteException; /** * set how often the persisted alerts removal policy will be executed. * @param excutionInterval - The interval is defined in milliseconds. * @throws ManagementRemoteException if JMX related exception is thrown. */ public void setPersistedAlertsRemovelPolicyExecInterval(Long excutionInterval) * throws ManagementRemoteException; /** * @return the returned value representing The last interval setting of * the persisted alerts removal policy will be executed. * @throws ManagementRemoteException if JMX related exception is thrown. */ public Long getPersistedAlertsRemovelPolicyExecInterval() throws * ManagementRemoteException; /** * Set the persisted alerts table name. * Note: if the same database is used across the whole enterprise. it * must be unique for each domain used. * @param tableName - the table name to be used for the stored alerts * @throws ManagementRemoteException */ public void setAlertTableName(String tableName) throws ManagementRemoteException; /** * @return The current assign persisted alerts table name. * @throws ManagementRemoteException */ public String getAlertTableName() throws ManagementRemoteException; /** * * @return return the total number of alerts currently persisted. This value * is volatile and may V between two sequential calls to this method. * @throws ManagementRemoteException */ public Integer getPersistedAlertsCount() throws ManagementRemoteException; /** * the API allows the caller to set all the parameters defined in the other API in * this interface. All the setting are applied prior to enabling the persistence. * @param enableJournaling * true - will prevent the system from removing alerts after * they are delivered. The alert stay in the database * until the user remove them. * false - The system will remove the alert upon acknowledgment * from the reliable client in case one was setup or * upon send the alert to all the non reliable client/s. * @param jndiName - JNDI name of the data source database to be used for * persistence. * @param dbtype - one of the predefined typed defined in * {@link com.sun.caps.management.api.alerts. * AlertPersistenceDBType} * @param timeToLive - maximum time in millisecond. * @param maxCount - Maximum number of alerts. * @param level - an AlertLevelType representing the level. * @param policyList - an array of AlertRemovalPolicyType where the priority * of the given policy is defined by its position in the list. * i.e the lower the index that policy will be applied first. * possible values are: * ALERTS_AGE,ALERTS_COUNT,ALERTS_LEVEL. * @param enablePolicyExecution - true the current setting is enforced. False the * current policy is ignored. * @param interval The interval the policy will be executed (is defined in * milliseconds). * @param inMemoryCacheSize - The interval is defined in milliseconds. * @throws ManagementRemoteException if JMX related exception is thrown or * the list of target names is null or empty. */ public void enableAlertsPersistence(Boolean enableJournaling,String jndiName, AlertPersistenceDBType dbtype,Long timeToLive, Long maxCount,AlertLevelType level, AlertRemovalPolicyType[] policyList, Boolean enablePolicyExecution,Long interval, Integer inMemoryCacheSize) throws * ManagementRemoteException;