Creare un connection pool in Glassfish

Creare una connessione ad un database è un’operazione decisamente costosa che può impattare negativamente sulle performance delle nostre applicazioni. Per questo motivo sono stati introdotti i connection pool che in parole semplici non sono altro che un blocco di connessioni sempre aperte e disponibili all’occorrenza, la cui gestione è a totale carico del server. In questo modo i tempi di risposta risultano decisamente più bassi.

In questo post vedremo come creare un connection pool in Glassfish agganciandoci ad un database MySql.

Poiché Glassfish non dispone del connector per il database dovremo scaricarlo dal sito https://dev.mysql.com/downloads/connector/j/ e, dopo aver scompattato il file zip, copiare il jar nella cartella glassfish-4.x.x/domains/domain1/lib/ext.

N.B. La versione 4.1.1 di Glassfish distribuita con Netbeans presenta un bug che impedisce la creazione del pool generando la seguente eccezione

java.lang.IllegalStateException: getOutputStream() has already been called for this response

Ci sono in giro dei possibili workaround ma soluzione migliore resta l’installazione della versione 4.1.2 che include un bugfix e che si può scaricare da http://download.java.net/glassfish/4.1.2/release/glassfish-4.1.2.zip

Per prima cosa avviamo Glassfish da Netbeans (o altro IDE) selezionandolo dal tab Servers

avvio-glassfish-netbeans

oppure da riga di comando con

./asadmin start-domain domain1

dopo esserci posizionati nella cartella bin all’interno di quella di installazione del server.

avvio-glassfish-cmd

Accediamo alla console amministrativa che risponde all’indirizzo http://localhost:4848 e nella sezione dedicata a JDBC scegliamo la voce JDBC Connection Pools.

glassfish-connection-pool

Sono elencati tutti i connection pool disponibili sul server e possiamo aggiungere il nostro facendo click su New.

Ci verranno richiesti il nome da attribuire (PlayersPool), il tipo di risorsa (javax.sql.DataSource) e il dbms da utilizzare (MySql).

connection-pool1

Il passo successivo consiste nell’impostazione dei parametri di connessione al database. Di default Glassfish fornisce una lista quasi infinita di proprietà che consentono di settare un gran numero di parametri ma che nel nostro caso possono risultare piuttosto fuorvianti.

connection-pool-remove-properties

Quindi per prima cosa cancelliamo tutto poi aggiungiamo (premendo sul tasto Add Property) solo quelle strettamente necessarie:

  • ServerName (localhost)
  • Port (3306)
  • DatabaseName (Players)
  • Username (root)
  • Password (xxxxx)

E’ superfluo dire che tali impostazioni devono rispecchiare quelle del dbms in uso.

connection-pool-imposta-proprieta

Confermiamo il tutto premendo il tasto Finish ed assicuriamoci che tutto sia a posto facendo un semplice ping.

connection-pool-ping

Ora il pool è pronto e può essere associato ad una risorsa JNDI (Java Naming and Directory Interface). Accediamo a JDBC Resources e facciamo click su New.

nuova-risorsa-jdbc

Impostiamo il nome della nostra risorsa (jdbc/players) e scegliamo il pool corretto dalla lista proposta confermando con OK.

jndi-pool-resource

Ecco fatto! Ora potremo far riferimento alla nostra connessione tramite JNDI all’interno delle persistence unit o delle annotazioni CDI sfruttando tutti i vantaggi del pooling.

Ritieni che il post sia interessante? Se ti va puoi confermare le mie competenze o aggiungere una segnalazione sul mio profilo LinkedIn.

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

Utilizzando il sito, accetti l'invio dei cookies da parte nostra. Maggiori informazioni

Questo sito utilizza i cookies per fornire la migliore esperienza di navigazione possibile. Continuando ad utilizzarlo senza modificare le impostazioni o cliccando su "Accetta" acconsenti al loro utilizzo.

Chiudi