powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / help ! jboss+mysql пул
55 сообщений из 55, показаны все 3 страниц
help ! jboss+mysql пул
    #34750710
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
возникла такая проблема, я уже и не знаю чего делать ибо вроде всё посмотрела:

К БД подключаюсь приложением через пул потоков, в придожении 3 класса реализующие подключение к бд. Через админ. консоль видно, что есть свободные пулы БД,(СУБД и war лежат на одном сервере) когда клиента запускаю со своей машины (т е удалённо) всё ок используются старые пулы, если
запускаю с того же сервера на котором всё это добро лежит то создаётся 1 новый , и берётся 1 старый.

Вопрос такой: в каких случаях создаётся новый пул ?(через админ консоль видно что существующие пулы не используются!)


я задолбалась уже =(((
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751088
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно то же самое изложить ортодоксальной терминологией с общепринятой семантикой

и перестанте долбаться
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751193
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подключаюсь так
Код: 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.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
/**
 * Created by IntelliJ IDEA.
 * User: Gerda
 * Date: 13.08.2007
 * Time: 16:47:14
 * To change this template use File | Settings | File Templates.
 */
 package  com.bcc.vasp.admin;

 import  org.apache.log4j.Logger;

 import  javax.naming.Context;
 import  javax.naming.InitialContext;
 import  javax.naming.NamingException;
 import  javax.sql.DataSource;
 import  java.sql.*;

 public   class  DBAdmin {

    DataSource pool;
     private   static   final  Logger LOG = Logger.getLogger("DBAdmin");
     public  DBAdmin(){

        LOG.debug("DBAdmin start");
        Context env =  null ;
       


         try {

            env = (Context)  new  InitialContext().lookup("java:comp/env");
          
            pool = (DataSource) env.lookup("jdbc/MessageBD");
           
            
             if (pool ==  null ){
                LOG.error("jdbc/MessageBD is an unknown DataSource");
            }

        }  catch  (Exception ne){
            LOG.error("error: ");
            ne.printStackTrace();
        }
    }


    
     public   boolean  setNewUser(String clientId){
        LOG.debug("setNewUser start");
        Connection conn = null ;
        PreparedStatement pstmt =  null ;
        ResultSet rs =  null ;
        ResultSetMetaData rsm =  null ;
         try {
            

            conn = pool.getConnection();
            
            pstmt = conn.prepareStatement("insert into messageRep(clientId,messageType, messageValue,received) value(?,?,NULL,true);");
           
            
            pstmt.setString( 1 ,clientId);
            pstmt.setString( 2 ,"DATA");
            
            pstmt.addBatch();
           
            pstmt.executeUpdate();

            pstmt.setString( 1 ,clientId);
            pstmt.setString( 2 ,"CLIENT");
            pstmt.addBatch();
            

             pstmt.executeUpdate();
             
          
        } catch (Exception ex){
            LOG.error("error");
            ex.printStackTrace();
             try  {
                conn.close();
                 this .finalize();
            }  catch  (Throwable throwable) {
                LOG.error("conn.finalize()");
            }
            LOG.debug("setNewUser fin");
             return  false;

        }
         try  {
            conn.close();
             this .finalize();
        }  catch  (Throwable throwable) {
            LOG.error("conn.finalize()");
        }
        LOG.debug("setNewUser fin");
         return  true;
     }
      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;
     }



         protected   void  finalize()  throws  Throwable {
                 super .finalize();

     }

}
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751202
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас отвратительный подход к работе как с connection'ами, так и в общем.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751227
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
=((
а по подробней ?



PS Ошибку нашла.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751233
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, метод clearUser у меня выглядел бы вот так
Код: 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);
        }

    }

Ну а если по существу — если вы уверены, что во время работы этих методов не возникает ошибок при закрытии коннекта, то не парьтесь — пусть JBoss сам решает, как управлять коннектами.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751276
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не парится не могу , ибо без this.finalize(); коннекты пладились очень быстро , что не есть хорошо т к при превышении мак допустимого количества одновременных соединений всё летит .. и спасает только перезапуск jboss.

проблема осталась, =(( подключение к БД не куда не деваются
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751280
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerdaSне парится не могу , ибо без this.finalize(); коннекты пладились очень быстро , что не есть хорошо т к при превышении мак допустимого количества одновременных соединений всё летит .. и спасает только перезапуск jboss.

проблема осталась, =(( подключение к БД не куда не деваются
Не трогайте метод finalize. Вы всё-равно не знаете, для чего он придуман и когда может вызываться.
Каково максимальное число разрешенных соединений в Jboss'е?
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751286
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы АБСОЛЮТНО уверены, что ошибок не возникает? Почему вы не выдаете наружу EJBException, при возникновении ошибок? Зачем вы по-тихому какаете в лог?
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751297
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сейчас 10.
число критично тк планируется оч большое число одновременных подключений , по этому надо точно знать сколько подключений возникает при работе приложения по логике их не больше 3 , а они растут растут и всё рушится =\
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751315
PassingBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
До закрытия коннекта надо открытые стейтменты закрывать, а то как раз таки исключение и вылетит (они держат коннект), которое Вы никак не обрабатываете, по сути. И зачем трогать финализатор?
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751322
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хрюхрюшкин.Вы АБСОЛЮТНО уверены, что ошибок не возникает? Почему вы не выдаете наружу EJBException, при возникновении ошибок? Зачем вы по-тихому какаете в лог?

1) если ошибка возникнет то в логе отобразится (почему то не сомневаюсь )сие:
LOG.error("error: ");
в консоле можно будет посмотреть подробней

ne.printStackTrace();
вот от сюда:
} catch (Exception ne){
LOG.error("error: ");
ne.printStackTrace();
}

2) EJBException не получится выдать т к это не EJB , а сервлет + pojo
3) Читала, что накакать в лог будет этичней , чем вывалить на пользователя
эксепшен
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751331
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PassingByДо закрытия коннекта надо открытые стейтменты закрывать, а то как раз таки исключение и вылетит (они держат коннект), которое Вы никак не обрабатываете, по сути. И зачем трогать финализатор?

хм хм . что бы убить всё.

=))
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751339
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PassingByДо закрытия коннекта надо открытые стейтменты закрывать, а то как раз таки исключение и вылетит (они держат коннект), которое Вы никак не обрабатываете, по сути. И зачем трогать финализатор?
+1
Я уже отвык на это обращать внимание :) Привык к хорошему
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751367
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerdaS
1) если ошибка возникнет то в логе отобразится (почему то не сомневаюсь )сие:
LOG.error("error: ");
в консоле можно будет посмотреть подробней

