发行版 6 增加了警报管理服务功能,以便为用户提供更多的控制。现在,该服务拆分为三个服务:
警报监控服务,可用于在 Enterprise Manager 中监视和控制事件数据库中存储的警报
Sun Java System Application Server (SJSAS) 上的警报配置服务,对事件管理组件中生成的警报的持久性提供更多控制。
SJSAS 上的警报通知服务,对从事件管理组件传送到脚本客户机的警报类型提供更多控制
启用持久性和禁用日志功能表示,在传送到所有当前客户机后,完成事件删除操作。
启用持久性和启用日志功能表示不删除事件。切记,如果启用了可删除策略,则会删除这些事件。
警报管理 API 支持 5 个数据库:
Derby,随 Sun Java System Application Server 安装提供
Oracle
Sybase
DB2
PointBase
在使用 Java CAPS API 之前,您必须先启动数据库。
通过使用 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;
警报通知服务用于向客户机(如 Groovy)通知事件。不过,要使客户机能够接收通知,它必须使用警报通知服务 API 进行订阅。在可靠客户机和非可靠客户机方面,发行版 6 与以前的发行版之间存在明显的差异。对于发行版 5.1.x,客户机是可靠的,这表示在确认事件传送之前无法删除事件。对于发行版 6,客户机可能是不可靠的,这表示无法保证客户机能够接收到每个事件。在发行版 6 中,设置为“可靠”的最后一个客户机将其前面的所有客户机设置为“不可靠”客户机。
警报通知服务 API
/**
* request to the event management system to get an events that satisfy the
* filter provided. The method will validate the call-back object for the
* call-back method name and parameter (see below for more information).
* This method allow the caller to register multiple time with diffrent
* filtering,target and call-back parameters.
*
* @param filter - the filter that will be applied to the events prior to
* forwarding them to this client. the valid keys for the map
* are defined in {@link com.sun.caps.management.api.alerts.
* AlertNotificationFilterElementType}.
* For the ALERTSEVERITY type the valid value are define in
* {@link com.sun.caps.management.api.alerts.AlertLevelType#}.
*
* @param targetNames - the server instances that is subscription will initially be
* filtered on. if targetNames is/are defined it/they have
* precedence over the servername element in the filter
* mentioned above.
*
* @param CallbackObject an instance of the client object that contain the
* call back method to be called when event received
* from the server.
* @param methodName the method name to be invoke when event received from the
* server.
* IMPORTANT: THE METHOD MUST HAVE ONE PARAMETER OF TYPE
* {@link com.sun.caps.management.api.alerts.Alert"} ALERT.
*
* @param requireReliableDelivery - true mean this client request that all events
* should be delivered to him reliably otherwise the client
* may miss event.
* IMPORTANT: THE SYSTEM ALLOW ONLY ONE RELIABLE CLIENT. THE LAST CLIENT
* TO SET IT TO TRUE TAKES OVER THE RELIABLE DELIVERY. IT
* WILL AFFECT ALL THE SUBSCRIPTIONS DONE BY THE CLIENT IN
* THE CURRENT APPLICATION SESSION.
*
* @param exceptionCallBack an instance of the client object that contain the call
* back method to be called when an connectivity exception
* is generated by this service.
*
* @param exceptionMethodName the method name to be invoke when an exception is
* generated by this service.
* IMPORTANT: THE METHOD MUST HAVE ONE PARAMETER OF TYPE
* {@link java.lang.Exception} EXCEPTION.
*
* NOTE: the exception call be should be the same for all subscriptions
* calls otherwise the last the exception call back
* defined by the last subscription will be used.
*
* @return Unique identification string that need to be used in the un-subscribe
* operation.
*
* @throws ManagementRemoteException
* 1. if fail to communicate with the event management system
* 2. unable to invoke call back method because of invalid parameter.
*/
public String subscribe(Map filter,String[] targetName,Object CallbackObject,String
* methodName, Boolean requireReliableDelivery,Object exceptionCallBack,
String exceptionMethodName) throws ManagementRemoteException;
/**
* request the event management system to stop forwarding events to this client
* based on the subscription the caller made using the subscribe method.
* once all the caller unsubscribe all the IDs any events that are waiting
* to be delivered to this client will be discarded.
*
* @param - subscriptionIDs A list of IDs return by the subscribe call/s that the
* caller wish to unsubscribe from.
*
* @throws ManagementRemoteException if fail to communicate with the Domain server.
*/
public void unsubscribe(String[] subscriptionIDs) throws ManagementRemoteException;
/**
* utility method that returns the parameters the client used to subscribe for
* alerts for the given subscription ID.
*
* @param - subscriptionIDs list return by the subscribe call/s.
*
* return a map keyed IDs on the provided as a parameter and values as
* SubcriptionInformationinstances.
* @see com.sun.caps.management.api.alerts.SubcriptionInformation
* @throws ManagementRemoteException if fail to communicate with the Domain server.
*/
public Map getSubscriptionInformation(String[] subscriptionIDs);