Уничтожение процессов Mysql, находящихся в спящем режиме - PullRequest
0 голосов
/ 28 марта 2010

Я подключаю базу данных MYSQL через hibernate, и у меня, кажется, есть процессы, которые не завершаются после завершения сеанса. Я вызывал сброс и закрытие на каждом сеансе, но когда я проверяю сервер, последние процессы все еще там с командой сна. Это новая проблема, с которой я столкнулся, а вчера не было. Есть ли способ, которым я могу обеспечить завершение этих процессов, когда я закончу с сеансом. Ниже приведен пример одного из моих занятий.

    public JSONObject check()
{
    //creates a new session needed to add elements to a database
    Session session = null;

    //holds the result of the check in the database
    JSONObject check = new JSONObject();
    try{
        //creates a new session needed to add elements to a database
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); 
        session = sessionFactory.openSession();


        if (justusername){

            //query created to select a username from user table
            String hquery = "Select username from User user Where username = ? ";

            //query created
            Query query = session.createQuery(hquery);

            //sets the username of the query the values JSONObject contents
            query.setString(0, username);

            // executes query and adds username string variable 
            String user = (String) query.uniqueResult();

            //checks to see if result is found (null if not found)
            if (user == null)
            {
                //adds false to Jobject if not found
                check.put("indatabase", "false");
            }
            else
            {
                check.put("indatabase", "true");
            }

            //adds check to Jobject to say just to check username
            check.put("justusername", true);

        }
        else
        {
            //query created to select a username and password from user table
            String hquery = "Select username from User user Where username = :user and password = :pass ";
            Query query = session.createQuery(hquery);

            query.setString("user", username);
            query.setString("pass", password);

            String user = (String) query.uniqueResult();

            if(user ==null)
            {
                check.put("indatabase", false);
            }
            else
            {
                check.put("indatabase", true);
            }

            check.put("justusername", false);

        }


        }catch(Exception e){

        System.out.println(e.getMessage());
            //logg.log(Level.WARNING, " Exception", e.getMessage());

    }finally{
    // Actual contact insertion will happen at this step

        session.flush();
        session.close();

    }
    //returns Jobject
    return check;
}

1 Ответ

1 голос
/ 28 марта 2010

Вы должны позвонить sessionFactory.close() в конце, чтобы освободить все соединения в пуле соединений.

Обратите внимание, что обычно у вас должна быть одна фабрика сессий для всего приложения, которая затем может создавать столько сессий, сколько вам нужно. Создание фабрики сессий очень дорого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...