📄 superchannelcontrollerclient.java.svn-base
字号:
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 + -