Som @swanliu påpegede, skyldes det en dårlig forbindelse.
Men før jeg justerer servertimingen og klienttimeout, ville jeg først prøve at bruge en bedre forbindelsespoolingstrategi.
Forbindelsespooling
Hibernate indrømmer selv, at dets forbindelsespoolingstrategi er minimal
Jeg bruger personligt C3P0
. der er dog andre tilgængelige alternativer inklusive DBCP
.
Tjek ud
Nedenfor er en minimal konfiguration af C3P0 brugt i min applikation:
<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 -->
Rediger:
Jeg opdaterede konfigurationsfilen (Reference
), da jeg lige havde kopieret indsat den til mit projekt tidligere. Timeoutet burde ideelt set løse problemet. Hvis det ikke virker for dig, er der en dyr løsning som jeg synes du kunne se på:
Opret en fil "c3p0.properties", som skal være i roden af klassestien (dvs. ingen måde at tilsidesætte den for bestemte dele af applikationen). (Reference )
# c3p0.properties
c3p0.testConnectionOnCheckout=true
Med denne konfiguration testes hver forbindelse, før den tages i brug. Det kan dog påvirke webstedets ydeevne.