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

📄 messagelaunchercontrollerimpl.java.svn-base

📁 监控整个SP系统的SMS信息通道的发送情况并且生成日志。 支持权限判断。
💻 SVN-BASE
字号:
package com.infobank.superchannel.admin.controller.implementation;import java.rmi.NoSuchObjectException;import java.rmi.NotBoundException;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;import java.rmi.registry.Registry;import java.rmi.server.UnicastRemoteObject;import java.util.Hashtable;import java.util.LinkedList;import java.util.List;import java.util.UUID;import java.util.concurrent.atomic.AtomicReference;import org.apache.commons.configuration.Configuration;import com.infobank.superchannel.admin.controller.DatabaseCacheController;import com.infobank.superchannel.admin.controller.MessageLauncherController;import com.infobank.superchannel.admin.controller.SuperChannelController;import com.infobank.superchannel.admin.monitor.ChannelStatusMonitor;import com.infobank.superchannel.admin.monitor.MessageLauncherStatusMonitor;import com.infobank.superchannel.admin.monitor.implementation.ChannelStatusMonitorImpl;import com.infobank.superchannel.admin.monitor.implementation.MessageLauncherStatusMonitorImpl;import com.infobank.superchannel.daemon.messagelauncher.MessageLauncherDaemon;import com.infobank.superchannel.daemon.messagelauncher.channel.ChannelManager;import com.infobank.superchannel.daemon.messagelauncher.channel.ChannelPlugin;import com.infobank.superchannel.pojo.ControllerUserToken;import com.infobank.superchannel.util.DaemonConfiguration;/** * @author Xiaoguang Sun * @version 类说明: 消息发送服务器的控制器实现 */public class MessageLauncherControllerImpl implements    com.infobank.superchannel.admin.controller.MessageLauncherController {  // 消息发送服务器对象  private AtomicReference<MessageLauncherDaemon> daemon=new AtomicReference<MessageLauncherDaemon>();    // 通道监控器列表  private ChannelStatusMonitor channelMonitor=null;  // 消息发送服务器状态监控器  private MessageLauncherStatusMonitor statusMonitor=null;    private SuperChannelController superChannelController=null;    /**   * 验证当前用户访问令牌的合法性   * @param token 用户访问令牌   * @return 是否合法    */  private boolean verify(ControllerUserToken token){    if(daemon.get()==null)      return false;    try{      return superChannelController.isValidToken(token);    }catch(RemoteException ex){      return false;    }  }  /**   * 构造函数   * @param daemon 信息发送服务器对象   */  public MessageLauncherControllerImpl(MessageLauncherDaemon daemon){    DaemonConfiguration config=DaemonConfiguration.getInstance();    String superChannelControllerEndpoint=config.getString("/daemon[@type='SuperChannel']/endpoint/@name");    this.daemon.set(daemon);    try{        Registry registry = LocateRegistry.getRegistry();      superChannelController=(SuperChannelController) registry.lookup(superChannelControllerEndpoint);      ChannelManager manager=ChannelManager.getInstance();            channelMonitor=new ChannelStatusMonitorImpl(daemon,manager.getChannelPlugin());            statusMonitor=new MessageLauncherStatusMonitorImpl(daemon);      MessageLauncherController ctrl=(MessageLauncherController)UnicastRemoteObject.exportObject(this, 0);      superChannelController.setMessageLauncherController(daemon.getInternalUserToken(),ctrl,daemon.getTag());    }    catch(NotBoundException ex){      throw new RuntimeException("fatal error: could not locate super channel controller from registry");    }    catch(RemoteException ex){      throw new RuntimeException("fatal error: could not bind controller to registry");    }  }  /**   * 获取所有通道的状态监控器对象列表   * @param token 用户访问令牌   * @return 所有通道的状态监控器对象列表   */  public ChannelStatusMonitor getChannelMonitor(ControllerUserToken token) {    if(!verify(token))      return null;    return channelMonitor;  }  /**   * 获取消息发送服务器的状态监控器对象   * @param token 用户访问令牌   * @return 状态监控器对象   */  public MessageLauncherStatusMonitor getStatusMonitor(ControllerUserToken token){    if(!verify(token))      return null;    return statusMonitor;  }  /**   * 暂停信息发送服务器   * @param token 用户访问令牌   * @return 操作是否成功   */  public boolean pause(ControllerUserToken token){    if(!verify(token))      return false;    return daemon.get().pause();  }  /**   * 重新读取信息发送服务器配置   * @param token 用户访问令牌   * @return 操作是否成功   */  public boolean reload(ControllerUserToken token){    if(!verify(token))      return false;    return daemon.get().reload();  }  /**   * 重新启动信息发送服务器   * @param token 用户访问令牌   * @return 操作是否成功   */  public boolean restart(ControllerUserToken token){    if(!verify(token))      return false;    return daemon.get().restart();  }  /**   * 继续暂停的信息发送服务器   * @param token 用户访问令牌   * @return 操作是否成功   */  public boolean resume(ControllerUserToken token){    if(!verify(token))      return false;    return daemon.get().resume();  }  /**   * 停止信息发送服务器   * @param token 用户访问令牌   * @return 操作是否成功   */  public boolean stop(ControllerUserToken token){    if(!verify(token))      return false;    boolean result=daemon.get().stop();    if(result){      try{          while(!UnicastRemoteObject.unexportObject(this, true)){            Thread.sleep(1000);          }      }catch(NoSuchObjectException ex){        return false;      }      catch(InterruptedException ex){        return false;      }      System.exit(0);    }    return result;  }  public String getMessageLauncherTag(ControllerUserToken token) {    if(verify(token)){      return daemon.get().getTag();    }    else{      return null;     }  }}

⌨️ 快捷键说明

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