ne.printStackTrace();
вот от сюда:
} catch (Exception ne){
LOG.error("error: ");
ne.printStackTrace();
}

2) EJBException не получится выдать т к это не EJB , а сервлет + pojo
3) Читала, что накакать в лог будет этичней , чем вывалить на пользователя
эксепшен
1) Ну, если вы видите в логе все свои отладочные сообщения и не настроили при возникновении ошибок какать в другой лог — тогда да.
2) Ммм, опять дурацкая привычка... Выдавайте ServletException либо какой-то еще, который система поймет без дополнительных телодвижений.
3) Это зависит от... В нормальной ситуации ошибок подобных вашей быть в принципе не должно, я правильно понимаю? Соответственно, если ошибка произошла — что-то пошло вразнос и лучше это сразу узнать. У вас ведь не интернет, а корпоратив?
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751369
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerdaS PassingByДо закрытия коннекта надо открытые стейтменты закрывать, а то как раз таки исключение и вылетит (они держат коннект), которое Вы никак не обрабатываете, по сути. И зачем трогать финализатор?

хм хм . что бы убить всё.

=))
Когда придет время — оно само всё убьется.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751394
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хрюхрюшкин. GerdaS
1) если ошибка возникнет то в логе отобразится (почему то не сомневаюсь )сие:
LOG.error("error: ");
в консоле можно будет посмотреть подробней

ne.printStackTrace();
вот от сюда:
} catch (Exception ne){
LOG.error("error: ");
ne.printStackTrace();
}

2) EJBException не получится выдать т к это не EJB , а сервлет + pojo
3) Читала, что накакать в лог будет этичней , чем вывалить на пользователя
эксепшен
1) Ну, если вы видите в логе все свои отладочные сообщения и не настроили при возникновении ошибок какать в другой лог — тогда да.
2) Ммм, опять дурацкая привычка... Выдавайте ServletException либо какой-то еще, который система поймет без дополнительных телодвижений.
3) Это зависит от... В нормальной ситуации ошибок подобных вашей быть в принципе не должно, я правильно понимаю? Соответственно, если ошибка произошла — что-то пошло вразнос и лучше это сразу узнать. У вас ведь не интернет, а корпоратив?
1) Да
2) Это не дурачкая пивычка, а "по корпоративным обстоятельствам" тут я бессильна, пока
3)Инет , при чём там браузер "особый" , не буду в подробности вдаватся, но не очень будет красиво если что то вывалится
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751396
PassingBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerdaS PassingByДо закрытия коннекта надо открытые стейтменты закрывать, а то как раз таки исключение и вылетит (они держат коннект), которое Вы никак не обрабатываете, по сути. И зачем трогать финализатор?

хм хм . что бы убить всё.

=))

