@swanliuが指摘したように、これは接続不良が原因です。
ただし、サーバーのタイミングとクライアントのタイムアウトを調整する前に、まず、より適切な接続プール戦略を使用してみます。
接続プール
Hibernate自体は、接続プール戦略が最小限であることを認めています
私は個人的にC3P0
を使用しています 。ただし、DBCP
を含む他の選択肢があります 。
チェックアウト
以下は、私のアプリケーションで使用されているC3P0の最小構成です。
<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 -->
編集:
構成ファイルを更新しました(リファレンス
)、以前にプロジェクト用にコピーして貼り付けたばかりなので、タイムアウトによって問題が解決するのが理想的です。それでも問題が解決しない場合は、高価な解決策があります。 ご覧になると思います:
クラスパスのルートにある必要があるファイル「c3p0.properties」を作成します(つまり、アプリケーションの特定の部分でそれをオーバーライドする方法はありません)。 (リファレンス )
# c3p0.properties
c3p0.testConnectionOnCheckout=true
この構成では、各接続が使用される前にテストされます。ただし、サイトのパフォーマンスに影響を与える可能性があります。