public ServerAPP() {
        initComponents();
        System.runFinalizersOnExit(true);
        
        try {
            sendMessage("### --- ### --- ### ---   --- ### --- ### --- ###");
            sendMessage("A abrir ficheiro de configuração...");
            File XMLConfig = new File("src\\LogicClasses\\Server\\ConfigFiles\\Config.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(XMLConfig);
            sendMessage("A lêr os parâmetros...");
            doc.getDocumentElement().normalize();
            Element dataBaseElement = (Element) doc.getElementsByTagName("database").item(0);
            Element accessIntervalsElement = (Element) doc.getElementsByTagName("accessIntervals").item(0);
            
            String url = dataBaseElement.getElementsByTagName("url").item(0).getTextContent();
            int tempoScheduler = Integer.parseInt(accessIntervalsElement.getElementsByTagName("scheduler").item(0).getTextContent());
            int tempoChecksLocais = Integer.parseInt(accessIntervalsElement.getElementsByTagName("ramData").item(0).getTextContent());
            int tempoChecksBD = Integer.parseInt(accessIntervalsElement.getElementsByTagName("dbData").item(0).getTextContent());
            
            sendMessage("A criar ligações à base de dados em " + url + "...");
            sendMessage("Os delays serão (em Milisegundos):"
                    + " Scheduler: " + tempoScheduler 
                    + " | Checks Locais: " + tempoChecksLocais 
                    + " | Checks à BD: " + tempoChecksBD);
            
            this.server = new ServerImplementation(this, 
                    url,
                    dataBaseElement.getElementsByTagName("user").item(0).getTextContent(),
                    dataBaseElement.getElementsByTagName("password").item(0).getTextContent(),
                    tempoScheduler,
                    tempoChecksLocais,
                    tempoChecksBD);
            sendMessage("Ligações criadas!");
            sendMessage("A criar o servidor de RMI...");
            Registry reg = LocateRegistry.createRegistry(1099);
            reg.rebind("server", server);
            sendMessage("### --- ### --- Servidor pronto --- ### --- ###");
        } catch (RemoteException ex) {
            JOptionPane.showMessageDialog(this, "Erro ao criar o servidor de RMI... a fechar...");
            System.exit(0);
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(this, "Erro ao criar as ligações à base de dados... a fechar...");
            System.exit(0);
        } catch (NoSuchAlgorithmException ex) {
            // Erro que nunca acontece...
            JOptionPane.showMessageDialog(this, "Erro... A sair");
            System.exit(0);
        } catch (ParserConfigurationException | SAXException ex) {
            JOptionPane.showMessageDialog(this, "O ficheiro de configuração não está bem formatado... a fechar...");
            System.exit(0);
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(this, "O ficheiro de configuração não foi encontrado... a fechar...");
            System.exit(0);
        } catch (NumberFormatException ex){
            JOptionPane.showMessageDialog(this, "Os tempos de espera do ficheiro de configuração não são válidos... a fechar...");
        }
    }