blob: 6d48107c8cec2b8c182262c823dbf9baa13ec6fe [file] [log] [blame]
/*
* Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.corba.se.impl.activation;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.Vector;
import java.util.Properties;
import java.util.StringTokenizer;
import org.omg.CORBA.ORB;
import org.omg.CORBA.INITIALIZE;
import org.omg.CORBA.CompletionStatus;
import com.sun.corba.se.impl.orbutil.ORBConstants;
import com.sun.corba.se.impl.orbutil.CorbaResourceUtil;
import com.sun.corba.se.spi.activation.*;
import com.sun.corba.se.spi.activation.ServerHeldDown;
import com.sun.corba.se.spi.activation.RepositoryPackage.ServerDef;
import com.sun.corba.se.spi.activation.LocatorPackage.ServerLocation;
import com.sun.corba.se.spi.activation.LocatorPackage.ServerLocationPerORB;
/**
*
* @author Anita Jindal
* @since JDK1.3
*/
public class ServerTool
{
final static String helpCommand = "help";
final static String toolName = "servertool";
final static String commandArg = "-cmd";
static int getServerIdForAlias( ORB orb, String applicationName ) throws ServerNotRegistered
{
try {
Repository rep = RepositoryHelper.narrow(
orb.resolve_initial_references( ORBConstants.SERVER_REPOSITORY_NAME ) ) ;
int serverid = rep.getServerID(applicationName);
return rep.getServerID( applicationName ) ;
} catch (Exception ex) {
throw (new ServerNotRegistered());
}
}
void run(String[] args)
{
String[] cmd = null;
// if command specified in the args, get it
for (int i=0; i < args.length; i++) {
if (args[i].equals(commandArg)) {
// get the command
int cmdLen = args.length - i - 1;
cmd = new String[cmdLen];
for (int j=0; j < cmdLen; j++) cmd[j] = args[++i];
break;
}
}
try {
// create the POA ORB
Properties props = System.getProperties() ;
props.put("org.omg.CORBA.ORBClass",
"com.sun.corba.se.impl.orb.ORBImpl" );
orb = (ORB) ORB.init(args, props);
// if command specified in the args, process it
if (cmd != null) executeCommand(cmd);
else { // process commands interactively
// create a buffered reader to read commands from standard in
BufferedReader in = new
BufferedReader(new InputStreamReader(System.in));
// print tool banner
System.out.println(CorbaResourceUtil.getText("servertool.banner"));
// process commands until user quits
while (true) {
cmd = readCommand(in);
if (cmd != null) executeCommand(cmd);
else printAvailableCommands();
}
}
} catch (Exception ex) {
System.out.println(CorbaResourceUtil.getText("servertool.usage", "servertool"));
System.out.println();
ex.printStackTrace();
}
}
public static void main(String[] args)
{
ServerTool tool = new ServerTool();
tool.run(args);
}
String[] readCommand(BufferedReader in)
{
System.out.print(toolName + " > ");
try {
int i = 0;
String cmd[] = null;
String cmdLine = in.readLine();
if (cmdLine != null) {
StringTokenizer st = new StringTokenizer(cmdLine);
if (st.countTokens() != 0) {
cmd = new String[st.countTokens()];
while (st.hasMoreTokens()) cmd[i++] = st.nextToken();
}
}
return cmd;
} catch (Exception ex) {
System.out.println(CorbaResourceUtil.getText("servertool.usage", "servertool"));
System.out.println();
ex.printStackTrace();
}
return null;
}
void printAvailableCommands()
{
CommandHandler handler;
// print short help
System.out.println(CorbaResourceUtil.getText("servertool.shorthelp"));
for (int i=0; i < handlers.size(); i++) {
handler = (CommandHandler) handlers.elementAt(i);
System.out.print("\t" + handler.getCommandName());
for (int j=handler.getCommandName().length();
j < maxNameLen; j++) System.out.print(" ");
System.out.print(" - ");
handler.printCommandHelp(System.out,
CommandHandler.shortHelp);
}
System.out.println();
}
void executeCommand(String[] cmd)
{
boolean result;
CommandHandler handler;
// handle the help command
if (cmd[0].equals(helpCommand)) {
if (cmd.length == 1) printAvailableCommands();
else {
// print long help for a specific command
for (int i=0; i < handlers.size(); i++) {
handler = (CommandHandler) handlers.elementAt(i);
if (handler.getCommandName().equals(cmd[1])) {
handler.printCommandHelp(System.out,
CommandHandler.longHelp);
}
}
}
return;
}
// determine the subcommand and execute it
for (int i=0; i < handlers.size(); i++) {
handler = (CommandHandler) handlers.elementAt(i);
if (handler.getCommandName().equals(cmd[0])) {
String[] cmdArgs = new String[cmd.length - 1];
// construct args to the command
for (int j=0; j < cmdArgs.length; j++)
cmdArgs[j] = cmd[j+1];
// execute the command
try {
System.out.println();
result = handler.processCommand(cmdArgs, orb, System.out);
if (result == CommandHandler.parseError) {
handler.printCommandHelp(System.out,
CommandHandler.longHelp);
}
System.out.println();
} catch (Exception ex) {}
return;
}
}
// unknown command - print available commands
printAvailableCommands();
}
final private static boolean debug = false;
ORB orb = null;
static Vector handlers;
static int maxNameLen;
static {
handlers = new Vector();
handlers.addElement(new RegisterServer());
handlers.addElement(new UnRegisterServer());
handlers.addElement(new GetServerID());
handlers.addElement(new ListServers());
handlers.addElement(new ListAliases());
handlers.addElement(new ListActiveServers());
handlers.addElement(new LocateServer());
handlers.addElement(new LocateServerForORB());
handlers.addElement(new ListORBs());
handlers.addElement(new ShutdownServer());
handlers.addElement(new StartServer());
handlers.addElement(new Help());
handlers.addElement(new Quit());
// determine longest command name
maxNameLen = 0;
int cmdNameLen;
for (int i=0; i < handlers.size(); i++) {
CommandHandler handler = (CommandHandler) handlers.elementAt(i);
cmdNameLen = handler.getCommandName().length();
if (cmdNameLen > maxNameLen) maxNameLen = cmdNameLen;
}
}
}
class RegisterServer implements CommandHandler
{
public String getCommandName() {return "register";}
public void printCommandHelp(PrintStream out, boolean helpType)
{
if (helpType == longHelp) {
out.println(CorbaResourceUtil.getText("servertool.register"));
} else {
out.println(CorbaResourceUtil.getText("servertool.register1"));
}
}
public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
{
int i=0;
String applicationName = "";
String name = "";
String classpath = "";
String args = "";
String vmargs = "";
int serverId = 0;
// parse register server command
String arg;
while (i < cmdArgs.length) {
arg = cmdArgs[i++];
if (arg.equals("-server")) {
if (i < cmdArgs.length) name = cmdArgs[i++];
else return parseError;
} else if (arg.equals("-applicationName")) {
if (i < cmdArgs.length) applicationName = cmdArgs[i++];
else return parseError;
} else if (arg.equals("-classpath")) {
if (i < cmdArgs.length) classpath = cmdArgs[i++];
else return parseError;
} else if (arg.equals("-args")) {
while ((i < cmdArgs.length) && !cmdArgs[i].equals("-vmargs")){
args = args.equals("") ? cmdArgs[i] :
args + " " + cmdArgs[i];
i++;
}
if (args.equals("")) return parseError;
} else if (arg.equals("-vmargs")) {
while ((i < cmdArgs.length) && !cmdArgs[i].equals("-args")){
vmargs = vmargs.equals("") ? cmdArgs[i] :
vmargs + " " + cmdArgs[i];
i++;
}
if (vmargs.equals("")) return parseError;
} else return parseError;
}
// minimally the server class name has to be specified
if (name.equals("")) return parseError;
// register server and activate it
try {
// register the server with the repository
Repository repository = RepositoryHelper.narrow(
orb.resolve_initial_references( ORBConstants.SERVER_REPOSITORY_NAME ));
ServerDef server = new ServerDef(applicationName, name, classpath, args, vmargs);
serverId = repository.registerServer(server);
// activate the server
Activator activator = ActivatorHelper.narrow(
orb.resolve_initial_references( ORBConstants.SERVER_ACTIVATOR_NAME ));
activator.activate(serverId);
activator.install(serverId);
// print success message
out.println(CorbaResourceUtil.getText("servertool.register2", serverId));
} catch (ServerNotRegistered ex) {
} catch (ServerAlreadyActive ex) {
} catch (ServerHeldDown ex) {
out.println(CorbaResourceUtil.getText("servertool.register3", serverId));
} catch (ServerAlreadyRegistered ex) {
out.println(CorbaResourceUtil.getText("servertool.register4", serverId));
} catch (BadServerDefinition ex) {
out.println(CorbaResourceUtil.getText("servertool.baddef", ex.reason));
} catch (Exception ex) {
ex.printStackTrace();
}
return commandDone;
}
}
class UnRegisterServer implements CommandHandler
{
public String getCommandName() {return "unregister";}
public void printCommandHelp(PrintStream out, boolean helpType)
{
if (helpType == longHelp) {
out.println(CorbaResourceUtil.getText("servertool.unregister"));
} else {
out.println(CorbaResourceUtil.getText("servertool.unregister1"));
}
}
final static int illegalServerId = -1;
public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
{
int serverId = illegalServerId;
try {
if (cmdArgs.length == 2) {
if (cmdArgs[0].equals("-serverid"))
serverId = (Integer.valueOf(cmdArgs[1])).intValue();
else if (cmdArgs[0].equals("-applicationName"))
serverId = ServerTool.getServerIdForAlias( orb, cmdArgs[1] ) ;
}
// the server id has to be specified
if (serverId == illegalServerId)
return parseError;
// deactivate server, hold it down and and unregister it
// deactivate the server
try {
Activator activator = ActivatorHelper.narrow(
orb.resolve_initial_references( ORBConstants.SERVER_ACTIVATOR_NAME ));
activator.uninstall(serverId);
} catch (ServerHeldDown ex) {}
// unregister the server from the repository
Repository repository = RepositoryHelper.narrow(
orb.resolve_initial_references( ORBConstants.SERVER_REPOSITORY_NAME ));
repository.unregisterServer(serverId);
// print success message
out.println(CorbaResourceUtil.getText("servertool.unregister2"));
} catch (ServerNotRegistered ex) {
out.println(CorbaResourceUtil.getText("servertool.nosuchserver"));
} catch (Exception ex) {
ex.printStackTrace();
}
return commandDone;
}
}
class LocateServer implements CommandHandler
{
public String getCommandName() {return "locate";}
public void printCommandHelp(PrintStream out, boolean helpType)
{
if (helpType == longHelp) {
out.println(CorbaResourceUtil.getText("servertool.locate"));
} else {
out.println(CorbaResourceUtil.getText("servertool.locate1"));
}
}
final static int illegalServerId = -1;
public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
{
int serverId = illegalServerId;
String endPointType = IIOP_CLEAR_TEXT.value;
try {
// parse command
String arg;
int i = 0;
while (i < cmdArgs.length) {
arg = cmdArgs[i++];
if (arg.equals("-serverid")) {
if (i < cmdArgs.length)
serverId = (Integer.valueOf(cmdArgs[i++])).intValue();
else
return parseError;
} else if (arg.equals("-applicationName")) {
if (i < cmdArgs.length)
serverId = ServerTool.getServerIdForAlias( orb, cmdArgs[i++] ) ;
else
return parseError;
} else if (arg.equals("-endpointType")) {
if (i < cmdArgs.length)
endPointType = cmdArgs[i++];
}
}
// the server id has to be specified
if (serverId == illegalServerId)
return parseError;
// locate the server
// deactivate the server
Locator locator = LocatorHelper.narrow(
orb.resolve_initial_references( ORBConstants.SERVER_LOCATOR_NAME ));
ServerLocation location = locator.locateServer(serverId, endPointType);
// print success message
out.println(CorbaResourceUtil.getText("servertool.locate2", location.hostname));
int numEntries = location.ports.length;
for (i = 0; i < numEntries; i++) {
ORBPortInfo orbPort = location.ports[i];
out.println("\t\t"+ orbPort.port + "\t\t" + endPointType + "\t\t" + orbPort.orbId );
}
} catch (NoSuchEndPoint ex) {
} catch (ServerHeldDown ex) {
out.println(CorbaResourceUtil.getText("servertool.helddown"));
} catch (ServerNotRegistered ex) {
out.println(CorbaResourceUtil.getText("servertool.nosuchserver"));
} catch (Exception ex) {
ex.printStackTrace();
}
return commandDone;
}
}
class LocateServerForORB implements CommandHandler
{
public String getCommandName() {return "locateperorb";}
public void printCommandHelp(PrintStream out, boolean helpType)
{
if (helpType == longHelp) {
out.println(CorbaResourceUtil.getText("servertool.locateorb"));
} else {
out.println(CorbaResourceUtil.getText("servertool.locateorb1"));
}
}
final static int illegalServerId = -1;
public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
{
int serverId = illegalServerId;
String orbId = "";
try {
// parse command
String arg;
int i = 0;
while (i < cmdArgs.length) {
arg = cmdArgs[i++];
if (arg.equals("-serverid")) {
if (i < cmdArgs.length)
serverId = (Integer.valueOf(cmdArgs[i++])).intValue();
else
return parseError;
} else if (arg.equals("-applicationName")) {
if (i < cmdArgs.length)
serverId = ServerTool.getServerIdForAlias( orb, cmdArgs[i++] ) ;
else
return parseError;
} else if (arg.equals("-orbid")) {
if (i < cmdArgs.length)
orbId = cmdArgs[i++];
}
}
// the server id has to be specified
if (serverId == illegalServerId)
return parseError;
// locate the server
// deactivate the server
Locator locator = LocatorHelper.narrow(
orb.resolve_initial_references( ORBConstants.SERVER_LOCATOR_NAME ));
ServerLocationPerORB location = locator.locateServerForORB(serverId,
orbId);
// print success message
out.println(CorbaResourceUtil.getText("servertool.locateorb2", location.hostname));
int numEntries = location.ports.length;
for (i = 0; i < numEntries; i++) {
EndPointInfo Port = location.ports[i];
out.println("\t\t"+ Port.port + "\t\t" + Port.endpointType + "\t\t" + orbId );
}
} catch (InvalidORBid ex) {
out.println(CorbaResourceUtil.getText("servertool.nosuchorb"));
} catch (ServerHeldDown ex) {
out.println(CorbaResourceUtil.getText("servertool.helddown"));
} catch (ServerNotRegistered ex) {
out.println(CorbaResourceUtil.getText("servertool.nosuchserver"));
} catch (Exception ex) {
ex.printStackTrace();
}
return commandDone;
}
}
class GetServerID implements CommandHandler
{
public String getCommandName() {return "getserverid" ; }
public void printCommandHelp( PrintStream out, boolean helpType )
{
if (helpType == longHelp) {
out.println(CorbaResourceUtil.getText("servertool.getserverid"));
} else {
out.println(CorbaResourceUtil.getText("servertool.getserverid1"));
}
}
public boolean processCommand( String[] cmdArgs, ORB orb, PrintStream out )
{
if ((cmdArgs.length == 2) && cmdArgs[0].equals( "-applicationName" )) {
String str = (String)cmdArgs[1] ;
try {
Repository repository = RepositoryHelper.narrow(
orb.resolve_initial_references( ORBConstants.SERVER_REPOSITORY_NAME ));
try {
int result = repository.getServerID( str ) ;
out.println() ;
out.println(CorbaResourceUtil.getText("servertool.getserverid2", str, Integer.toString(result)));
out.println() ;
} catch (ServerNotRegistered e) {
out.println(CorbaResourceUtil.getText("servertool.nosuchserver"));
}
} catch (Exception ex) {
ex.printStackTrace() ;
}
return commandDone ;
} else
return parseError ;
}
}
class ListServers implements CommandHandler
{
public String getCommandName() {return "list";}
public void printCommandHelp(PrintStream out, boolean helpType)
{
if (helpType == longHelp) {
out.println(CorbaResourceUtil.getText("servertool.list"));
} else {
out.println(CorbaResourceUtil.getText("servertool.list1"));
}
}
final static int illegalServerId = -1;
public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
{
int serverId = illegalServerId;
boolean listOneServer = false;
ServerDef serverDef;
// determine if list single server or all servers
listOneServer = (cmdArgs.length!=0) ;
if ((cmdArgs.length == 2) && cmdArgs[0].equals("-serverid"))
serverId = (Integer.valueOf(cmdArgs[1])).intValue();
if ((serverId == illegalServerId) && listOneServer)
return parseError;
// process the list server command
try {
Repository repository = RepositoryHelper.narrow(
orb.resolve_initial_references( ORBConstants.SERVER_REPOSITORY_NAME ));
if (listOneServer) {
try {
serverDef = repository.getServer(serverId);
out.println();
printServerDef(serverDef, serverId, out);
out.println();
} catch (ServerNotRegistered e) {
out.println(CorbaResourceUtil.getText("servertool.nosuchserver"));
}
} else {
int[] servers = repository.listRegisteredServers();
out.println(CorbaResourceUtil.getText("servertool.list2"));
sortServers(servers);
for (int i=0; i < servers.length; i++) {
try {
serverDef = repository.getServer(servers[i]);
out.println("\t " + servers[i] + "\t\t" +
serverDef.serverName + "\t\t"
+ serverDef.applicationName);
} catch (ServerNotRegistered e) {}
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return commandDone;
}
static void printServerDef(ServerDef serverDef, int serverId,
PrintStream out)
{
out.println(CorbaResourceUtil.getText("servertool.appname", serverDef.applicationName));
out.println(CorbaResourceUtil.getText("servertool.name", serverDef.serverName));
out.println(CorbaResourceUtil.getText("servertool.classpath", serverDef.serverClassPath));
out.println(CorbaResourceUtil.getText("servertool.args", serverDef.serverArgs));
out.println(CorbaResourceUtil.getText("servertool.vmargs", serverDef.serverVmArgs));
out.println(CorbaResourceUtil.getText("servertool.serverid", serverId));
}
/**
* Do a simple bubble sort to sort the server ids in ascending
* order.
*/
static void sortServers(int[] serverIds)
{
int size = serverIds.length;
int lowest;
for (int i=0; i < size; i++) {
lowest = i;
for (int j=i+1; j < size; j++) {
if (serverIds[j] < serverIds[lowest]) lowest = j;
}
if (lowest != i) {
int temp = serverIds[i];
serverIds[i] = serverIds[lowest];
serverIds[lowest] = temp;
}
}
}
}
class ListActiveServers implements CommandHandler
{
public String getCommandName() {return "listactive";}
public void printCommandHelp(PrintStream out, boolean helpType)
{
if (helpType == longHelp) {
out.println(CorbaResourceUtil.getText("servertool.listactive"));
} else {
out.println(CorbaResourceUtil.getText("servertool.listactive1"));
}
}
public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
{
ServerDef serverDef;
// process the list active servers command
try {
Repository repository = RepositoryHelper.narrow(
orb.resolve_initial_references( ORBConstants.SERVER_REPOSITORY_NAME ));
Activator activator = ActivatorHelper.narrow(
orb.resolve_initial_references( ORBConstants.SERVER_ACTIVATOR_NAME ));
int[] servers = activator.getActiveServers();
out.println(CorbaResourceUtil.getText("servertool.list2"));
ListServers.sortServers(servers);
for (int i=0; i < servers.length; i++) {
try {
serverDef = repository.getServer(servers[i]);
out.println("\t " + servers[i] + "\t\t" +
serverDef.serverName + "\t\t" +
serverDef.applicationName);
} catch (ServerNotRegistered e) {}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return commandDone;
}
}
class ListAliases implements CommandHandler
{
public String getCommandName() {return "listappnames";}
public void printCommandHelp(PrintStream out, boolean helpType)
{
if (helpType == longHelp) {
out.println(CorbaResourceUtil.getText("servertool.listappnames"));
} else {
out.println(CorbaResourceUtil.getText("servertool.listappnames1"));
}
}
public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
{
try {
Repository repository = RepositoryHelper.narrow(
orb.resolve_initial_references( ORBConstants.SERVER_REPOSITORY_NAME ));
String[] applicationNames = repository.getApplicationNames();
out.println(CorbaResourceUtil.getText("servertool.listappnames2"));
out.println();
for (int i=0; i < applicationNames.length; i++)
out.println( "\t" + applicationNames[i] ) ;
} catch (Exception ex) {
ex.printStackTrace();
}
return commandDone;
}
}
class ShutdownServer implements CommandHandler
{
public String getCommandName() {return "shutdown";}
public void printCommandHelp(PrintStream out, boolean helpType)
{
if (helpType == longHelp) {
out.println(CorbaResourceUtil.getText("servertool.shutdown"));
} else {
out.println(CorbaResourceUtil.getText("servertool.shutdown1"));
}
}
final static int illegalServerId = -1;
public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
{
int serverId = illegalServerId;
try {
// determine the server id
if (cmdArgs.length == 2)
if (cmdArgs[0].equals("-serverid"))
serverId = (Integer.valueOf(cmdArgs[1])).intValue();
else if (cmdArgs[0].equals("-applicationName"))
serverId = ServerTool.getServerIdForAlias( orb, cmdArgs[1] ) ;
if (serverId == illegalServerId)
return parseError;
// shutdown the server
Activator activator = ActivatorHelper.narrow(
orb.resolve_initial_references( ORBConstants.SERVER_ACTIVATOR_NAME ));
activator.shutdown(serverId);
out.println(CorbaResourceUtil.getText("servertool.shutdown2"));
} catch (ServerNotActive ex) {
out.println(CorbaResourceUtil.getText("servertool.servernotrunning"));
} catch (ServerNotRegistered ex) {
out.println(CorbaResourceUtil.getText("servertool.nosuchserver"));
} catch (Exception ex) {
ex.printStackTrace();
}
return commandDone;
}
}
class StartServer implements CommandHandler
{
public String getCommandName() {return "startup";}
public void printCommandHelp(PrintStream out, boolean helpType)
{
if (helpType == longHelp) {
out.println(CorbaResourceUtil.getText("servertool.startserver"));
} else {
out.println(CorbaResourceUtil.getText("servertool.startserver1"));
}
}
final static int illegalServerId = -1;
public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
{
int serverId = illegalServerId;
try {
// determine the server id
if (cmdArgs.length == 2)
if (cmdArgs[0].equals("-serverid"))
serverId = (Integer.valueOf(cmdArgs[1])).intValue();
else if (cmdArgs[0].equals("-applicationName"))
serverId = ServerTool.getServerIdForAlias( orb, cmdArgs[1] ) ;
if (serverId == illegalServerId)
return parseError;
// startup the server
Activator activator = ActivatorHelper.narrow(
orb.resolve_initial_references( ORBConstants.SERVER_ACTIVATOR_NAME ));
activator.activate(serverId);
out.println(CorbaResourceUtil.getText("servertool.startserver2"));
} catch (ServerNotRegistered ex) {
out.println(CorbaResourceUtil.getText("servertool.nosuchserver"));
} catch (ServerAlreadyActive ex) {
out.println(CorbaResourceUtil.getText("servertool.serverup"));
} catch (ServerHeldDown ex) {
out.println(CorbaResourceUtil.getText("servertool.helddown"));
} catch (Exception ex) {
ex.printStackTrace();
}
return commandDone;
}
}
class Quit implements CommandHandler
{
public String getCommandName() {return "quit";}
public void printCommandHelp(PrintStream out, boolean helpType)
{
if (helpType == longHelp) {
out.println(CorbaResourceUtil.getText("servertool.quit"));
} else {
out.println(CorbaResourceUtil.getText("servertool.quit1"));
}
}
public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
{
System.exit(0);
return commandDone;
}
}
class Help implements CommandHandler
{
public String getCommandName() {return "help";}
public void printCommandHelp(PrintStream out, boolean helpType)
{
if (helpType == longHelp) {
out.println(CorbaResourceUtil.getText("servertool.help"));
} else {
out.println(CorbaResourceUtil.getText("servertool.help1"));
}
}
public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
{
return commandDone;
}
}
class ListORBs implements CommandHandler
{
public String getCommandName() {return "orblist";}
public void printCommandHelp(PrintStream out, boolean helpType)
{
if (helpType == longHelp) {
out.println(CorbaResourceUtil.getText("servertool.orbidmap"));
} else {
out.println(CorbaResourceUtil.getText("servertool.orbidmap1"));
}
}
final static int illegalServerId = -1;
public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
{
int serverId = illegalServerId;
try {
if (cmdArgs.length == 2) {
if (cmdArgs[0].equals("-serverid"))
serverId = (Integer.valueOf(cmdArgs[1])).intValue();
else if (cmdArgs[0].equals("-applicationName"))
serverId = ServerTool.getServerIdForAlias( orb, cmdArgs[1] ) ;
}
// the server id has to be specified
if (serverId == illegalServerId)
return parseError;
// activate the server
Activator activator = ActivatorHelper.narrow(
orb.resolve_initial_references( ORBConstants.SERVER_ACTIVATOR_NAME ));
String[] orbList = activator.getORBNames(serverId);
out.println(CorbaResourceUtil.getText("servertool.orbidmap2"));
for (int i = 0; i < orbList.length ; i++) {
out.println("\t "+ orbList[i]);
}
} catch (ServerNotRegistered ex) {
out.println("\tno such server found.");
} catch (Exception ex) {
ex.printStackTrace();
}
return commandDone;
}
}