powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / help ! jboss+mysql пул
25 сообщений из 55, страница 2 из 3
help ! jboss+mysql пул
    #34751425
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerdaSНе ругайтесь сильно, я не так, что бы давно в java
Не так давно — это сколько? Какие книги прочитали?
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751449
PassingBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerdaS
PassingBy
Кстати, executeUpdate() надо вызывать после последнего addBatch() или вообще addBatch() не трогать.
если после последнего, то то что было вместо ?? ранее добавленно не срабатвает, выполняется только последний запрос ..

Да, верное, если addBatch(), то executeBatch() - при массовых операциях это может быть быстрее. Что касается 5000 одновременных запросов:

1) У Вас они уже есть?

2) Вы вообще в курсе, как пулы работают?

3) Откройте для себя чудесный мир кэширования.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751650
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PassingBy GerdaS
PassingBy
Кстати, executeUpdate() надо вызывать после последнего addBatch() или вообще addBatch() не трогать.
если после последнего, то то что было вместо ?? ранее добавленно не срабатвает, выполняется только последний запрос ..

Да, верное, если addBatch(), то executeBatch() - при массовых операциях это может быть быстрее. Что касается 5000 одновременных запросов:

1) У Вас они уже есть?

2) Вы вообще в курсе, как пулы работают?

3) Откройте для себя чудесный мир кэширования.

1) Пока нет, да и возможности тестирования при таком кол -ве тоже нет, по этому приходится предотвращать возможные "дыры" заранее. А 5000 появятся недели через 3 и если всё повалится не заработав, будет не красиво
2-3) В курсе. Объясняю, что меня смутило:
При работе приложения, число подключений к БД просматривал через MySql Admin.
кол -во подключений переодически увеличевалось (как потом выяснилось из за моего косяка с незакрытыми объектами. Я по (не наю почему) была уверенна, что если я закрою connect, то
статемент закрывать не обязательно ибо он закроется авт. т к "порадивший" его коннект будет закрыт ) Вот.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751681
PassingBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerdaS Я по (не наю почему) была уверенна, что если я закрою connect, то
статемент закрывать не обязательно ибо он закроется авт. т к "порадивший" его коннект будет закрыт ) Вот.

Все как раз наоборот - открытый стейтмент продолжает удерживать коннект. В принципе, если взять какой-нибудь высокоуровневый инструмент типа hibernate или jpa в любой инкарнации, от этих проблем Вы будете избавлены.

Относительно нагрузки - нет ничего хуже преждевременной оптимизации. Если же у Вас предполагается больше селектов, чем инсертов/апдейтов, все же подумайте лучше о кэшировании - это удобнее, чем коннекты считать. Ну и для стресс-тестов есть специальные инструменты, если Вам интересно, как поведет себя приложение под нагрузкой, - тот же JMeter.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751682
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хрюхрюшкин. GerdaSНе ругайтесь сильно, я не так, что бы давно в java
Не так давно — это сколько? Какие книги прочитали?

Не так давно это :
сейчас начало 4ого месяца моей проф. деятельности

java (SE) узнала в прошлом году =)) где то в сентябре.
до Java EE добралась в марте.

слушала лекции (SE), делала лабы(SE),читала Глушакова, ORellн, Api, мануалы.
+ курсы по java ee.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751684
Anatoly K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Закрытие connecta под JBoss совсем не означает его реальное закрытие...

При незакрытых ResultSet JBoss начинает жрать память (по крайней мере в MySQL). Вчера только исправил такую ошибку. Через 24 часа работы валился по OutOfMemory.

Вот накопал в сети ссылка по этому поводу.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751816
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerdaS
Не так давно это :
сейчас начало 4ого месяца моей проф. деятельности

java (SE) узнала в прошлом году =)) где то в сентябре.
до Java EE добралась в марте.

слушала лекции (SE), делала лабы(SE),читала Глушакова, ORellн, Api, мануалы.
+ курсы по java ee.
Я первый раз увидел Java в прошлом году, в июле.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751892
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PassingBy GerdaS Я по (не наю почему) была уверенна, что если я закрою connect, то
статемент закрывать не обязательно ибо он закроется авт. т к "порадивший" его коннект будет закрыт ) Вот.

Все как раз наоборот - открытый стейтмент продолжает удерживать коннект. В принципе, если взять какой-нибудь высокоуровневый инструмент типа hibernate или jpa в любой инкарнации, от этих проблем Вы будете избавлены.

