0

Windows Azure でホストしたい、glassfish 3.1.1 にデプロイされた Java EE Web アプリケーションがあります。

アプリケーションは hibernate を jpa として使用します。


Azure データベース用の JDBC 接続プールを定義しました。

(基本的に、これらはデフォルトです)

初期および最小プール サイズ: 8 接続

最大プール サイズ: 32 接続

プールのサイズ変更数量: 2 接続

アイドル タイムアウト: 300 秒

最大待機時間: 60000 ミリ秒


追加のプロパティ:

ユーザー: user@serverName

サーバー名: serverName.database.windows.net

パスワード:マイパス

データベース名: mydatabase


グラスフィッシュ インターフェイスから ping を実行すると動作するため、提供するプロパティは問題ありません。

新しいjdbc接続プール(Azure用のもの)を設定すると、SQL Azureデータベースにテーブルが作成されました(「hibernate.hbm2ddl.auto」を更新するように設定しています)-データベース接続に問題はありません/パラメーター。

サーバーが起動した直後にアプリケーションがデータベースを使用する場合、すべてがうまくいきます(データを取得/保存できます)

アプリケーションがしばらくアイドル状態になってからデータベースを使用しようとすると、次のようになります。

例外へのリンク

(glassfish 管理者から) 接続をフラッシュすると、一定期間アイドル状態になるまで、再び動作し始めます。

基本的にデータベース操作を実行していれば問題なく動作しますが、しばらくデータベース操作がないと、次のdb操作でその例外が発生します。

これをグーグルで検索しましたが、Azureデータベースサーバーがアイドル接続を閉じていることに関係しているようですが、問題の解決策が見つかりませんでした.

PostgreSql を使用しているときにこの問題が発生したことはありません

4

1 に答える 1

1

この問題の原因として考えられるのは、SQL Azure が 5 分後にアイドル状態の接続を閉じることです。この問題を回避するには、接続を閉じて、新しい接続を作成する必要があります。一般に、他のデータベースに接続している場合でも、アイドル状態の接続を閉じることをお勧めします。これにより、システム リソースの使用量を減らすことができます。

于 2012-04-26T06:35:17.307 に答える