发行版 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);