Финализатор вообще-то мало что убивает. Он вообще не всегда вызывается и трогать его крайне не рекомендуется ввиду бесполезности. Возможно, больший успех принесет вызов gc в цикле (это шутка, не делайте этого). Просто закрывайте все, что открыли в том же методе и будет вам щастье (тм). Все - это в данном случае любой созданный экземпляр ResultSet, Statement, PreparedStatement и самого Connection. Кстати, executeUpdate() надо вызывать после последнего addBatch() или вообще addBatch() не трогать.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751401
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хрюхрюшкин. GerdaS PassingByДо закрытия коннекта надо открытые стейтменты закрывать, а то как раз таки исключение и вылетит (они держат коннект), которое Вы никак не обрабатываете, по сути. И зачем трогать финализатор?

хм хм . что бы убить всё.

=))
Когда придет время — оно само всё убьется.

если 5 000 польз. по 3 подключения на каждое приложение, кол -во подключений разрастается, (ждём пока jm сама всё почистит) , разрастается и .... ппревеД
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751407
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerdaS

Код: plaintext
1.
2.
pstmt.addBatch();
pstmt.executeUpdate();

Бессмысленный порядок методов.
Либо addBatch / executeBatch, либо executeUpdate
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751418
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerdaS
если 5 000 польз. по 3 подключения на каждое приложение, кол -во подключений разрастается, (ждём пока jm сама всё почистит) , разрастается и .... ппревеД
Вы просто не понимаете, что вы говорите.
Подключение должно закрыться и быть отдано в пул в момент вызова
Код: plaintext
conn.close();
.
Если этого не происходит — ищите у себя ошибку. Её вам уже указали и не раз.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751419
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PassingBy GerdaS PassingByДо закрытия коннекта надо открытые стейтменты закрывать, а то как раз таки исключение и вылетит (они держат коннект), которое Вы никак не обрабатываете, по сути. И зачем трогать финализатор?

хм хм . что бы убить всё.

=))

Финализатор вообще-то мало что убивает. Он вообще не всегда вызывается и трогать его крайне не рекомендуется ввиду бесполезности. Возможно, больший успех принесет вызов gc в цикле (это шутка, не делайте этого). Просто закрывайте все, что открыли в том же методе и будет вам щастье (тм). Все - это в данном случае любой созданный экземпляр ResultSet, Statement, PreparedStatement и самого Connection. Кстати, executeUpdate() надо вызывать после последнего addBatch() или вообще addBatch() не трогать.

в данном случае убил, то что не убилось conn.Close
=\
PassingBy
Кстати, executeUpdate() надо вызывать после последнего addBatch() или вообще addBatch() не трогать.
если после последнего, то то что было вместо ?? ранее добавленно не срабатвает, выполняется только последний запрос ..
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751422
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerdaS
Милая девушка. Откройте книжку и внимательно-внимательно перечитайте concepts языка Java, потом concepts технологии J2EE, потом документацию JBoss.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751423
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В языке Java прочитайте про все моменты, включая технологию работы с JDBC.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34751424
GerdaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сейчас перепишу =))) .. в поисках счастья... Не ругайтесь сильно, я не так, что бы давно в java
...
Рейтинг: 0 / 0
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
help ! jboss+mysql пул
    #34752887
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ок. то что не нравицо мне:
1. prepare, addString, execute. много лишних-ненужных вызовов. достаточно одного.
2. обработка эксепшнов. на..я? кому интересен SQLException, поднимите руки. в подавляющем большинстве случаев это лишние строчки.
3. finally - аналогично. зачем это? чтобы писать в каждом месте? на.уй, на.уй.
1) Видел я вызовы одной строкой (prepare("bla.bla").addString("dsads").execute()). Иногда даже сам делал. Фтопку. Это уже за гранью нормальной лени.
2) Да, возможно, есть такой момент. Мне лично он не нужен. Потом, возможно, переделаю.
3) Не понимаешь, зачем нужен finally? В finalizer'е пишешь нужный код??? Фтопку тебя :)
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752889
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сократить тре вызова можно до двух.
Путем prepare("ddsds").execute(userId). Этот подход тоже фтопку.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752893
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, по поводу Exception'ов, может товарищ не в курсе. В EJB нормальной практикой является вызов исключения EJBException внутри методов EJB бина. Чтобы не было мучительно больно, других Exception'ов наружу лучше не выдавать.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752918
доказать :)
иди открой уже Spring и не гадай.
...
Рейтинг: 0 / 0
help ! jboss+mysql пул
    #34752920
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мда, что и требовалосьдоказать :)
иди открой уже Spring и не гадай.
Нихачу. В следующем проекте.
...
Рейтинг: 0 / 0
55 сообщений из 55, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / help ! jboss+mysql пул
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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