Относительно нагрузки - нет ничего хуже преждевременной оптимизации. Если же у Вас предполагается больше селектов, чем инсертов/апдейтов, все же подумайте лучше о кэшировании - это удобнее, чем коннекты считать. Ну и для стресс-тестов есть специальные инструменты, если Вам интересно, как поведет себя приложение под нагрузкой, - тот же JMeter.

селектов и инсертов/апдейтов примерно 50 /50 тестировать надо, но пока об этом не ставят задачи =\
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751904
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хрюхрюшкин. GerdaS
Не так давно это :
сейчас начало 4ого месяца моей проф. деятельности

java (SE) узнала в прошлом году =)) где то в сентябре.
до Java EE добралась в марте.

слушала лекции (SE), делала лабы(SE),читала Глушакова, ORellн, Api, мануалы.
+ курсы по java ee.
Я первый раз увидел Java в прошлом году, в июле.

ну может я в чём - то, java тоже знаю хорошо, иногда просто туплю =))) .

Не буду отмазыватся разговорами, что времени не было (на изучение) и тд.

Спасибо всем огромное! Постараюсь больше не делать глупых ошибок =))
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751919
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerdaS
ну может я в чём - то, java тоже знаю хорошо, иногда просто туплю =))) .
Глядя на огромное количество ваших вопросов по Java, я так не думаю.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752015
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хрюхрюшкин. GerdaS
ну может я в чём - то, java тоже знаю хорошо, иногда просто туплю =))) .
Глядя на огромное количество ваших вопросов по Java, я так не думаю.

это было больше месяца назад =)
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752447
ДенисЛ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прочитал, вопрос возник:

почему в выше описанном примере использована такая конструкция:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 try {
........
      try {
     ...........
     } finally {
      ........
     }
} catch (){
..........
}

а не
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 try {
.......     
     
} catch (){
..........
} finally {
      ........
}
и есть ли в них какие - то принципиальные различия?
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752475
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДенисЛпрочитал, вопрос возник:

почему в выше описанном примере использована такая конструкция:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 try {
........
      try {
     ...........
     } finally {
      ........
     }
} catch (){
..........
}

а не
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 try {
.......     
     
} catch (){
..........
} finally {
      ........
}
и есть ли в них какие - то принципиальные различия?
Это кому вопрос? По моему куску кода?
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752494
ДенисЛ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ага, по этому:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 public   void  clearUser (String clientId)
    {

         try  {
            DBQuery query =  new  DBQuery();
             try  {
                query.prepare("delete from messageRep where clientId = ?");
                query.addString(clientId);

                query.executeUpdate();
            }  finally  {
                query.close();
            }

        }  catch  (SQLException sql) {
             throw   new  EJBException(sql);
        }

    }
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752506
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДенисЛага, по этому:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 public   void  clearUser (String clientId)
    {

         try  {
            DBQuery query =  new  DBQuery();
             try  {
                query.prepare("delete from messageRep where clientId = ?");
                query.addString(clientId);

                query.executeUpdate();
            }  finally  {
                query.close();
            }

        }  catch  (SQLException sql) {
             throw   new  EJBException(sql);
        }

    }


Ну что ж, возьмем оригинальный код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
 public   boolean  clearUser(String clientId){
         Connection conn = null ;
        LOG.debug("clearUser start");
        String sql ="Delete from messageRep where clientId = \""+clientId+"\";";

        Statement stmt =  null ;
        ResultSet rs =  null ;
        ResultSetMetaData rsm =  null ;
         try {
            conn = pool.getConnection();
            stmt = conn.createStatement();
           
            stmt.executeUpdate(sql);
           
        } catch (Exception ex){
            LOG.error("error");
            ex.printStackTrace();
             try  {
                conn.close();
                 this .finalize();
            }  catch  (Throwable throwable) {
                LOG.error("conn.finalize()");
            }
            LOG.debug("clearUser fin");
             return  false;

        }
        
         try  {
                conn.close();
                 this .finalize();
            }  catch  (Throwable throwable) {
                LOG.error("conn.finalize()");
            }
         LOG.debug("clearUser fin");
         return  true;
     }


