1. /*
  2. * @(#)ServerTool.java 1.38 03/12/19
  3. *
  4. * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. package com.sun.corba.se.impl.activation;
  8. import java.io.BufferedReader;
  9. import java.io.InputStreamReader;
  10. import java.io.PrintStream;
  11. import java.util.Vector;
  12. import java.util.Properties;
  13. import java.util.StringTokenizer;
  14. import org.omg.CORBA.ORB;
  15. import org.omg.CORBA.INITIALIZE;
  16. import org.omg.CORBA.CompletionStatus;
  17. import com.sun.corba.se.impl.orbutil.ORBConstants;
  18. import com.sun.corba.se.impl.orbutil.CorbaResourceUtil;
  19. import com.sun.corba.se.spi.activation.*;
  20. import com.sun.corba.se.spi.activation.ServerHeldDown;
  21. import com.sun.corba.se.spi.activation.RepositoryPackage.ServerDef;
  22. import com.sun.corba.se.spi.activation.LocatorPackage.ServerLocation;
  23. import com.sun.corba.se.spi.activation.LocatorPackage.ServerLocationPerORB;
  24. /**
  25. *
  26. * @version 1.7, 97/10/19
  27. * @author Anita Jindal
  28. * @since JDK1.3
  29. */
  30. public class ServerTool
  31. {
  32. final static String helpCommand = "help";
  33. final static String toolName = "servertool";
  34. final static String commandArg = "-cmd";
  35. static int getServerIdForAlias( ORB orb, String applicationName ) throws ServerNotRegistered
  36. {
  37. try {
  38. Repository rep = RepositoryHelper.narrow(
  39. orb.resolve_initial_references( ORBConstants.SERVER_REPOSITORY_NAME ) ) ;
  40. int serverid = rep.getServerID(applicationName);
  41. return rep.getServerID( applicationName ) ;
  42. } catch (Exception ex) {
  43. throw (new ServerNotRegistered());
  44. }
  45. }
  46. void run(String[] args)
  47. {
  48. String[] cmd = null;
  49. // if command specified in the args, get it
  50. for (int i=0; i < args.length; i++) {
  51. if (args[i].equals(commandArg)) {
  52. // get the command
  53. int cmdLen = args.length - i - 1;
  54. cmd = new String[cmdLen];
  55. for (int j=0; j < cmdLen; j++) cmd[j] = args[++i];
  56. break;
  57. }
  58. }
  59. try {
  60. // create the POA ORB
  61. Properties props = System.getProperties() ;
  62. props.put("org.omg.CORBA.ORBClass",
  63. "com.sun.corba.se.impl.orb.ORBImpl" );
  64. orb = (ORB) ORB.init(args, props);
  65. // if command specified in the args, process it
  66. if (cmd != null) executeCommand(cmd);
  67. else { // process commands interactively
  68. // create a buffered reader to read commands from standard in
  69. BufferedReader in = new
  70. BufferedReader(new InputStreamReader(System.in));
  71. // print tool banner
  72. System.out.println(CorbaResourceUtil.getText("servertool.banner"));
  73. // process commands until user quits
  74. while (true) {
  75. cmd = readCommand(in);
  76. if (cmd != null) executeCommand(cmd);
  77. else printAvailableCommands();
  78. }
  79. }
  80. } catch (Exception ex) {
  81. System.out.println(CorbaResourceUtil.getText("servertool.usage", "servertool"));
  82. System.out.println();
  83. ex.printStackTrace();
  84. }
  85. }
  86. public static void main(String[] args)
  87. {
  88. ServerTool tool = new ServerTool();
  89. tool.run(args);
  90. }
  91. String[] readCommand(BufferedReader in)
  92. {
  93. System.out.print(toolName + " > ");
  94. try {
  95. int i = 0;
  96. String cmd[] = null;
  97. String cmdLine = in.readLine();
  98. if (cmdLine != null) {
  99. StringTokenizer st = new StringTokenizer(cmdLine);
  100. if (st.countTokens() != 0) {
  101. cmd = new String[st.countTokens()];
  102. while (st.hasMoreTokens()) cmd[i++] = st.nextToken();
  103. }
  104. }
  105. return cmd;
  106. } catch (Exception ex) {
  107. System.out.println(CorbaResourceUtil.getText("servertool.usage", "servertool"));
  108. System.out.println();
  109. ex.printStackTrace();
  110. }
  111. return null;
  112. }
  113. void printAvailableCommands()
  114. {
  115. CommandHandler handler;
  116. // print short help
  117. System.out.println(CorbaResourceUtil.getText("servertool.shorthelp"));
  118. for (int i=0; i < handlers.size(); i++) {
  119. handler = (CommandHandler) handlers.elementAt(i);
  120. System.out.print("\t" + handler.getCommandName());
  121. for (int j=handler.getCommandName().length();
  122. j < maxNameLen; j++) System.out.print(" ");
  123. System.out.print(" - ");
  124. handler.printCommandHelp(System.out,
  125. CommandHandler.shortHelp);
  126. }
  127. System.out.println();
  128. }
  129. void executeCommand(String[] cmd)
  130. {
  131. boolean result;
  132. CommandHandler handler;
  133. // handle the help command
  134. if (cmd[0].equals(helpCommand)) {
  135. if (cmd.length == 1) printAvailableCommands();
  136. else {
  137. // print long help for a specific command
  138. for (int i=0; i < handlers.size(); i++) {
  139. handler = (CommandHandler) handlers.elementAt(i);
  140. if (handler.getCommandName().equals(cmd[1])) {
  141. handler.printCommandHelp(System.out,
  142. CommandHandler.longHelp);
  143. }
  144. }
  145. }
  146. return;
  147. }
  148. // determine the subcommand and execute it
  149. for (int i=0; i < handlers.size(); i++) {
  150. handler = (CommandHandler) handlers.elementAt(i);
  151. if (handler.getCommandName().equals(cmd[0])) {
  152. String[] cmdArgs = new String[cmd.length - 1];
  153. // construct args to the command
  154. for (int j=0; j < cmdArgs.length; j++)
  155. cmdArgs[j] = cmd[j+1];
  156. // execute the command
  157. try {
  158. System.out.println();
  159. result = handler.processCommand(cmdArgs, orb, System.out);
  160. if (result == CommandHandler.parseError) {
  161. handler.printCommandHelp(System.out,
  162. CommandHandler.longHelp);
  163. }
  164. System.out.println();
  165. } catch (Exception ex) {}
  166. return;
  167. }
  168. }
  169. // unknown command - print available commands
  170. printAvailableCommands();
  171. }
  172. final private static boolean debug = false;
  173. ORB orb = null;
  174. static Vector handlers;
  175. static int maxNameLen;
  176. static {
  177. handlers = new Vector();
  178. handlers.addElement(new RegisterServer());
  179. handlers.addElement(new UnRegisterServer());
  180. handlers.addElement(new GetServerID());
  181. handlers.addElement(new ListServers());
  182. handlers.addElement(new ListAliases());
  183. handlers.addElement(new ListActiveServers());
  184. handlers.addElement(new LocateServer());
  185. handlers.addElement(new LocateServerForORB());
  186. handlers.addElement(new ListORBs());
  187. handlers.addElement(new ShutdownServer());
  188. handlers.addElement(new StartServer());
  189. handlers.addElement(new Help());
  190. handlers.addElement(new Quit());
  191. // determine longest command name
  192. maxNameLen = 0;
  193. int cmdNameLen;
  194. for (int i=0; i < handlers.size(); i++) {
  195. CommandHandler handler = (CommandHandler) handlers.elementAt(i);
  196. cmdNameLen = handler.getCommandName().length();
  197. if (cmdNameLen > maxNameLen) maxNameLen = cmdNameLen;
  198. }
  199. }
  200. }
  201. class RegisterServer implements CommandHandler
  202. {
  203. public String getCommandName() {return "register";}
  204. public void printCommandHelp(PrintStream out, boolean helpType)
  205. {
  206. if (helpType == longHelp) {
  207. out.println(CorbaResourceUtil.getText("servertool.register"));
  208. } else {
  209. out.println(CorbaResourceUtil.getText("servertool.register1"));
  210. }
  211. }
  212. public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
  213. {
  214. int i=0;
  215. String applicationName = "";
  216. String name = "";
  217. String classpath = "";
  218. String args = "";
  219. String vmargs = "";
  220. int serverId = 0;
  221. // parse register server command
  222. String arg;
  223. while (i < cmdArgs.length) {
  224. arg = cmdArgs[i++];
  225. if (arg.equals("-server")) {
  226. if (i < cmdArgs.length) name = cmdArgs[i++];
  227. else return parseError;
  228. } else if (arg.equals("-applicationName")) {
  229. if (i < cmdArgs.length) applicationName = cmdArgs[i++];
  230. else return parseError;
  231. } else if (arg.equals("-classpath")) {
  232. if (i < cmdArgs.length) classpath = cmdArgs[i++];
  233. else return parseError;
  234. } else if (arg.equals("-args")) {
  235. while ((i < cmdArgs.length) && !cmdArgs[i].equals("-vmargs")){
  236. args = args.equals("") ? cmdArgs[i] :
  237. args + " " + cmdArgs[i];
  238. i++;
  239. }
  240. if (args.equals("")) return parseError;
  241. } else if (arg.equals("-vmargs")) {
  242. while ((i < cmdArgs.length) && !cmdArgs[i].equals("-args")){
  243. vmargs = vmargs.equals("") ? cmdArgs[i] :
  244. vmargs + " " + cmdArgs[i];
  245. i++;
  246. }
  247. if (vmargs.equals("")) return parseError;
  248. } else return parseError;
  249. }
  250. // minimally the server class name has to be specified
  251. if (name.equals("")) return parseError;
  252. // register server and activate it
  253. try {
  254. // register the server with the repository
  255. Repository repository = RepositoryHelper.narrow(
  256. orb.resolve_initial_references( ORBConstants.SERVER_REPOSITORY_NAME ));
  257. ServerDef server = new ServerDef(applicationName, name, classpath, args, vmargs);
  258. serverId = repository.registerServer(server);
  259. // activate the server
  260. Activator activator = ActivatorHelper.narrow(
  261. orb.resolve_initial_references( ORBConstants.SERVER_ACTIVATOR_NAME ));
  262. activator.activate(serverId);
  263. activator.install(serverId);
  264. // print success message
  265. out.println(CorbaResourceUtil.getText("servertool.register2", serverId));
  266. } catch (ServerNotRegistered ex) {
  267. } catch (ServerAlreadyActive ex) {
  268. } catch (ServerHeldDown ex) {
  269. out.println(CorbaResourceUtil.getText("servertool.register3", serverId));
  270. } catch (ServerAlreadyRegistered ex) {
  271. out.println(CorbaResourceUtil.getText("servertool.register4", serverId));
  272. } catch (BadServerDefinition ex) {
  273. out.println(CorbaResourceUtil.getText("servertool.baddef", ex.reason));
  274. } catch (Exception ex) {
  275. ex.printStackTrace();
  276. }
  277. return commandDone;
  278. }
  279. }
  280. class UnRegisterServer implements CommandHandler
  281. {
  282. public String getCommandName() {return "unregister";}
  283. public void printCommandHelp(PrintStream out, boolean helpType)
  284. {
  285. if (helpType == longHelp) {
  286. out.println(CorbaResourceUtil.getText("servertool.unregister"));
  287. } else {
  288. out.println(CorbaResourceUtil.getText("servertool.unregister1"));
  289. }
  290. }
  291. final static int illegalServerId = -1;
  292. public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
  293. {
  294. int serverId = illegalServerId;
  295. try {
  296. if (cmdArgs.length == 2) {
  297. if (cmdArgs[0].equals("-serverid"))
  298. serverId = (Integer.valueOf(cmdArgs[1])).intValue();
  299. else if (cmdArgs[0].equals("-applicationName"))
  300. serverId = ServerTool.getServerIdForAlias( orb, cmdArgs[1] ) ;
  301. }
  302. // the server id has to be specified
  303. if (serverId == illegalServerId)
  304. return parseError;
  305. // deactivate server, hold it down and and unregister it
  306. // deactivate the server
  307. try {
  308. Activator activator = ActivatorHelper.narrow(
  309. orb.resolve_initial_references( ORBConstants.SERVER_ACTIVATOR_NAME ));
  310. activator.uninstall(serverId);
  311. } catch (ServerHeldDown ex) {}
  312. // unregister the server from the repository
  313. Repository repository = RepositoryHelper.narrow(
  314. orb.resolve_initial_references( ORBConstants.SERVER_REPOSITORY_NAME ));
  315. repository.unregisterServer(serverId);
  316. // print success message
  317. out.println(CorbaResourceUtil.getText("servertool.unregister2"));
  318. } catch (ServerNotRegistered ex) {
  319. out.println(CorbaResourceUtil.getText("servertool.nosuchserver"));
  320. } catch (Exception ex) {
  321. ex.printStackTrace();
  322. }
  323. return commandDone;
  324. }
  325. }
  326. class LocateServer implements CommandHandler
  327. {
  328. public String getCommandName() {return "locate";}
  329. public void printCommandHelp(PrintStream out, boolean helpType)
  330. {
  331. if (helpType == longHelp) {
  332. out.println(CorbaResourceUtil.getText("servertool.locate"));
  333. } else {
  334. out.println(CorbaResourceUtil.getText("servertool.locate1"));
  335. }
  336. }
  337. final static int illegalServerId = -1;
  338. public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
  339. {
  340. int serverId = illegalServerId;
  341. String endPointType = IIOP_CLEAR_TEXT.value;
  342. try {
  343. // parse command
  344. String arg;
  345. int i = 0;
  346. while (i < cmdArgs.length) {
  347. arg = cmdArgs[i++];
  348. if (arg.equals("-serverid")) {
  349. if (i < cmdArgs.length)
  350. serverId = (Integer.valueOf(cmdArgs[i++])).intValue();
  351. else
  352. return parseError;
  353. } else if (arg.equals("-applicationName")) {
  354. if (i < cmdArgs.length)
  355. serverId = ServerTool.getServerIdForAlias( orb, cmdArgs[i++] ) ;
  356. else
  357. return parseError;
  358. } else if (arg.equals("-endpointType")) {
  359. if (i < cmdArgs.length)
  360. endPointType = cmdArgs[i++];
  361. }
  362. }
  363. // the server id has to be specified
  364. if (serverId == illegalServerId)
  365. return parseError;
  366. // locate the server
  367. // deactivate the server
  368. Locator locator = LocatorHelper.narrow(
  369. orb.resolve_initial_references( ORBConstants.SERVER_LOCATOR_NAME ));
  370. ServerLocation location = locator.locateServer(serverId, endPointType);
  371. // print success message
  372. out.println(CorbaResourceUtil.getText("servertool.locate2", location.hostname));
  373. int numEntries = location.ports.length;
  374. for (i = 0; i < numEntries; i++) {
  375. ORBPortInfo orbPort = location.ports[i];
  376. out.println("\t\t"+ orbPort.port + "\t\t" + endPointType + "\t\t" + orbPort.orbId );
  377. }
  378. } catch (NoSuchEndPoint ex) {
  379. } catch (ServerHeldDown ex) {
  380. out.println(CorbaResourceUtil.getText("servertool.helddown"));
  381. } catch (ServerNotRegistered ex) {
  382. out.println(CorbaResourceUtil.getText("servertool.nosuchserver"));
  383. } catch (Exception ex) {
  384. ex.printStackTrace();
  385. }
  386. return commandDone;
  387. }
  388. }
  389. class LocateServerForORB implements CommandHandler
  390. {
  391. public String getCommandName() {return "locateperorb";}
  392. public void printCommandHelp(PrintStream out, boolean helpType)
  393. {
  394. if (helpType == longHelp) {
  395. out.println(CorbaResourceUtil.getText("servertool.locateorb"));
  396. } else {
  397. out.println(CorbaResourceUtil.getText("servertool.locateorb1"));
  398. }
  399. }
  400. final static int illegalServerId = -1;
  401. public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
  402. {
  403. int serverId = illegalServerId;
  404. String orbId = "";
  405. try {
  406. // parse command
  407. String arg;
  408. int i = 0;
  409. while (i < cmdArgs.length) {
  410. arg = cmdArgs[i++];
  411. if (arg.equals("-serverid")) {
  412. if (i < cmdArgs.length)
  413. serverId = (Integer.valueOf(cmdArgs[i++])).intValue();
  414. else
  415. return parseError;
  416. } else if (arg.equals("-applicationName")) {
  417. if (i < cmdArgs.length)
  418. serverId = ServerTool.getServerIdForAlias( orb, cmdArgs[i++] ) ;
  419. else
  420. return parseError;
  421. } else if (arg.equals("-orbid")) {
  422. if (i < cmdArgs.length)
  423. orbId = cmdArgs[i++];
  424. }
  425. }
  426. // the server id has to be specified
  427. if (serverId == illegalServerId)
  428. return parseError;
  429. // locate the server
  430. // deactivate the server
  431. Locator locator = LocatorHelper.narrow(
  432. orb.resolve_initial_references( ORBConstants.SERVER_LOCATOR_NAME ));
  433. ServerLocationPerORB location = locator.locateServerForORB(serverId,
  434. orbId);
  435. // print success message
  436. out.println(CorbaResourceUtil.getText("servertool.locateorb2", location.hostname));
  437. int numEntries = location.ports.length;
  438. for (i = 0; i < numEntries; i++) {
  439. EndPointInfo Port = location.ports[i];
  440. out.println("\t\t"+ Port.port + "\t\t" + Port.endpointType + "\t\t" + orbId );
  441. }
  442. } catch (InvalidORBid ex) {
  443. out.println(CorbaResourceUtil.getText("servertool.nosuchorb"));
  444. } catch (ServerHeldDown ex) {
  445. out.println(CorbaResourceUtil.getText("servertool.helddown"));
  446. } catch (ServerNotRegistered ex) {
  447. out.println(CorbaResourceUtil.getText("servertool.nosuchserver"));
  448. } catch (Exception ex) {
  449. ex.printStackTrace();
  450. }
  451. return commandDone;
  452. }
  453. }
  454. class GetServerID implements CommandHandler
  455. {
  456. public String getCommandName() {return "getserverid" ; }
  457. public void printCommandHelp( PrintStream out, boolean helpType )
  458. {
  459. if (helpType == longHelp) {
  460. out.println(CorbaResourceUtil.getText("servertool.getserverid"));
  461. } else {
  462. out.println(CorbaResourceUtil.getText("servertool.getserverid1"));
  463. }
  464. }
  465. public boolean processCommand( String[] cmdArgs, ORB orb, PrintStream out )
  466. {
  467. if ((cmdArgs.length == 2) && cmdArgs[0].equals( "-applicationName" )) {
  468. String str = (String)cmdArgs[1] ;
  469. try {
  470. Repository repository = RepositoryHelper.narrow(
  471. orb.resolve_initial_references( ORBConstants.SERVER_REPOSITORY_NAME ));
  472. try {
  473. int result = repository.getServerID( str ) ;
  474. out.println() ;
  475. out.println(CorbaResourceUtil.getText("servertool.getserverid2", str, Integer.toString(result)));
  476. out.println() ;
  477. } catch (ServerNotRegistered e) {
  478. out.println(CorbaResourceUtil.getText("servertool.nosuchserver"));
  479. }
  480. } catch (Exception ex) {
  481. ex.printStackTrace() ;
  482. }
  483. return commandDone ;
  484. } else
  485. return parseError ;
  486. }
  487. }
  488. class ListServers implements CommandHandler
  489. {
  490. public String getCommandName() {return "list";}
  491. public void printCommandHelp(PrintStream out, boolean helpType)
  492. {
  493. if (helpType == longHelp) {
  494. out.println(CorbaResourceUtil.getText("servertool.list"));
  495. } else {
  496. out.println(CorbaResourceUtil.getText("servertool.list1"));
  497. }
  498. }
  499. final static int illegalServerId = -1;
  500. public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
  501. {
  502. int serverId = illegalServerId;
  503. boolean listOneServer = false;
  504. ServerDef serverDef;
  505. // determine if list single server or all servers
  506. listOneServer = (cmdArgs.length!=0) ;
  507. if ((cmdArgs.length == 2) && cmdArgs[0].equals("-serverid"))
  508. serverId = (Integer.valueOf(cmdArgs[1])).intValue();
  509. if ((serverId == illegalServerId) && listOneServer)
  510. return parseError;
  511. // process the list server command
  512. try {
  513. Repository repository = RepositoryHelper.narrow(
  514. orb.resolve_initial_references( ORBConstants.SERVER_REPOSITORY_NAME ));
  515. if (listOneServer) {
  516. try {
  517. serverDef = repository.getServer(serverId);
  518. out.println();
  519. printServerDef(serverDef, serverId, out);
  520. out.println();
  521. } catch (ServerNotRegistered e) {
  522. out.println(CorbaResourceUtil.getText("servertool.nosuchserver"));
  523. }
  524. } else {
  525. int[] servers = repository.listRegisteredServers();
  526. out.println(CorbaResourceUtil.getText("servertool.list2"));
  527. sortServers(servers);
  528. for (int i=0; i < servers.length; i++) {
  529. try {
  530. serverDef = repository.getServer(servers[i]);
  531. out.println("\t " + servers[i] + "\t\t" +
  532. serverDef.serverName + "\t\t"
  533. + serverDef.applicationName);
  534. } catch (ServerNotRegistered e) {}
  535. }
  536. }
  537. } catch (Exception ex) {
  538. ex.printStackTrace();
  539. }
  540. return commandDone;
  541. }
  542. static void printServerDef(ServerDef serverDef, int serverId,
  543. PrintStream out)
  544. {
  545. out.println(CorbaResourceUtil.getText("servertool.appname", serverDef.applicationName));
  546. out.println(CorbaResourceUtil.getText("servertool.name", serverDef.serverName));
  547. out.println(CorbaResourceUtil.getText("servertool.classpath", serverDef.serverClassPath));
  548. out.println(CorbaResourceUtil.getText("servertool.args", serverDef.serverArgs));
  549. out.println(CorbaResourceUtil.getText("servertool.vmargs", serverDef.serverVmArgs));
  550. out.println(CorbaResourceUtil.getText("servertool.serverid", serverId));
  551. }
  552. /**
  553. * Do a simple bubble sort to sort the server ids in ascending
  554. * order.
  555. */
  556. static void sortServers(int[] serverIds)
  557. {
  558. int size = serverIds.length;
  559. int lowest;
  560. for (int i=0; i < size; i++) {
  561. lowest = i;
  562. for (int j=i+1; j < size; j++) {
  563. if (serverIds[j] < serverIds[lowest]) lowest = j;
  564. }
  565. if (lowest != i) {
  566. int temp = serverIds[i];
  567. serverIds[i] = serverIds[lowest];
  568. serverIds[lowest] = temp;
  569. }
  570. }
  571. }
  572. }
  573. class ListActiveServers implements CommandHandler
  574. {
  575. public String getCommandName() {return "listactive";}
  576. public void printCommandHelp(PrintStream out, boolean helpType)
  577. {
  578. if (helpType == longHelp) {
  579. out.println(CorbaResourceUtil.getText("servertool.listactive"));
  580. } else {
  581. out.println(CorbaResourceUtil.getText("servertool.listactive1"));
  582. }
  583. }
  584. public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
  585. {
  586. ServerDef serverDef;
  587. // process the list active servers command
  588. try {
  589. Repository repository = RepositoryHelper.narrow(
  590. orb.resolve_initial_references( ORBConstants.SERVER_REPOSITORY_NAME ));
  591. Activator activator = ActivatorHelper.narrow(
  592. orb.resolve_initial_references( ORBConstants.SERVER_ACTIVATOR_NAME ));
  593. int[] servers = activator.getActiveServers();
  594. out.println(CorbaResourceUtil.getText("servertool.list2"));
  595. ListServers.sortServers(servers);
  596. for (int i=0; i < servers.length; i++) {
  597. try {
  598. serverDef = repository.getServer(servers[i]);
  599. out.println("\t " + servers[i] + "\t\t" +
  600. serverDef.serverName + "\t\t" +
  601. serverDef.applicationName);
  602. } catch (ServerNotRegistered e) {}
  603. }
  604. } catch (Exception ex) {
  605. ex.printStackTrace();
  606. }
  607. return commandDone;
  608. }
  609. }
  610. class ListAliases implements CommandHandler
  611. {
  612. public String getCommandName() {return "listappnames";}
  613. public void printCommandHelp(PrintStream out, boolean helpType)
  614. {
  615. if (helpType == longHelp) {
  616. out.println(CorbaResourceUtil.getText("servertool.listappnames"));
  617. } else {
  618. out.println(CorbaResourceUtil.getText("servertool.listappnames1"));
  619. }
  620. }
  621. public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
  622. {
  623. try {
  624. Repository repository = RepositoryHelper.narrow(
  625. orb.resolve_initial_references( ORBConstants.SERVER_REPOSITORY_NAME ));
  626. String[] applicationNames = repository.getApplicationNames();
  627. out.println(CorbaResourceUtil.getText("servertool.listappnames2"));
  628. out.println();
  629. for (int i=0; i < applicationNames.length; i++)
  630. out.println( "\t" + applicationNames[i] ) ;
  631. } catch (Exception ex) {
  632. ex.printStackTrace();
  633. }
  634. return commandDone;
  635. }
  636. }
  637. class ShutdownServer implements CommandHandler
  638. {
  639. public String getCommandName() {return "shutdown";}
  640. public void printCommandHelp(PrintStream out, boolean helpType)
  641. {
  642. if (helpType == longHelp) {
  643. out.println(CorbaResourceUtil.getText("servertool.shutdown"));
  644. } else {
  645. out.println(CorbaResourceUtil.getText("servertool.shutdown1"));
  646. }
  647. }
  648. final static int illegalServerId = -1;
  649. public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
  650. {
  651. int serverId = illegalServerId;
  652. try {
  653. // determine the server id
  654. if (cmdArgs.length == 2)
  655. if (cmdArgs[0].equals("-serverid"))
  656. serverId = (Integer.valueOf(cmdArgs[1])).intValue();
  657. else if (cmdArgs[0].equals("-applicationName"))
  658. serverId = ServerTool.getServerIdForAlias( orb, cmdArgs[1] ) ;
  659. if (serverId == illegalServerId)
  660. return parseError;
  661. // shutdown the server
  662. Activator activator = ActivatorHelper.narrow(
  663. orb.resolve_initial_references( ORBConstants.SERVER_ACTIVATOR_NAME ));
  664. activator.shutdown(serverId);
  665. out.println(CorbaResourceUtil.getText("servertool.shutdown2"));
  666. } catch (ServerNotActive ex) {
  667. out.println(CorbaResourceUtil.getText("servertool.servernotrunning"));
  668. } catch (ServerNotRegistered ex) {
  669. out.println(CorbaResourceUtil.getText("servertool.nosuchserver"));
  670. } catch (Exception ex) {
  671. ex.printStackTrace();
  672. }
  673. return commandDone;
  674. }
  675. }
  676. class StartServer implements CommandHandler
  677. {
  678. public String getCommandName() {return "startup";}
  679. public void printCommandHelp(PrintStream out, boolean helpType)
  680. {
  681. if (helpType == longHelp) {
  682. out.println(CorbaResourceUtil.getText("servertool.startserver"));
  683. } else {
  684. out.println(CorbaResourceUtil.getText("servertool.startserver1"));
  685. }
  686. }
  687. final static int illegalServerId = -1;
  688. public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
  689. {
  690. int serverId = illegalServerId;
  691. try {
  692. // determine the server id
  693. if (cmdArgs.length == 2)
  694. if (cmdArgs[0].equals("-serverid"))
  695. serverId = (Integer.valueOf(cmdArgs[1])).intValue();
  696. else if (cmdArgs[0].equals("-applicationName"))
  697. serverId = ServerTool.getServerIdForAlias( orb, cmdArgs[1] ) ;
  698. if (serverId == illegalServerId)
  699. return parseError;
  700. // startup the server
  701. Activator activator = ActivatorHelper.narrow(
  702. orb.resolve_initial_references( ORBConstants.SERVER_ACTIVATOR_NAME ));
  703. activator.activate(serverId);
  704. out.println(CorbaResourceUtil.getText("servertool.startserver2"));
  705. } catch (ServerNotRegistered ex) {
  706. out.println(CorbaResourceUtil.getText("servertool.nosuchserver"));
  707. } catch (ServerAlreadyActive ex) {
  708. out.println(CorbaResourceUtil.getText("servertool.serverup"));
  709. } catch (ServerHeldDown ex) {
  710. out.println(CorbaResourceUtil.getText("servertool.helddown"));
  711. } catch (Exception ex) {
  712. ex.printStackTrace();
  713. }
  714. return commandDone;
  715. }
  716. }
  717. class Quit implements CommandHandler
  718. {
  719. public String getCommandName() {return "quit";}
  720. public void printCommandHelp(PrintStream out, boolean helpType)
  721. {
  722. if (helpType == longHelp) {
  723. out.println(CorbaResourceUtil.getText("servertool.quit"));
  724. } else {
  725. out.println(CorbaResourceUtil.getText("servertool.quit1"));
  726. }
  727. }
  728. public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
  729. {
  730. System.exit(0);
  731. return commandDone;
  732. }
  733. }
  734. class Help implements CommandHandler
  735. {
  736. public String getCommandName() {return "help";}
  737. public void printCommandHelp(PrintStream out, boolean helpType)
  738. {
  739. if (helpType == longHelp) {
  740. out.println(CorbaResourceUtil.getText("servertool.help"));
  741. } else {
  742. out.println(CorbaResourceUtil.getText("servertool.help1"));
  743. }
  744. }
  745. public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
  746. {
  747. return commandDone;
  748. }
  749. }
  750. class ListORBs implements CommandHandler
  751. {
  752. public String getCommandName() {return "orblist";}
  753. public void printCommandHelp(PrintStream out, boolean helpType)
  754. {
  755. if (helpType == longHelp) {
  756. out.println(CorbaResourceUtil.getText("servertool.orbidmap"));
  757. } else {
  758. out.println(CorbaResourceUtil.getText("servertool.orbidmap1"));
  759. }
  760. }
  761. final static int illegalServerId = -1;
  762. public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
  763. {
  764. int serverId = illegalServerId;
  765. try {
  766. if (cmdArgs.length == 2) {
  767. if (cmdArgs[0].equals("-serverid"))
  768. serverId = (Integer.valueOf(cmdArgs[1])).intValue();
  769. else if (cmdArgs[0].equals("-applicationName"))
  770. serverId = ServerTool.getServerIdForAlias( orb, cmdArgs[1] ) ;
  771. }
  772. // the server id has to be specified
  773. if (serverId == illegalServerId)
  774. return parseError;
  775. // activate the server
  776. Activator activator = ActivatorHelper.narrow(
  777. orb.resolve_initial_references( ORBConstants.SERVER_ACTIVATOR_NAME ));
  778. String[] orbList = activator.getORBNames(serverId);
  779. out.println(CorbaResourceUtil.getText("servertool.orbidmap2"));
  780. for (int i = 0; i < orbList.length ; i++) {
  781. out.println("\t "+ orbList[i]);
  782. }
  783. } catch (ServerNotRegistered ex) {
  784. out.println("\tno such server found.");
  785. } catch (Exception ex) {
  786. ex.printStackTrace();
  787. }
  788. return commandDone;
  789. }
  790. }