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

📄 superchannelcontrollerclient.java

📁 监控整个SP系统的SMS信息通道的发送情况并且生成日志。 支持权限判断。
💻 JAVA
字号:
package com.infobank.superchannel.util;import java.rmi.registry.LocateRegistry;import java.rmi.RemoteException;import java.rmi.registry.Registry;import com.infobank.superchannel.admin.controller.SuperChannelController;import com.infobank.superchannel.pojo.ControllerUserToken;public class SuperChannelControllerClient {  private interface CommandHandler{    boolean handle(String[] args, SuperChannelController controller, ControllerUserToken token) throws RemoteException;  }  private class CommandHandlerEntry{    public String command;    public CommandHandler handler;    public CommandHandlerEntry(String command, CommandHandler handler){      this.command=command;      this.handler=handler;    }  }  private class StopCommandHandler implements CommandHandler{    public boolean handle(String[] args, SuperChannelController controller, ControllerUserToken token) throws RemoteException{      return controller.stop(token);    }  }  private class StartCommandHandler implements CommandHandler{    public boolean handle(String[] args, SuperChannelController controller, ControllerUserToken token) throws RemoteException{      controller.startDatabaseCache(token);      return controller.startAllMessageLauncher(token);    }  }  private class RestartCommandHandler implements CommandHandler{    public boolean handle(String[] args, SuperChannelController controller, ControllerUserToken token) throws RemoteException{      return controller.restart(token);    }  }  private class DebugCommandHandler implements CommandHandler{    public boolean handle(String[] args, SuperChannelController controller, ControllerUserToken token) throws RemoteException{      String type=null;      String tag=null;      for(int idx=0; idx<args.length; ++idx){        if(args[idx].equals("-type")){          type=args[++idx];        }        if(args[idx].equals("-tag")){          tag=args[++idx];        }      }      if(type==null)        type="DatabaseCacheDaemon";      if(type.equals("DatabaseCacheDaemon")){        System.err.println("To debug DatabaseCacheDaemon. Execute the following command in shell. And attach your debugger to the running DatabaseCacheDaemon process\n\n");        System.err.println(controller.getStartDatabaseCacheCommand(token));        return true;      }      if(type.equals("MessageLauncherDaemon")){        if(tag==null)          throw new RuntimeException("tag of MessageLauncherDaemon is missing");        System.err.println("To debug MessageLauncher. Execute the following command in shell. And attach your debugger to the running MessageLauncherDaemon process\n\n");        System.err.println(controller.getStartMessageLauncherCommand(token,tag));      }      return true;    }  }  private CommandHandlerEntry[] cmdHandlers={    new CommandHandlerEntry("stop", new StopCommandHandler()),    new CommandHandlerEntry("start", new StartCommandHandler()),    new CommandHandlerEntry("restart", new RestartCommandHandler()),    new CommandHandlerEntry("debug", new DebugCommandHandler()),  };  private boolean dispatch(String command, String[] args, SuperChannelController controller, ControllerUserToken token) throws RemoteException{    for(int idx=0;idx<cmdHandlers.length;++idx){      if(cmdHandlers[idx].command.equalsIgnoreCase(command))        return cmdHandlers[idx].handler.handle(args,controller,token);    }    throw new RuntimeException("Invalid command");  }  public static void main(String[] args) {    SuperChannelControllerClient client=new SuperChannelControllerClient();    if(!DaemonConfiguration.init()){      throw new RuntimeException("could not initialize configuration system");    }    if(args.length<3){      System.err.println("Usage: <username> <password> <command> ....");      return;    }    String endpoint=DaemonConfiguration.getInstance().getString("/daemon[@type='SuperChannel']/endpoint/@name");    if(endpoint==null){      endpoint=SuperChannelController.class.getSimpleName();    }     String command;    for(int idx=0; idx<args.length; ++idx){    }    String cmd=args[2];    String user=args[0];    String passwd=args[1];    try{      Registry registry=LocateRegistry.getRegistry();      SuperChannelController stub=(SuperChannelController) registry.lookup(endpoint);      ControllerUserToken token=stub.logon(user, passwd);      if(!client.dispatch(cmd,args,stub,token)){        throw new RuntimeException("Command execution failed");      }    }    catch(Exception e){      System.err.println("Client Exception: "+e.toString());      e.printStackTrace();    }  }}

⌨️ 快捷键说明

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