Я ленивый человек. И еще я люблю, когда код хорошо читается. В моем примере он читается гораздо лучше, согласитесь. Писать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
         try  {
...
             try  {
...
            }  finally  {
...
            }
        }  catch  (SQLException sql) {
...
        }

я могу потому, что знаю — в моем блоке finally в нормальной ситуации (даже если во время выполнения запроса/апдейта возникла ошибка) не может возникнуть Exception'а, поэтому я предпочитаю его отдельно не обрабатывать. Ошибка там может возникнуть, если умер коннект к базе или кто-то что-то неправильно в этом методе наколбасил. В этом случае вполне можно проглотить исходное и выдать возникшее в методе close (потому что именно там нужно бороть проблему в первую очередь).

Писать же код вроде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
         try  {
             try  {
                a = b / x;
            }  finally  {
                a = a / z;
            }
        }  catch  (Exception e) {
            e.printStackTrace();
        }
лучше не надо.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752511
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предвосхищая дальнейшие вопросы, DBQuery — это утилитарный класс (легкая надстройка над PreparedStatement'ом), написанный мной, для облегчения работы с обращениями к базе. Умеет автоматически получать коннекты, умеет обслуживать нюансы обращения к данным в двух DB (Sybase ASE и Oracle) (в работе с датой), содержит методы для ограничения выборки, добавления данных в PreparedStatement'ы (вместо ручного указания номера), автоматического закрытия всех используемых классов (PreparedStatement, Statement, ResultSet, Connection).
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752552
Хрюхрюшкин.Предвосхищая дальнейшие вопросы, DBQuery — это утилитарный класс (легкая надстройка над PreparedStatement'ом), написанный мной, для облегчения работы с обращениями к базе. Умеет автоматически получать коннекты, умеет обслуживать нюансы обращения к данным в двух DB (Sybase ASE и Oracle) (в работе с датой), содержит методы для ограничения выборки, добавления данных в PreparedStatement'ы (вместо ручного указания номера), автоматического закрытия всех используемых классов (PreparedStatement, Statement, ResultSet, Connection).
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752554
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
открой для себя Spring JDBC
Spring JDBC работает как под J2EE, так и в любых локальных вызовах? Тем не менее, мы не используем Spring.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752641
ДенисЛ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хрюхрюшкин. ДенисЛага, по этому:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 public   void  clearUser (String clientId)
    {

         try  {
            DBQuery query =  new  DBQuery();
             try  {
                query.prepare("delete from messageRep where clientId = ?");
                query.addString(clientId);

                query.executeUpdate();
            }  finally  {
                query.close();
            }

        }  catch  (SQLException sql) {
             throw   new  EJBException(sql);
        }

    }


Ну что ж, возьмем оригинальный код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
 public   boolean  clearUser(String clientId){
         Connection conn = null ;
        LOG.debug("clearUser start");
        String sql ="Delete from messageRep where clientId = \""+clientId+"\";";

        Statement stmt =  null ;
        ResultSet rs =  null ;
        ResultSetMetaData rsm =  null ;
         try {
            conn = pool.getConnection();
            stmt = conn.createStatement();
           
            stmt.executeUpdate(sql);
           
        } catch (Exception ex){
            LOG.error("error");
            ex.printStackTrace();
             try  {
                conn.close();
                 this .finalize();
            }  catch  (Throwable throwable) {
                LOG.error("conn.finalize()");
            }
            LOG.debug("clearUser fin");
             return  false;

        }
        
         try  {
                conn.close();
                 this .finalize();
            }  catch  (Throwable throwable) {
                LOG.error("conn.finalize()");
            }
         LOG.debug("clearUser fin");
         return  true;
     }


Я ленивый человек. И еще я люблю, когда код хорошо читается. В моем примере он читается гораздо лучше, согласитесь. Писать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
         try  {
...
             try  {
...
            }  finally  {
...
            }
        }  catch  (SQLException sql) {
...
        }

я могу потому, что знаю — в моем блоке finally в нормальной ситуации (даже если во время выполнения запроса/апдейта возникла ошибка) не может возникнуть Exception'а, поэтому я предпочитаю его отдельно не обрабатывать. Ошибка там может возникнуть, если умер коннект к базе или кто-то что-то неправильно в этом методе наколбасил. В этом случае вполне можно проглотить исходное и выдать возникшее в методе close (потому что именно там нужно бороть проблему в первую очередь).

Писать же код вроде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
         try  {
             try  {
                a = b / x;
            }  finally  {
                a = a / z;
            }
        }  catch  (Exception e) {
            e.printStackTrace();
        }
лучше не надо.

кажется вы немного не поняли мой вопрос, постараюсь расширить:

почему у вас используется такая конструкция:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 public   void  clearUser (String clientId)
    {

         try  {
            DBQuery query =  new  DBQuery();
             try  {
                query.prepare("delete from messageRep where clientId = ?");
                query.addString(clientId);

                query.executeUpdate();
            }  finally  {
                query.close();
            }

        }  catch  (SQLException sql) {
             throw   new  EJBException(sql);
        }

    }

а не такая, по моему читается ещё лучше:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 public   void  clearUser (String clientId)
    {

         try  {
            DBQuery query =  new  DBQuery();
            query.prepare("delete from messageRep where clientId = ?");
            query.addString(clientId);

            query.executeUpdate();
            

        }  catch  (SQLException sql) {
             throw   new  EJBException(sql);
        }  finally  {
            query.close();
        }

    }


или в них есть принципиальная разница ?
(код автора темы не рассматриваю по ряду очевидных причин)
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752725
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДенисЛ
Ваш вариант нерабочий. Чтобы он был рабочим нужно написать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
 public   void  clearUser (String clientId)
    {
        DBQuery query =  null ;
         try  {
            query =  new  DBQuery();
            query.prepare("delete from messageRep where clientId = ?");
            query.addString(clientId);

            query.executeUpdate();
            

        }  catch  (SQLException sql) {
             throw   new  EJBException(sql);
        }  finally  {
             try  {
                 if  (query !=  null ) {
                    query.close();
                }
             catch  (SQLException sql) {
                 throw   new  EJBException(sql);
            }
        }

    }


Лично мне мой вариант нравится гораздо больше. Поэтому я пишу именно так.


Принципиальная разница только одна — в моем варианте при крахе СУБД возможно возникновение Exception'а в блоке finally не того, который был изначально. Как я уже сказал — в данном случае это допустимо.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752774
Хрюхрюшкин. открой для себя Spring JDBC
Spring JDBC работает как под J2EE, так и в любых локальных вызовах? Тем не менее, мы не используем Spring.
надстройка над ждбц. то что ты напесал уже давно написано, отшлифовано и оттестировано.
и он удобнее. уверяю.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752787
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ага, это оч удобная
надстройка над ждбц. то что ты напесал уже давно написано, отшлифовано и оттестировано.
и он удобнее. уверяю.
Зачем она нужна, если у меня уже есть своя? Я пока учусь делать самостоятельно. Как только я научусь делать всё, можно будет широко использовать чужие наработки. В этом вопросе с текущим работодателем у меня нет недопонимания :)
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752796
эт ты зря
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хрюхрюшкин. ага, это оч удобная
надстройка над ждбц. то что ты напесал уже давно написано, отшлифовано и оттестировано.
и он удобнее. уверяю.
Зачем она нужна, если у меня уже есть своя? Я пока учусь делать самостоятельно. Как только я научусь делать всё, можно будет широко использовать чужие наработки. В этом вопросе с текущим работодателем у меня нет недопонимания :)
твоя обладает рядом недостатков, которые видны невооруженным глазом.
со временем, скорее всего, поймешь какими.
есть готовое - бери да пользуйся.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752799
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эт ты зря
твоя обладает рядом недостатков, которые видны невооруженным глазом.
со временем, скорее всего, поймешь какими.
есть готовое - бери да пользуйся.
Объясни сейчас. Я хочу посмотреть, как ты вылечишь по фотографии :)
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752802
Хрюхрюшкин. эт ты зря
твоя обладает рядом недостатков, которые видны невооруженным глазом.
со временем, скорее всего, поймешь какими.
есть готовое - бери да пользуйся.
Объясни сейчас. Я хочу посмотреть, как ты вылечишь по фотографии :)
1. prepare, addString, execute. много лишних-ненужных вызовов. достаточно одного.
2. обработка эксепшнов. на..я? кому интересен SQLException, поднимите руки. в подавляющем большинстве случаев это лишние строчки.
3. finally - аналогично. зачем это? чтобы писать в каждом месте? на.уй, на.уй.
...
Рейтинг: 0 / 0
25 сообщений из 55, страница 2 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / help ! jboss+mysql пул
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]