Zoals @swanliu aangaf, is dit te wijten aan een slechte verbinding.
Maar voordat ik de servertiming en clienttime-out aanpas, zou ik eerst proberen een betere strategie voor het poolen van verbindingen te gebruiken.
Verbindingspooling
Hibernate geeft zelf toe dat zijn strategie voor het poolen van verbindingen minimaal is
Ik gebruik persoonlijk C3P0
. er zijn echter andere alternatieven beschikbaar, waaronder DBCP
.
Bekijk
Hieronder staat een minimale configuratie van C3P0 die in mijn toepassing wordt gebruikt:
<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 -->
Bewerken:
Ik heb het configuratiebestand bijgewerkt (Referentie
), aangezien ik die voor mijn project eerder had gekopieerd en geplakt. De time-out zou het probleem idealiter moeten oplossen. Als dat niet voor u werkt, is er een dure oplossing waarvan ik denk dat je die zou kunnen bekijken:
Maak een bestand "c3p0.properties" dat zich in de hoofdmap van het klassenpad moet bevinden (d.w.z. het kan niet worden overschreven voor bepaalde delen van de toepassing). (Referentie )
# c3p0.properties
c3p0.testConnectionOnCheckout=true
Met deze configuratie wordt elke verbinding getest voordat deze wordt gebruikt. Het kan echter de prestaties van de site beïnvloeden.