Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Accesso al db da un pagina JSP?

    Ragazzi per un progetto devo fare una pagina JSP che accede ed esegue query su un database.
    Ho deciso per motivo di convenienza/costrizione da parte del docente, di inserire la connessione nel metodo init() della JSP, in modo da condividere solo una connessione e non una per ogni istanza della JSP.
    Ho dichiarato il metodo jspInit() e le variabili globali per la connessione in questo modo:
    codice:
    <%!
        Connection Conn = null;
        String URL = "jdbc:oracle:thin:@143.225.178.4:1521/xe";
        String USER = "lbd2gr10";
        String PASS = "22011984";
        String driver = "oracle.jdbc.driver.OracleDriver";
    
        public void jspInit() { 
            try {
                Class.forName(driver);
            }
            catch (ClassNotFoundException err) {  }
            try {
                Conn = DriverManager.getConnection(URL,USER,PASS);
            }
            catch (SQLException err) { }
        } %>
    Non fate caso al fatto che manchi la gestione delle eccezioni, non ho ancora deciso come implementarla per adesso. Tutto questo codice funziona e la connessione va, insomma si connette correttamente.

    Il problema viene adesso, il valore di Conn viene settato al momento della creazione della classe, insomma quando la JSP viene generata per la priva volta giusto, se la connessione al momento era ok la variabile Conn viene settata correttamente. Ma se per esempio dopo 2 min la connessione con il DB cade, la variabile Conn conserva comunque il suo stato e quindi per lei io sono connesso ma quando faccio la query mi da errore.

    Come posso risolvere, mi serve un controllo, dove devo metterlo? sullo Statement, sulla connessione? Non so davvero da dove cominciare, ho fatto qualche tentativo ma niente purtroppo! Non funziona... il problema rimane!

    Avevo pensato di fare il controllo quando assegno lo statement nel metodo _jspService in questo modo:
    codice:
    try {
        stmt = Conn.createStatement();
    }
    catch (SQLException e) {
     < Ritenta la connessione al db >
    }
    Ma non è sufficiente, cioè non funziona se la connessione manca quindi ok, ma se poi la connessione torna disponibile non se ne rende conto e rimane in messaggio di errore...

    Spero di essere stato sufficientemente chiaro e soprattutto che qualcuno sappia/possa indirizzarmi sulla strada giusta e suggerirmi il controllo adatto.

  2. #2
    Ciao,
    io non mi preoccuperei di avere una sola connessione per tutte le istanze della jsp:
    a questo ci pensa l'application server mettendo a disposizione un pool di connessioni.

    Io implementerei una classe Factory per il collegamento e la gestione dei dati sul DB fatta solo di metodi statici, è qui che è importante avere poco carico, ovvero grazie alla factory che ha i metodi statici disponibili a livello di classe e non di oggetto.

    spero di essere stato abbastanza chiaro.
    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  3. #3
    Purtroppo non ho moltissima dimestichezza con questi strumenti, di conseguenza non che ci abbia capito poi troppo, ma comunque do uno sguardo su google e vedo che ne viene fuori.

    Sono alle prime armi con questi strumenti e volevo fare una cosa sistemata per ovviare a questo problema senza però ingigantire più di tanto il progetto, e solo a fini didattici e non pratici quindi non conviene fare una cosa troppo complessa.

    Grazie comunque tanto per la risposta mirko. Vedrò che cosa ne tiro fuori.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.