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

📄 servertool.java

📁 Mobile 应用程序使用 Java Micro Edition (Java ME) 平台
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * @(#)ServerTool.java	1.39 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */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;/** *  * @version 	1.7, 97/10/19 * @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"));	}    }

⌨️ 快捷键说明

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