Package org.apache.geronimo.deployment.cli

Source Code of org.apache.geronimo.deployment.cli.StopServer

/**
*
* Copyright 2005 The Apache Software Foundation
*
*  Licensed under the Apache License, Version 2.0 (the "License");
*  you may not use this file except in compliance with the License.
*  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/
package org.apache.geronimo.deployment.cli;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.util.HashMap;
import java.util.Map;

import javax.management.MBeanServerConnection;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

import org.apache.geronimo.deployment.cli.ServerConnection.PasswordPrompt;
import org.apache.geronimo.kernel.Kernel;
import org.apache.geronimo.kernel.jmx.KernelDelegate;

/**
* @version $Rev: 355877 $ $Date: 2005-12-10 18:48:27 -0800 (Sat, 10 Dec 2005) $
*/
public class StopServer {

  public static final String RMI_NAMING_CONFG_ID = "org/apache/geronimo/RMINaming";

  public static final String DEFAULT_PORT = "1099";

  String port;

  String user;

  String password;

  private String[] args;

  public static void main(String[] args) {
    StopServer cmd = new StopServer();
    cmd.execute(args);
  }

  public void execute(String args[]) {

    this.args = args;

    int i = 0;
    while (i < args.length && args[i].startsWith("--")) {
      if (setParam(i++)) {
        i++;
      }
    }

    if (i < args.length) {
      // There was an argument error somewhere.
      printUsage();
    }

    try {
      if (port != null) {
        Integer.parseInt(port);
      }
    } catch (NumberFormatException e) {
      System.out.println("Invalid port number specified.");
      System.exit(1);
    }

    PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out),
        true);
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    try {
      if (user == null) {
        out.print("Username: ");
        out.flush();
        user = in.readLine();
      }
      if (password == null) {
        password = new PasswordPrompt("Password: ", out)
            .getPassword(in);
      }
    } catch (IOException e) {
      System.out.println("Unable to prompt for login.");
      System.exit(1);
    }

    try {
      if (port == null) {
        port = DEFAULT_PORT;
      }
      System.out.print("Locating server on port " + port + "... ");
      Kernel kernel = null;
      try {
        kernel = getRunningKernel();
      } catch (IOException e) {
        System.out
            .println("\nCould not communicate with the server.  The server may not be running or the port number may be incorrect.");
      }
      if (kernel != null) {
        System.out.println("Server found.");
        System.out.println("Server shutdown begun");
        kernel.shutdown();
        System.out.println("Server shutdown completed");
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  private boolean argumentHasValue(int i) {
    return i + 1 < args.length && !args[i + 1].startsWith("--");
  }
            
  private boolean setParam(int i) {
    if (argumentHasValue(i)) {
      if (args[i].equals("--user")) {
        user = args[++i];
      } else if (args[i].equals("--password")) {
        password = args[++i];
      } else if (args[i].equals("--port")) {
        port = args[++i];
      } else {
        printUsage();
      }
      return true;
    } else {
      printUsage();
    }
    return false;
  }

  public Kernel getRunningKernel() throws IOException {
    Map map = new HashMap();
    map.put("jmx.remote.credentials", new String[] { user, password });
    Kernel kernel = null;
    try {
      JMXServiceURL address = new JMXServiceURL(
          "service:jmx:rmi:///jndi/rmi://localhost" + ":" + port
              + "/JMXConnector");
      JMXConnector jmxConnector = JMXConnectorFactory.connect(address,
          map);
      MBeanServerConnection mbServerConnection = jmxConnector
          .getMBeanServerConnection();
      kernel = new KernelDelegate(mbServerConnection);

    } catch (MalformedURLException e) {
      e.printStackTrace();
    }
    return kernel;
  }

  public void printUsage() {
    System.out.println();
    System.out.println("Command-line shutdown syntax:");
    System.out.println("    shutdown [options]");
    System.out.println();
    System.out.println("The available options are:");
    System.out.println("    --user");
    System.out.println("    --password");
    System.out.println("    --port");
    System.exit(1);
  }

}
TOP

Related Classes of org.apache.geronimo.deployment.cli.StopServer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.