2

Web アプリケーションを数回クリックしただけで、「FATAL: 申し訳ありませんが、クライアントが多すぎます」というメッセージが表示されます。このアプリは JSF 2 を使用して作成されています。なぜこれが起こっているのか、私にはまったくわかりません。私は、接続されているのは私だけであることを知っています。pgadminIII を使用して接続しているかどうかに関係なく発生します。私のアプリはとてつもなくシンプルです。

役立つ可能性のある関連ビットを次に示します。

接続に使用するシングルトン クラスを次に示します。

public class ConnectionSingleton{

private static Connection con;

public static Connection getConnection() throws SQLException
{
    if (con == null || con.isClosed())
    {

        try
        {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(
                    "jdbc:postgresql://127.0.0.1:5432/sc_data", "postgres",
                    "password");
        } catch (SQLException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    return con;
}
}

一般的な使用例を次に示します。

    try
    {
        Connection con = ConnectionSingleton.getConnection();

        PreparedStatement stat = con.prepareStatement("select * from song_song where id = ?");
        stat.setInt(1, id);
        ResultSet res = stat.executeQuery();

        if (res.next())
        {               
            id = res.getInt("id");
            name = res.getString("s_name");
            link = res.getString("s_link");
            owner = res.getInt("s_owner");
            critNumber = res.getInt("s_crit_number");

            retval="found";

        }
        else
        {
            retval = "no song";
        }

        res.close();
        con.close();
        stat.close();


    } catch (SQLException e)
    {
        retval = "no song";
        e.printStackTrace();
    }

ここに含めるものは他に考えられません。それだけです。何か案は?

4

1 に答える 1

1

通常、これが表示される場合、アプリケーション/Web サーバーは、postgresql がバックエンド接続を許可するように構成されているよりも多くの子を持つように構成されています。

于 2012-09-13T01:50:39.257 に答える