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

📄 databasecachedaemonrunningstate.java

📁 监控整个SP系统的SMS信息通道的发送情况并且生成日志。 支持权限判断。
💻 JAVA
字号:
package com.infobank.superchannel.daemon.databasecache;import java.rmi.NoSuchObjectException;import java.rmi.server.UnicastRemoteObject;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.pojo.BlackList;import com.infobank.superchannel.pojo.TextMessage;import com.infobank.superchannel.util.DaemonTaskExecutor;/** * @author Xiaoguang Sun * @version 类说明: 数据库缓冲服务器运行状态 */public class DatabaseCacheDaemonRunningState extends DatabaseCacheDaemonState {  // 当前状态说明  private final static String state="Running";  /**   * 私有构造函数,保证此类只能拥有单个实例存在   */  private DatabaseCacheDaemonRunningState(){  }  /**   * 暂停守护进程   */  public boolean pause() {    return false;    //getDaemon().setState(DatabaseCacheDaemonPausedState.getInstance());    //return true;  }  /**   * 重新启动守护进程   */  public boolean restart() {    return false;  }  /**   * 继续运行暂停中的守护进程   */  public boolean resume() {    return false;  }  /**   * 启动守护进程   */  public boolean start() {    return false;  }  /**   * 停止守护进程   */  public boolean stop() {    // 将当前状态切换成为运行到停止的中间状态    getDaemon().setState(DatabaseCacheDaemonRunningToStoppedTransitionState.getInstance());    try{      // 撤销RMI绑定      while(!UnicastRemoteObject.unexportObject(getDaemon(), true)){        Thread.sleep(1000);      }    }catch(NoSuchObjectException ex){      getDaemon().setState(getInstance());      return false;    }    catch(InterruptedException ex){      getDaemon().setState(getInstance());      return false;    }      // 更换状态为停止态     getDaemon().setState(DatabaseCacheDaemonStoppedState.getInstance());    // 停止任务执行器    DaemonTaskExecutor.fini(getDaemon());      // 强制将内存中的状态数据回写回数据库      getDaemon().stateForceUpdateStatusQueue();    return true;  }  /**   * 取得此状态机的单件实例   * @return 此状态机的单件实例   */  public static DatabaseCacheDaemonState getInstance(){    return instance.get();  }  /**   * 此状态机的单件实例   */  private static AtomicReference<DatabaseCacheDaemonRunningState> instance=new AtomicReference<DatabaseCacheDaemonRunningState>(new DatabaseCacheDaemonRunningState());  /**   * 新增待发信息到待发信息队列   * @param messages 待发消息   * @pararm tag message tag   * @return 操作是否成功   */  @Override  public boolean addNewMessage(Queue<TextMessage> messages,String tag) {    getDaemon().stateAddNewMessage(messages,tag);    return true;  }  /**   * 取出信息状态待更新队列中所有状态待更新的信息   * @return 信息状态待更新队列中所有状态待更新的信息   */  @Override  public Queue<TextMessage> getPendingStatusUpdate() {    return getDaemon().stateGetPendingStatusUpdate();  }  /**   * 将所给信息的新状态更新回数据库   * @param status 信息新状态更新请求   * @return 操作是否成功   */  @Override  public boolean updateMessageStatus(Queue<TextMessage> status) {    getDaemon().stateUpdateMessageStatus(status);    return true;  }  /**   * 取出待发短信息队列中所有的信息   * @param tag message tag   * @return 待发短信息队列中所有的信息   */  @Override  public Queue<TextMessage> getNewMessage(String tag) {    return getDaemon().stateGetNewMessage(tag);  }  /**   * 当前数据库缓冲服务器是否可运行   * @return 当前数据库缓冲服务器是否可运行   */  @Override  public boolean isRunnable() {    return true;  }  /**   * 当前数据库缓冲服务器是否出于暂停态   * @return 当前数据库缓冲服务器是否出于暂停态   */  @Override  public boolean isPaused() {    return false;  }  /**   * 重新加载守护进程配置   */  public boolean reload() {    return false;  }    /**   * 获取守护进程当前状态   */  public String getState(){    return state;  }  @Override  public void setBlackList(BlackList blacklist) {    getDaemon().stateSetBlackList(blacklist);  }  @Override  public boolean newIncomingMessage(Queue<TextMessage> messages) {    return getDaemon().stateNewIncomingMessage(messages);  }  @Override  public Queue<TextMessage> getNewIncomingMessage() {    return getDaemon().stateGetNewIncomingMessage();  }}

⌨️ 快捷键说明

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