Come ha sottolineato @swanliu, è dovuto a una cattiva connessione.
Tuttavia, prima di regolare i tempi del server e il timeout del client, proverei prima a utilizzare una migliore strategia di pooling delle connessioni.
Collegamento di connessioni
Hibernate stesso ammette che la sua strategia di pool di connessioni è minima
Personalmente uso C3P0
. tuttavia sono disponibili altre alternative tra cui DBCP
.
Guarda
Di seguito è riportata una configurazione minima di C3P0 utilizzata nella mia applicazione:
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.acquire_increment">1</property>
<property name="c3p0.idle_test_period">100</property> <!-- seconds -->
<property name="c3p0.max_size">100</property>
<property name="c3p0.max_statements">0</property>
<property name="c3p0.min_size">10</property>
<property name="c3p0.timeout">1800</property> <!-- seconds -->
Modifica:
Ho aggiornato il file di configurazione (Riferimento
), poiché avevo appena copiato e incollato quello per il mio progetto in precedenza. Il timeout dovrebbe idealmente risolvere il problema, se non funziona per te c'è una soluzione costosa a cui penso potresti dare un'occhiata:
Crea un file "c3p0.properties" che deve trovarsi nella radice del percorso di classe (cioè non c'è modo di sovrascriverlo per parti particolari dell'applicazione). (Riferimento )
# c3p0.properties
c3p0.testConnectionOnCheckout=true
Con questa configurazione ogni connessione viene testata prima di essere utilizzata. Potrebbe tuttavia influire sulle prestazioni del sito.