Visualizzazione dei risultati da 1 a 10 su 10

Discussione: jdbc e mysql

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    312

    jdbc e mysql

    Salve a tutti,
    sto cercando di connettermi ad un db mysql con java. leggendo un po' in giro ho trovato oltre alla documentazione ufficiale la pillola di aleFT.
    Dato che vorrei usare tomcat per una web application cosa dovrei fare? Aprire una classica connessione come dice leleFT o seguire questa guida http://dev.mysql.com/doc/refman/5.1/...enotes-tomcat. Quale è la differenza?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: jdbc e mysql

    Originariamente inviato da lio.b
    Quale è la differenza?
    Una Connection la si può ottenere in 2 modi: nel modo "classico" con getConnection() di DriverManager oppure da un DataSource.
    Ci sono differenze ovviamente a livello concettuale e anche a livello tecnico.

    Comunque le spiegazioni le trovi qui:
    - Establishing a Connection
    - Getting Started with the JDBC API (in particolare nelle sezioni "Opening a Connection" e "DataSource Overview").
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    312
    Innanzitutto grazie.
    Conosco java se ma nulla riguardo EE. Ho dato un'occhiata ai link ma non mi son tanto chiare le differenze. Quello che ho capito è che entrambe portano allo stesso risultato.
    Dice che usare data source è meglio ma francamente non capisco il perchè. Con il Driver manager so come si fa ma con l'altro metodo? E dove trovo la spiegazione a tutti quei parametri che sono sulla guida di mysql?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da lio.b
    Conosco java se ma nulla riguardo EE. Ho dato un'occhiata ai link ma non mi son tanto chiare le differenze. Quello che ho capito è che entrambe portano allo stesso risultato.
    Dice che usare data source è meglio ma francamente non capisco il perchè.
    Le caratteristiche e i vantaggi del DataSource sono ben chiare e descritte qui.

    Originariamente inviato da lio.b
    Con il Driver manager so come si fa ma con l'altro metodo? E dove trovo la spiegazione a tutti quei parametri che sono sulla guida di mysql?
    Su quella pagina che hai indicato tu comunque c'è tutta la spiegazione sul codice Java che si deve usare e su come configurare Tomcat o altro application server.

    Cioè alla fin fine se guardi il codice iniziale è poi solo:

    codice:
    InitialContext ctx = new InitialContext();
    
    DataSource ds = (DataSource) ctx.lookup("java:comp/env/.....nome designato....");
    
    Connection conn = null;
    Statement stmt = null;
    
    try {
        conn = ds.getConnection();
    
        .... da qui in poi è abbastanza normale ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    312
    Ok, perdona la mia ignoranza ed il mio non buono inglese. Da qul che si evince li usando il data source rimandi tutta la gestione delle connessioni all'application server anzichè all'applicazione.... il disaccopiiare è sempre una buona cosa. Fin qui ci sono ma non riesco a immaginare uno scenario nel quale potrei trarre benefici.
    Se ad esempio dvessi spostare la mia applicazione da un server all'altro usando il drivermanager cosa dovrei reimpostare?????

    Riguardo la guida mysql beato te che li capisci i parametri, a me ne sugge qualcuno tipo:
    testonborrow,testwhileidle,timeBetweenEvictionRuns Millis,validationQuery,maxIdle e soprattutto il ResourceParams name.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da lio.b
    il disaccopiiare è sempre una buona cosa. Fin qui ci sono ma non riesco a immaginare uno scenario nel quale potrei trarre benefici.
    Non è l'unico vantaggio.

    The second major advantage is that the DataSource facility allows developers to implement a DataSource class to take advantage of features like connection pooling and distributed transactions. Connection pooling can increase performance dramatically by reusing connections rather than creating a new physical connection each time a connection is requested.

    Originariamente inviato da lio.b
    Se ad esempio dvessi spostare la mia applicazione da un server all'altro usando il drivermanager cosa dovrei reimpostare?????
    Niente, perché tipicamente il nome della classe lo si può "cablare" nel sorgente e idem l'URL se non cambia nulla di particolare come l'host o il nome del DB.

    Ma comunque sono due (2) dati, che puoi anche rendere più facilmente configurabili in un tuo file di properties, xml o roba del genere.

    Originariamente inviato da lio.b
    Riguardo la guida mysql beato te che li capisci i parametri, a me ne sugge qualcuno tipo:
    testonborrow,testwhileidle,timeBetweenEvictionRuns Millis,validationQuery,maxIdle e soprattutto il ResourceParams name.
    Ma lì ci sono commenti per ogni parametro e comunque vengono anche forniti dei valori di esempio che possono di certo essere presi per buoni e sensati ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    312
    Non capisco questi 2: il resource name dovrebbe essere il jdni associato, auth non so. Invece il ResourceParams name con quei strani valori cos'è?
    <Resource name="jdbc/MySQLDB"
    auth="Container"
    type="javax.sql.DataSource"/>

    <!-- The name you used above, must match _exactly_ here!

    The connection pool will be bound into JNDI with the name
    "java:/comp/env/jdbc/MySQLDB"
    -->

    <ResourceParams name="jdbc/MySQLDB">
    <parameter>
    <name>factory</name>
    <value>org.apache.commons.dbcp.BasicDataSourceFact ory</value>
    </parameter>
    Inoltre la guida dice he il file si trova in $CATALINA_HOME/conf/server.xml. Avendo installato tomcat insieme a netbeans quel file non ce l'ho, almeno in quel percorso. Dove lo vado a piazzare?
    Dici che quei parametri hanno senso....poniamo l'ipotesi che nella mia appliczione un utente inserisce le credenziali per accedere ed una servlet fa un controllo sul db per controllare se è presente. Poniamo che al massimo le connessioni attive sono 5 e gli utenti son tanti. Nel momento che un sesto utente tenta di loggarsi quando son già presenti 5 connessioni aperte che succede?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da lio.b
    Non capisco questi 2: il resource name dovrebbe essere il jdni associato, auth non so. Invece il ResourceParams name con quei strani valori cos'è?
    Il <Resource> del server.xml di Tomcat è spiegato qui.

    E come è spiegato nella tabella appena sotto, auth può essere Application o Container.

    Originariamente inviato da lio.b
    Nel momento che un sesto utente tenta di loggarsi quando son già presenti 5 connessioni aperte che succede?
    Generalmente c'è un numero massimo di connessioni per il pool (salvo configurazioni particolari che permettono un numero "unbounded", illimitato ma presumibilmente solo per prove).
    Se non c'è una Connection disponibile, si rimane bloccati lì nel ds.getConnection() e se non sbaglio si può anche generalmente impostare un timeout oltre cui viene lanciata una eccezione.

    Ma la questione è un'altra: per quanto tempo usi la Connection? Esattamente come per i lock sugli oggetti in Java o in generale per risorse limitate, le prestazioni dipendono dal numero di risorse disponibili e da quanto tempo le usi!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    312
    Possiamo anche starci fino a domani ma se non capisco alcune cose e ti mi rimandi a link mi cambia poco...
    grazie lo stesso

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    312
    Scusami una cosa.
    Il maxIdle dovrebbero essere il numero massimo di connessioni aperte non utilizzate, ossia gestite dal connection pool. Se nella mia applicazione bisogna fare un login per entrare dovrei metterlo a zero? Altrimenti resterebbero aperte connessioni invece l'utente deve autenticarsi o no?

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.