通过使用 AlertConfigurationService,Enterpriser Manager 和其他管理客户机可以管理和控制将警报从应用程序或 JBI 组件传送到其客户机的可靠性。Enterprise Manager 在启动后始终接收警报;而所有其他客户机需要进行注册才能接收警报。需要管理的配置包括:在数据库中启用和禁用警报持久性以及管理警报删除的策略。
对于早期版本的 Java CAPS 用户,他们必须启用持久性和日志功能才能获得以前使用的功能。
持久保存的警报删除策略
复合删除策略是通过控制以下三项内容来定义的:
警报计数
可以持久保存的最大警报数。在执行该策略时,将删除最早生成的警报。
警报存留期
可以持久保存警报的最长时间(即“存留期”)。
警报级别
每个生成的警报都有一个关联的优先级,从低到高依次为:
INFO
WARNING
MINOR
MAJOR
CRITICAL
FATAL
将删除优先级低于所定义级别的所有警报。
该实现基于“先到先得”策略,如警报配置服务 API 中所述。该策略是定义的所有策略项的组合(“与”条件),即使执行的某个策略项的结果取消执行下一个策略项,也会应用该策略。
默认情况下,将持久性设置为“未启用”。如果将持久性默认设置更改为“已启用”,但未“启用”日志功能,则不需要设置该策略。不过,如果将日志功能设置为“启用”,则可以为警报计数、警报存留期和警报级别设置该策略。
警报配置服务 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;