1. /*
  2. * @(#)ServerTool.java 1.36 03/01/23
  3. *
  4. * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. package com.sun.corba.se.internal.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.internal.orbutil.ORBConstants;
  18. import com.sun.corba.se.internal.orbutil.CorbaResourceUtil;
  19. import com.sun.corba.se.ActivationIDL.*;
  20. import com.sun.corba.se.ActivationIDL.ServerHeldDown;
  21. import com.sun.corba.se.ActivationIDL.RepositoryPackage.ServerDef;
  22. import com.sun.corba.se.ActivationIDL.LocatorPackage.ServerLocation;
  23. import com.sun.corba.se.ActivationIDL.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( "ServerRepository" ) ) ;
  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", ORBConstants.IIOP_ORB_NAME);
  63. orb = (ORB) ORB.init(args, props);
  64. // if command specified in the args, process it
  65. if (cmd != null) executeCommand(cmd);
  66. else { // process commands interactively
  67. // create a buffered reader to read commands from standard in
  68. BufferedReader in = new
  69. BufferedReader(new InputStreamReader(System.in));
  70. // print tool banner
  71. System.out.println(CorbaResourceUtil.getText("servertool.banner"));
  72. // process commands until user quits
  73. while (true) {
  74. cmd = readCommand(in);
  75. if (cmd != null) executeCommand(cmd);
  76. else printAvailableCommands();
  77. }
  78. }
  79. } catch (Exception ex) {
  80. System.out.println(CorbaResourceUtil.getText("servertool.usage", "servertool"));
  81. System.out.println();
  82. ex.printStackTrace();
  83. }
  84. }
  85. public static void main(String[] args)
  86. {
  87. ServerTool tool = new ServerTool();
  88. tool.run(args);
  89. }
  90. String[] readCommand(BufferedReader in)
  91. {
  92. System.out.print(toolName + " > ");
  93. try {
  94. int i = 0;
  95. String cmd[] = null;
  96. String cmdLine = in.readLine();
  97. if (cmdLine != null) {
  98. StringTokenizer st = new StringTokenizer(cmdLine);
  99. if (st.countTokens() != 0) {
  100. cmd = new String[st.countTokens()];
  101. while (st.hasMoreTokens()) cmd[i++] = st.nextToken();
  102. }
  103. }
  104. return cmd;
  105. } catch (Exception ex) {
  106. System.out.println(CorbaResourceUtil.getText("servertool.usage", "servertool"));
  107. System.out.println();
  108. ex.printStackTrace();
  109. }
  110. return null;
  111. }
  112. void printAvailableCommands()
  113. {
  114. CommandHandler handler;
  115. // print short help
  116. System.out.println(CorbaResourceUtil.getText("servertool.shorthelp"));
  117. for (int i=0; i < handlers.size(); i++) {
  118. handler = (CommandHandler) handlers.elementAt(i);
  119. System.out.print("\t" + handler.getCommandName());
  120. for (int j=handler.getCommandName().length();
  121. j < maxNameLen; j++) System.out.print(" ");
  122. System.out.print(" - ");
  123. handler.printCommandHelp(System.out,
  124. CommandHandler.shortHelp);
  125. }
  126. System.out.println();
  127. }
  128. void executeCommand(String[] cmd)
  129. {
  130. boolean result;
  131. CommandHandler handler;
  132. // handle the help command
  133. if (cmd[0].equals(helpCommand)) {
  134. if (cmd.length == 1) printAvailableCommands();
  135. else {
  136. // print long help for a specific command
  137. for (int i=0; i < handlers.size(); i++) {
  138. handler = (CommandHandler) handlers.elementAt(i);
  139. if (handler.getCommandName().equals(cmd[1])) {
  140. handler.printCommandHelp(System.out,
  141. CommandHandler.longHelp);
  142. }
  143. }
  144. }
  145. return;
  146. }
  147. // determine the subcommand and execute it
  148. for (int i=0; i < handlers.size(); i++) {
  149. handler = (CommandHandler) handlers.elementAt(i);
  150. if (handler.getCommandName().equals(cmd[0])) {
  151. String[] cmdArgs = new String[cmd.length - 1];
  152. // construct args to the command
  153. for (int j=0; j < cmdArgs.length; j++)
  154. cmdArgs[j] = cmd[j+1];
  155. // execute the command
  156. try {
  157. System.out.println();
  158. result = handler.processCommand(cmdArgs, orb, System.out);
  159. if (result == CommandHandler.parseError) {
  160. handler.printCommandHelp(System.out,
  161. CommandHandler.longHelp);
  162. }
  163. System.out.println();
  164. } catch (Exception ex) {}
  165. return;
  166. }
  167. }
  168. // unknown command - print available commands
  169. printAvailableCommands();
  170. }
  171. final private static boolean debug = false;
  172. ORB orb = null;
  173. static Vector handlers;
  174. static int maxNameLen;
  175. static {
  176. handlers = new Vector();
  177. handlers.addElement(new RegisterServer());
  178. handlers.addElement(new UnRegisterServer());
  179. handlers.addElement(new GetServerID());
  180. handlers.addElement(new ListServers());
  181. handlers.addElement(new ListAliases());
  182. handlers.addElement(new ListActiveServers());
  183. handlers.addElement(new LocateServer());
  184. handlers.addElement(new LocateServerForORB());
  185. handlers.addElement(new ListORBs());
  186. handlers.addElement(new ShutdownServer());
  187. handlers.addElement(new StartServer());
  188. handlers.addElement(new Help());
  189. handlers.addElement(new Quit());
  190. // determine longest command name
  191. maxNameLen = 0;
  192. int cmdNameLen;
  193. for (int i=0; i < handlers.size(); i++) {
  194. CommandHandler handler = (CommandHandler) handlers.elementAt(i);
  195. cmdNameLen = handler.getCommandName().length();
  196. if (cmdNameLen > maxNameLen) maxNameLen = cmdNameLen;
  197. }
  198. }
  199. }
  200. class RegisterServer implements CommandHandler
  201. {
  202. public String getCommandName() {return "register";}
  203. public void printCommandHelp(PrintStream out, boolean helpType)
  204. {
  205. if (helpType == longHelp) {
  206. out.println(CorbaResourceUtil.getText("servertool.register"));
  207. } else {
  208. out.println(CorbaResourceUtil.getText("servertool.register1"));
  209. }
  210. }
  211. public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
  212. {
  213. int i=0;
  214. String applicationName = "";
  215. String name = "";
  216. String classpath = "";
  217. String args = "";
  218. String vmargs = "";
  219. int serverId = 0;
  220. // parse register server command
  221. String arg;
  222. while (i < cmdArgs.length) {
  223. arg = cmdArgs[i++];
  224. if (arg.equals("-server")) {
  225. if (i < cmdArgs.length) name = cmdArgs[i++];
  226. else return parseError;
  227. } else if (arg.equals("-applicationName")) {
  228. if (i < cmdArgs.length) applicationName = cmdArgs[i++];
  229. else return parseError;
  230. } else if (arg.equals("-classpath")) {
  231. if (i < cmdArgs.length) classpath = cmdArgs[i++];
  232. else return parseError;
  233. } else if (arg.equals("-args")) {
  234. while ((i < cmdArgs.length) && !cmdArgs[i].equals("-vmargs")){
  235. args = args.equals("") ? cmdArgs[i] :
  236. args + " " + cmdArgs[i];
  237. i++;
  238. }
  239. if (args.equals("")) return parseError;
  240. } else if (arg.equals("-vmargs")) {
  241. while ((i < cmdArgs.length) && !cmdArgs[i].equals("-args")){
  242. vmargs = vmargs.equals("") ? cmdArgs[i] :
  243. vmargs + " " + cmdArgs[i];
  244. i++;
  245. }
  246. if (vmargs.equals("")) return parseError;
  247. } else return parseError;
  248. }
  249. // minimally the server class name has to be specified
  250. if (name.equals("")) return parseError;
  251. // register server and activate it
  252. try {
  253. // register the server with the repository
  254. Repository repository = RepositoryHelper.narrow(
  255. orb.resolve_initial_references("ServerRepository"));
  256. ServerDef server = new ServerDef(applicationName, name, classpath, args, vmargs);
  257. serverId = repository.registerServer(server);
  258. // activate the server
  259. Activator activator = ActivatorHelper.narrow(
  260. orb.resolve_initial_references("ServerActivator"));
  261. activator.activate(serverId);
  262. activator.install(serverId);
  263. // print success message
  264. out.println(CorbaResourceUtil.getText("servertool.register2", serverId));
  265. } catch (ServerNotRegistered ex) {
  266. } catch (ServerAlreadyActive ex) {
  267. } catch (ServerHeldDown ex) {
  268. out.println(CorbaResourceUtil.getText("servertool.register3", serverId));
  269. } catch (ServerAlreadyRegistered ex) {
  270. out.println(CorbaResourceUtil.getText("servertool.register4", serverId));
  271. } catch (BadServerDefinition ex) {
  272. out.println(CorbaResourceUtil.getText("servertool.baddef", ex.reason));
  273. } catch (Exception ex) {
  274. ex.printStackTrace();
  275. }
  276. return commandDone;
  277. }
  278. }
  279. class UnRegisterServer implements CommandHandler
  280. {
  281. public String getCommandName() {return "unregister";}
  282. public void printCommandHelp(PrintStream out, boolean helpType)
  283. {
  284. if (helpType == longHelp) {
  285. out.println(CorbaResourceUtil.getText("servertool.unregister"));
  286. } else {
  287. out.println(CorbaResourceUtil.getText("servertool.unregister1"));
  288. }
  289. }
  290. final static int illegalServerId = -1;
  291. public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
  292. {
  293. int serverId = illegalServerId;
  294. try {
  295. if (cmdArgs.length == 2) {
  296. if (cmdArgs[0].equals("-serverid"))
  297. serverId = (Integer.valueOf(cmdArgs[1])).intValue();
  298. else if (cmdArgs[0].equals("-applicationName"))
  299. serverId = ServerTool.getServerIdForAlias( orb, cmdArgs[1] ) ;
  300. }
  301. // the server id has to be specified
  302. if (serverId == illegalServerId)
  303. return parseError;
  304. // deactivate server, hold it down and and unregister it
  305. // deactivate the server
  306. try {
  307. Activator activator = ActivatorHelper.narrow(
  308. orb.resolve_initial_references("ServerActivator"));
  309. activator.uninstall(serverId);
  310. } catch (ServerHeldDown ex) {}
  311. // unregister the server from the repository
  312. Repository repository = RepositoryHelper.narrow(
  313. orb.resolve_initial_references("ServerRepository"));
  314. repository.unregisterServer(serverId);
  315. // print success message
  316. out.println(CorbaResourceUtil.getText("servertool.unregister2"));
  317. } catch (ServerNotRegistered ex) {
  318. out.println(CorbaResourceUtil.getText("servertool.nosuchserver"));
  319. } catch (Exception ex) {
  320. ex.printStackTrace();
  321. }
  322. return commandDone;
  323. }
  324. }
  325. class LocateServer implements CommandHandler
  326. {
  327. public String getCommandName() {return "locate";}
  328. public void printCommandHelp(PrintStream out, boolean helpType)
  329. {
  330. if (helpType == longHelp) {
  331. out.println(CorbaResourceUtil.getText("servertool.locate"));
  332. } else {
  333. out.println(CorbaResourceUtil.getText("servertool.locate1"));
  334. }
  335. }
  336. final static int illegalServerId = -1;
  337. public boolean processCommand(String[] cmdArgs, ORB orb, PrintStream out)
  338. {
  339. int serverId = illegalServerId;
  340. String endPointType = IIOP_CLEAR_TEXT.value;
  341. try {
  342. // parse command
  343. String arg;
  344. int i = 0;
  345. while (i < cmdArgs.length) {
  346. arg = cmdArgs[i++];
  347. if (arg.equals("-serverid")) {
  348. if (i < cmdArgs.length)
  349. serverId = (Integer.valueOf(cmdArgs[i++])).intValue();
  350. else
  351. return parseError;
  352. } else if (arg.equals("-applicationName")) {
  353. if (i < cmdArgs.length)
  354. serverId = ServerTool.getServerIdForAlias( orb, cmdArgs[i++] ) ;
  355. else
  356. return parseError;
  357. } else if (arg.equals("-endpointType")) {
  358. if (i < cmdArgs.length)
  359. endPointType = cmdArgs[i++];
  360. }
  361. }
  362. // the server id has to be specified
  363. if (serverId == illegalServerId)
  364. return parseError;
  365. // locate the server
  366. // deactivate the server
  367. Locator locator = LocatorHelper.narrow(
  368. orb.resolve_initial_references("ServerLocator"));
  369. ServerLocation location = locator.locateServer(serverId,
  370. 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("ServerLocator"));
  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("ServerRepository"));
  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("ServerRepository"));
  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("ServerRepository"));
  591. Activator activator = ActivatorHelper.narrow(
  592. orb.resolve_initial_references("ServerActivator"));
  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("ServerRepository"));
  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("ServerActivator"));
  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("ServerActivator"));
  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("ServerActivator"));
  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. }