Jak zauważył @swanliu, jest to spowodowane złym połączeniem.
Jednak przed dostosowaniem czasu serwera i limitu czasu klienta najpierw spróbowałbym użyć lepszej strategii łączenia połączeń.
Zespół połączeń
Sam Hibernate przyznaje, że jej strategia łączenia połączeń jest minimalna
Osobiście używam C3P0
. jednak dostępne są inne alternatywy, w tym DBCP
.
Sprawdź
Poniżej znajduje się minimalna konfiguracja C3P0 używana w mojej aplikacji:
<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 -->
Edytuj:
Zaktualizowałem plik konfiguracyjny (Informacje
), ponieważ właśnie skopiowałem i wkleiłem ten do mojego projektu wcześniej. Limit czasu powinien idealnie rozwiązać problem. Jeśli to nie zadziała, istnieje drogie rozwiązanie na które mógłbyś rzucić okiem:
Utwórz plik „c3p0.properties”, który musi znajdować się w katalogu głównym ścieżki klasy (tzn. nie ma możliwości nadpisania go dla poszczególnych części aplikacji). (Informacje )
# c3p0.properties
c3p0.testConnectionOnCheckout=true
W tej konfiguracji każde połączenie jest testowane przed użyciem. Może to jednak wpłynąć na wydajność witryny.