⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 databasecachedaemonstoppedstate.java

📁 监控整个SP系统的SMS信息通道的发送情况并且生成日志。 支持权限判断。
💻 JAVA
字号:
package com.infobank.superchannel.daemon.databasecache;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;import java.rmi.registry.Registry;import java.rmi.server.UnicastRemoteObject;import java.util.List;import java.util.Properties;import java.util.Queue;import java.util.concurrent.atomic.AtomicReference;import com.infobank.superchannel.daemon.GenericState;import com.infobank.superchannel.daemon.GenericDaemon;import com.infobank.superchannel.admin.controller.SuperChannelController;import com.infobank.superchannel.database.DAO;import com.infobank.superchannel.pojo.BlackList;import com.infobank.superchannel.pojo.TextMessage;import com.infobank.superchannel.pojo.TextMessageResultSetting;import com.infobank.superchannel.pojo.TextMessageStatusSetting;import com.infobank.superchannel.util.DaemonConfiguration;import com.infobank.superchannel.util.DatabaseConnectionPool;import org.apache.commons.configuration.Configuration;/** * @author Xiaoguang Sun * @version 类说明: 数据库缓冲服务器停止状态 */public class DatabaseCacheDaemonStoppedState extends DatabaseCacheDaemonState {  // 当前状态说明  private final static String state="Stopped";  /**   * 私有构造函数,保证此类只能拥有单个实例存在   */  private DatabaseCacheDaemonStoppedState(){  }  /**   * 取得此状态机的单件实例   * @return 此状态机的单件实例   */  public static DatabaseCacheDaemonState getInstance(){    return instance.get();  }    /**   * 此状态机的单件实例   */  private static AtomicReference<DatabaseCacheDaemonStoppedState> instance=    new AtomicReference<DatabaseCacheDaemonStoppedState>(new DatabaseCacheDaemonStoppedState());  /**   * 暂停守护进程   */  public boolean pause() {    return false;  }  /**   * 重新启动守护进程   */  public boolean restart() {    return false;  }  /**   * 继续运行暂停中的守护进程   */  public boolean resume() {    return false;  }  /**   * 启动守护进程   */  public boolean start() {    // 取得当前配置    DaemonConfiguration config=DaemonConfiguration.getInstance();    // 取得服务器状态    DatabaseCacheDaemon daemon=getDaemon();    // 将状态更新为停止到运行的转换态    daemon.setState(DatabaseCacheDaemonStoppedToRunningTransitionState.getInstance());    // 取得需要扫描的表格数目    int numberOfTables=config.getMaxIndex("/daemon[@type='DatabaseCache']/task/reader/tables/table")+1;    if(numberOfTables<=0)      return false;    // 取得SuperChannel服务器的RMI名称,默认为类名称     String endPoint=config.getString("/daemon[@type='SuperChannel']/endpoint/@name",SuperChannelController.class.getSimpleName());    // 取得数据访问对象以及数据库连接池     DAO dao=DAO.getInstance();    DatabaseConnectionPool dbcp=DatabaseConnectionPool.getInstance();      // 新增黑名单刷新任务    daemon.stateAddTask(LoadBlackListTask.getInstance());    // 新增新短信读取任务    for(int idx=1;idx<=numberOfTables;++idx){      StringBuilder sb=new StringBuilder();      sb.append("/daemon[@type='DatabaseCache']/task/reader/tables/table[");      sb.append(idx);      sb.append("]/");      String basePath=sb.toString();      // 取得表格名称      sb=new StringBuilder();      sb.append(basePath);      sb.append("name");      String tableName=config.getString(sb.toString());      // 取得数据源名称      sb=new StringBuilder();      sb.append(basePath);      sb.append("@datasource");      String dataSource=config.getString(sb.toString());      if(dataSource==null)        dataSource="default";      // 回调号码匹配      sb=new StringBuilder();      sb.append(basePath);      sb.append("@callback");      String callback=config.getString(sb.toString());      if(callback==null)        callback="default";      sb=new StringBuilder();      sb.append("/daemon[@type='DatabaseCache']/message/callback[@name='");      sb.append(callback);      sb.append("']/pattern");      String callbackPattern=config.getString(sb.toString());      // 一次最多读取信息条数      sb=new StringBuilder();      sb.append(basePath);      sb.append("maxRecordNumber");      int maxRecordNumber=config.getInt(sb.toString());      // 每次扫描间隔时间      sb=new StringBuilder();      sb.append(basePath);      sb.append("interval");      int interval=config.getInt(sb.toString());          // 信息标签      sb=new StringBuilder();      sb.append(basePath);      sb.append("tag");      String tag=config.getString(sb.toString());      // status setting      sb=new StringBuilder();      sb.append(basePath);      sb.append("@status");      String status=config.getString(sb.toString());      if(status==null)        status="default";      sb=new StringBuilder();      sb.append("/daemon[@type='DatabaseCache']/message/status[@name='");      sb.append(status);      sb.append("']/");      String statusBasePath=sb.toString();           // status waiting      sb=new StringBuilder();      sb.append(statusBasePath);      sb.append("waiting");      int statusWaiting=config.getInt(sb.toString());      // status sending      sb=new StringBuilder();      sb.append(statusBasePath);      sb.append("sending");      int statusSending=config.getInt(sb.toString());      // status delivered      sb=new StringBuilder();      sb.append(statusBasePath);      sb.append("delivered");      int statusDelivered=config.getInt(sb.toString());      // status blocked      sb=new StringBuilder();      sb.append(statusBasePath);      sb.append("blocked");      int statusBlocked=config.getInt(sb.toString());            TextMessageStatusSetting statusSetting=new TextMessageStatusSetting(statusWaiting, statusSending, statusDelivered, statusBlocked);          sb=new StringBuilder();      sb.append(basePath);      sb.append("@result");      String result=config.getString(sb.toString());      if(result==null)        result="default";      sb=new StringBuilder();      sb.append("/daemon[@type='DatabaseCache']/message/result[@name='");      sb.append(result);      sb.append("']/");      String resultBasePath=sb.toString();      // successful result      sb=new StringBuilder();      sb.append(resultBasePath);      sb.append("successful");      int resultSuccessful=config.getInt(sb.toString());      // failed result      sb=new StringBuilder();      sb.append(resultBasePath);      sb.append("failed");      int resultFailed=config.getInt(sb.toString());      // overflow result      sb=new StringBuilder();      sb.append(resultBasePath);      sb.append("overflow");      int resultOverflow=config.getInt(sb.toString());      TextMessageResultSetting resultSetting=new TextMessageResultSetting(resultSuccessful, resultFailed, resultOverflow);       daemon.stateAddTask(new ReadMessageTask(daemon,tableName,dataSource,          callbackPattern,maxRecordNumber,interval,statusSetting,resultSetting,tag));    }    // 新增状态回写任务    daemon.stateAddTask(new UpdateStatusTask(daemon));    // 新增上行短信回写任务    daemon.stateAddTask(new SaveIncomingMessageTask(daemon));    getDaemon().setState(DatabaseCacheDaemonRunningState.getInstance());    return true;  }  /**   * 停止守护进程   */  public boolean stop() {    return false;  }  /**   * 新增待发信息到待发信息队列   * @param messages 待发消息   * @param tag message tag   * @return 操作是否成功   */  @Override  public boolean addNewMessage(Queue<TextMessage> messages, String tag) {    return false;  }  /**   * 取出信息状态待更新队列中所有状态待更新的信息   * @return 信息状态待更新队列中所有状态待更新的信息   */  @Override  public Queue<TextMessage> getPendingStatusUpdate() {    return null;  }  /**   * 将所给信息的新状态更新回数据库   * @param status 信息新状态更新请求   * @return 操作是否成功   */  @Override  public boolean updateMessageStatus(Queue<TextMessage> status) {    return false;  }  /**   * 取出待发短信息队列中所有的信息   * @param tag message tag   * @return 待发短信息队列中所有的信息   */  @Override  public Queue<TextMessage> getNewMessage(String tag) {    return null;  }  /**   * 当前数据库缓冲服务器是否可运行   * @return 当前数据库缓冲服务器是否可运行   */  @Override  public boolean isRunnable() {    // TODO Auto-generated method stub    return false;  }  /**   * 当前数据库缓冲服务器是否出于暂停态   * @return 当前数据库缓冲服务器是否出于暂停态   */  @Override  public boolean isPaused() {    return false;  }  /**   * 重新加载守护进程配置   */  public boolean reload() {    return false;  }    /**   * 获取守护进程当前状态   */  public String getState(){    return state;  }  @Override  public void setBlackList(BlackList blacklist) {  }  @Override  public boolean newIncomingMessage(Queue<TextMessage> messages) {    return false;  }  @Override  public Queue<TextMessage> getNewIncomingMessage() {    return null;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -