1 7 package winstone.tools; 8 9 import java.io.IOException ; 10 import java.io.ObjectOutputStream ; 11 import java.io.OutputStream ; 12 import java.net.Socket ; 13 import java.util.Map ; 14 15 import winstone.Launcher; 16 import winstone.Logger; 17 import winstone.WebAppConfiguration; 18 import winstone.WinstoneResourceBundle; 19 20 27 public class WinstoneControl { 28 private final static WinstoneResourceBundle TOOLS_RESOURCES = new WinstoneResourceBundle("winstone.tools.LocalStrings"); 29 30 final static String OPERATION_SHUTDOWN = "shutdown"; 31 final static String OPERATION_RELOAD = "reload:"; 32 static int TIMEOUT = 10000; 33 34 38 public static void main(String argv[]) throws Exception { 39 40 Map options = Launcher.loadArgsFromCommandLineAndConfig(argv, "operation"); 42 String operation = (String ) options.get("operation"); 43 if (options.containsKey("controlPort") && !options.containsKey("port")) { 44 options.put("port", options.get("controlPort")); 45 } 46 47 if (operation.equals("")) { 48 printUsage(); 49 return; 50 } 51 52 Logger.setCurrentDebugLevel(Integer.parseInt(WebAppConfiguration 53 .stringArg(options, "debug", "5"))); 54 55 String host = WebAppConfiguration.stringArg(options, "host", "localhost"); 56 String port = WebAppConfiguration.stringArg(options, "port", "8081"); 57 58 Logger.log(Logger.INFO, TOOLS_RESOURCES, "WinstoneControl.UsingHostPort", 59 new String [] { host, port }); 60 61 if (operation.equalsIgnoreCase(OPERATION_SHUTDOWN)) { 63 Socket socket = new Socket (host, Integer.parseInt(port)); 64 socket.setSoTimeout(TIMEOUT); 65 OutputStream out = socket.getOutputStream(); 66 out.write(Launcher.SHUTDOWN_TYPE); 67 out.close(); 68 Logger.log(Logger.INFO, TOOLS_RESOURCES, "WinstoneControl.ShutdownOK", 69 new String [] { host, port }); 70 } 71 72 else if (operation.toLowerCase().startsWith(OPERATION_RELOAD.toLowerCase())) { 74 String webappName = operation.substring(OPERATION_RELOAD.length()); 75 Socket socket = new Socket (host, Integer.parseInt(port)); 76 socket.setSoTimeout(TIMEOUT); 77 OutputStream out = socket.getOutputStream(); 78 out.write(Launcher.RELOAD_TYPE); 79 ObjectOutputStream objOut = new ObjectOutputStream (out); 80 objOut.writeUTF(host); 81 objOut.writeUTF(webappName); 82 objOut.close(); 83 out.close(); 84 Logger.log(Logger.INFO, TOOLS_RESOURCES, "WinstoneControl.ReloadOK", 85 new String [] { host, port }); 86 } 87 else { 88 printUsage(); 89 } 90 } 91 92 95 private static void printUsage() throws IOException { 96 System.out.println(TOOLS_RESOURCES.getString("WinstoneControl.Usage")); 97 } 98 } 99 | Popular Tags |