1 package uba.db.sql.server;
2
3 import org.apache.commons.logging.Log;
4 import org.apache.commons.logging.LogFactory;
5
6 /***
7 * Inicializa el servidor.<br>
8 * Esta es la clase principal del servidor (que puede ser ejecutada desde la
9 * linea de comandos). Para más información sobre los argumentos de linea de
10 * comandos que acepta el servidor ver
11 * {@link uba.db.sql.server.ServerCommandLineArguments}.
12 *
13 * @version $Revision: 1.1 $
14 */
15 public class ServerLauncher {
16 private static final Log log = LogFactory.getLog(ServerLauncher.class);
17
18 /***
19 * Arranque del servidor.
20 *
21 * @param args
22 */
23 public static void main(String[] args) {
24 ServerCommandLineArguments cmdArguments = processArguments(args);
25
26 Server server = new Server(cmdArguments.serverAddress(), cmdArguments.databaseDirectory());
27
28 startServer(server);
29 waitForServerFinalization(server);
30 }
31
32 private static void waitForServerFinalization(Server server) {
33 synchronized (server) {
34
35
36 try {
37 server.wait();
38 } catch (InterruptedException e) {
39 log.error("Se interrumpio la ejecucion del server", e);
40 }
41 }
42 }
43
44 private static void startServer(Server server) {
45 try {
46 server.start();
47 } catch (Exception e) {
48 log.error("No se pudo inicializar el servidor", e);
49 System.exit(-1);
50 }
51 }
52
53 private static ServerCommandLineArguments processArguments(String[] args) {
54 ServerCommandLineArguments commandLineArguments = null;
55 try {
56 commandLineArguments = new ServerCommandLineArguments(args);
57 } catch (InvalidServerCommandLineArguments e) {
58 log.error("No se pudo inicializar el servidor", e);
59 System.exit(-1);
60 }
61
62 return commandLineArguments;
63 }
64 }