Jak zdůraznil @swanliu, je to způsobeno špatným připojením.
Nicméně před úpravou časování serveru a časového limitu klienta bych nejprve zkusil použít lepší strategii sdružování připojení.
Sdružování připojení
Hibernate sám přiznává, že jeho strategie sdružování připojení je minimální
Osobně používám C3P0
. nicméně jsou k dispozici další alternativy včetně DBCP
.
Podívejte se
Níže je uvedena minimální konfigurace C3P0 použitá v mé aplikaci:
<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 -->
Upravit:
Aktualizoval jsem konfigurační soubor (Reference
), protože jsem právě zkopíroval a vložil ten pro svůj projekt dříve. Časový limit by měl v ideálním případě problém vyřešit. Pokud to pro vás nefunguje, existuje drahé řešení na kterou se myslím můžete podívat:
Vytvořte soubor „c3p0.properties“, který musí být v kořenovém adresáři cesty třídy (tj. žádný způsob, jak jej přepsat pro konkrétní části aplikace). (Reference )
# c3p0.properties
c3p0.testConnectionOnCheckout=true
S touto konfigurací je každé připojení před použitím testováno. Může to však ovlivnit výkon webu.