Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Пример использования ConnectionPool'а, поставляемого с JSQLConnect / 25 сообщений из 29, страница 1 из 2
22.04.2005, 10:06
    #33029269
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
Драйвер JSQLConnect поставляется с уже готовым пулом соединений. И почему бы его не использовать? :)
К тому же класс, который будет управлять этим пулом очень прост:

Код: 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.
 package  net.agrasoff.db;

 import  com.jnetdirect.jsql.*;

 import  java.util.*;
 import  java.sql.*;

 public   class  JSQLDatabaseManager {
  // грубо говоря, наш мэнеджер пулов является Singleton'ом
  // но чтобы обеспечить управление несколькими пулами 
  // например, необходимо из одного приложения иметь
  // коннекты к разным БД, мы храним экземпляры JSQLDatabaseManager
  // в хэш-таблице managers, где ключем является уникальное название
  // нашего менеджера, а значеним - сам менеджер
   private   static  Hashtable managers =  new  Hashtable();

  /* собственно - сам пул соединений */
   private  JSQLPoolingDataSource pool;
   private   boolean  isInit;

   private  JSQLDatabaseManager() {
    isInit = false;
  }

   public   static  JSQLDatabaseManager getInstance(String name) {
    JSQLDatabaseManager manager = (JSQLDatabaseManager) managers.get(name);
     if  (manager ==  null ) {
      manager =  new  JSQLDatabaseManager();
      managers.put(name, manager);
    }
     return  manager;
  }

   public  Connection getConnection()  throws  SQLException {
     if  (pool ==  null  || !isInit) {
       throw   new  SQLException("Pool was not initialized");
    }

     return  pool.getConnection();
  }

   public   static  Connection getConnection(String managerName)  throws  SQLException {
    JSQLDatabaseManager manager = getInstance(managerName);
     return  manager.getConnection();
  }

  /* инициализация пула */
   public   void  init(Properties properties)  throws  SQLException {
    String url = properties.getProperty(POOL_URL);
    String database = properties.getProperty(POOL_DATABASE);
    String user = properties.getProperty(POOL_USER);
    String password = properties.getProperty(POOL_PASSWORD);
    String codepage = properties.getProperty(POOL_CODEPAGE);
     if  (Check.empty(codepage)) {
      codepage = "Cp1251";
    }

     int  initialPoolSize =  0 ;
     try  {
      initialPoolSize = Integer.parseInt(properties.getProperty(POOL_INITIAL_SIZE));
    }  catch  (Exception e) {

    }

     int  minPoolSize =  5 ;
     try  {
      minPoolSize = Integer.parseInt(properties.getProperty(POOL_MIN_SIZE));
    }  catch  (Exception e) {

    }

     int  maxPoolSize =  25 ;
     try  {
      maxPoolSize = Integer.parseInt(properties.getProperty(POOL_MAX_SIZE));
    }  catch  (Exception e) {

    }

     if  (pool !=  null ) {
      pool.closeAllConnections();
    }

    pool =  new  JSQLPoolingDataSource();
    pool.setApplicationName(POOL_APPLICATION);
    pool.setCodepage(codepage);
    pool.setDatabaseName(database);
    pool.setInitialPoolSize(initialPoolSize);
    pool.setMaxPoolSize(maxPoolSize);
    pool.setMinPoolSize(minPoolSize);
    pool.setPassword(password);
    pool.setUser(user);
    pool.setUrl(url);

    isInit = true;
  }

   public   void  close()  throws  SQLException {
     if  (pool !=  null ) {
      isInit = false;
      pool.closeAllConnections();
      pool =  null ;
    }
  }

   public   static   void  closePools()  throws  Exception {
    Enumeration e = managers.keys();
     while  (e.hasMoreElements()) {
      JSQLDatabaseManager manager = (JSQLDatabaseManager) e.nextElement();
      manager.close();
    }
    managers.clear();
  }

   public   static   final  String POOL_APPLICATION = "My Extra Web Application, v.6.66";

   public   static   final  String POOL_URL = "pool-url";
   public   static   final  String POOL_DATABASE = "pool-database";
   public   static   final  String POOL_USER = "pool-user";
   public   static   final  String POOL_PASSWORD = "pool-password";
   public   static   final  String POOL_CODEPAGE = "pool-codepage";
   public   static   final  String POOL_INITIAL_SIZE = "pool-initial-size";
   public   static   final  String POOL_MIN_SIZE = "pool-min-size";
   public   static   final  String POOL_MAX_SIZE = "pool-max-size";
}

вот и все. теперь использование. первое, что надо сделать - инициализировать
наш определенный пул. например, в неком стартап-сервлете:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
...
 public  SetupServlet  extends  HttpServlet {
   public   void  init() {
    Properties connectionPoolProps =  new  Properties();
    connectionPoolProps.setProperty(JSQLDatabaseManager.POOL_URL, "jdbc:....");
    ...
    // и так далее - остальные свойства
    // я, например, свойства пулов храню в одном xml-файле
    // и вызываю статический метод JSQLDatabaseManager.initPools(String xmlPath)
    // (данный метод не показан в приведенном выше коде)
    ...
    JSQLDatabaseManager.getInstance("base content pool").init(connectionPoolProps);

    // еще один пул:
    Properties otherConnectionPoolProps =  new  Properties();
    otherConnectionPoolProps.setProperty(JSQLDatabaseManager.POOL_URL, "jdbc:....");
    ...
    JSQLDatabaseManager.getInstance("stat pool").init(otherConnectionPoolProps);
  }
}

теперь мы имеем два готовых к использованию пула. и можем их использовать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
...
 public  SomeServlet  extends  HttpServlet {
  ...
   public   void  service(...) ... {
     try  {
      Connection con = JSQLDatabaseManager.getInstance("stat pool").getConnection();
      // можно получить connection более кратко:
      // Connection con = JSQLDatabaseManager.getConnection("stat pool");
       try  {
        Statement st = con.createStatement();
        ResultSet rs = st.executeQuery("select ...");
        ...
        rs.close();
        st.close();
      }  finally  {
        con.close();
      }
    }  catch  (SQLException e) {
      log("...", e);
       throw   new  ServletException(e.getMessage());
    }
  }
}

вот и все :)
...
Рейтинг: 0 / 0
22.04.2005, 11:31
    #33029515
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
В фак?
...
Рейтинг: 0 / 0
22.04.2005, 13:16
    #33029900
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
А если БД вдруг возьмет и поменяется ?
...
Рейтинг: 0 / 0
22.04.2005, 13:27
    #33029939
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
wessenА если БД вдруг возьмет и поменяется ?
если ты имеешь в виду, что поменяется имя базы PERSONS на
имя PERSONS2_0, то ничего страшного. всегда можно
изменить в кофиге.

если же ты имеешь в виду, что поменяется сервер БД (MS SQL на,
например, Oracle), то тоже ничего страшного. насколько я знаю,
оракл тоже с пулом реализованным идет. и привел пример. и уточнил,
что используется база MS SQL (это понятно из того, что драйвер
используется JSQLConnect). а то что это пример - явно указано
в теме поста.
...
Рейтинг: 0 / 0
22.04.2005, 13:27
    #33029943
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
wessenА если БД вдруг возьмет и поменяется ?сама собой?
...
Рейтинг: 0 / 0
22.04.2005, 13:27
    #33029945
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
А.Грасоff™ JE wessenА если БД вдруг возьмет и поменяется ?сама собой?мутирует слегонца?
...
Рейтинг: 0 / 0
22.04.2005, 13:37
    #33029977
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
Я имел ввиду, что твой способ не универсальный, у нас сейчас приложение пишется и заранее известно, что оно у разных клиентов будет крутится под разными БД. Вот я и дое....я.
...
Рейтинг: 0 / 0
22.04.2005, 13:44
    #33030009
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
в таком случае примерно таким же образом можно использовать http://jakarta.apache.org/commons/dbcp/

либо сразу использовать возможности томката: http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-datasource-examples-howto.html
...
Рейтинг: 0 / 0
22.04.2005, 13:49
    #33030034
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
А.Грасоff™ JEв таком случае примерно таким же образом можно использовать http://jakarta.apache.org/commons/dbcp/

либо сразу использовать возможности томката: http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-datasource-examples-howto.html
ага, все так и сделано.
...
Рейтинг: 0 / 0
22.04.2005, 14:00
    #33030077
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
wessenЯ имел ввиду, что твой способ не универсальный
Я сразу об этом сказал :)
...
Рейтинг: 0 / 0
22.04.2005, 14:39
    #33030254
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
wessenоно у разных клиентов будет крутится под разными БД.
аццтой. писать надо под конкретную бд. и использовать ее возможности на полную...
...
Рейтинг: 0 / 0
22.04.2005, 15:06
    #33030374
Зюзя
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
Timm wessenоно у разных клиентов будет крутится под разными БД.
аццтой. писать надо под конкретную бд. и использовать ее возможности на полную...
Сказал бы я тебе, но ладно... на первый раз прощаю.

Во первых, символ Java - написано однаждый, работает везде. Это отражается на всех ее технологиях, будь то JAXP, JDBC, Java Security и т.д., все это всего лишь интерфейсы и под них пишутся, парсеры, драйверы или провайдеры от разных производителей. Если рассуждать так как ты, то зачем тогда на Java писать, возми какой нить аля Делфи и клепай на нем.

Во вторых, писать под конкретную БД все таки можно, но не всегда, т.к. конторы которые пишут софт бывают двух видов:
1. пишут софт и сами его используют
2. пишут и продают.

По поводу 1-го пункта, вот устроиля ты в банк, там у них лицензия на Оракл допустим куплена и известно, что ближайшие 20-ть лет ничего не меняется, тут все понятно, пиши под Оракл.
По поводу 2-го пункта, вот наша контора пишет сейчас проект, если все хорошо пойдет, то клиентов будет сотни, у каждого из них свои, годами разрабатываемые сисемы, там полный огород, начиная от паскаля и заканчивая Java/#C, в БД такой же огород. И наше приложение просто обязано рабоать со всей этой пиздобратией и заводится с пол пинка - скопировал дистр, запустил ant и наслождаешься :)
...
Рейтинг: 0 / 0
22.04.2005, 15:15
    #33030403
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
Зюзя Timm wessenоно у разных клиентов будет крутится под разными БД.
аццтой. писать надо под конкретную бд. и использовать ее возможности на полную...
Сказал бы я тебе, но ладно... на первый раз прощаю.

спасибо блин большое
большое спасибо блин (ц)
ЗюзяЕсли рассуждать так как ты, то зачем тогда на Java писать, возми какой нить аля Делфи и клепай на нем.
Это не я. Это Кайт. Меня он убедил :)
Зюзятам полный огород, начиная от паскаля и заканчивая Java/#C, в БД такой же огород. И наше приложение просто обязано рабоать со всей этой пиздобратией и заводится с пол пинка - скопировал дистр, запустил ant и наслождаешься :)
С "огородами" снижается manageаbility, scalability и пр. "abilities"
...
Рейтинг: 0 / 0
22.04.2005, 15:38
    #33030458
Зюзя
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
Timm Зюзя Timm wessenоно у разных клиентов будет крутится под разными БД.
аццтой. писать надо под конкретную бд. и использовать ее возможности на полную...
Сказал бы я тебе, но ладно... на первый раз прощаю.

спасибо блин большое
большое спасибо блин (ц)
ЗюзяЕсли рассуждать так как ты, то зачем тогда на Java писать, возми какой нить аля Делфи и клепай на нем.
Это не я. Это Кайт. Меня он убедил :)
Зюзятам полный огород, начиная от паскаля и заканчивая Java/#C, в БД такой же огород. И наше приложение просто обязано рабоать со всей этой пиздобратией и заводится с пол пинка - скопировал дистр, запустил ant и наслождаешься :)
С "огородами" снижается manageаbility, scalability и пр. "abilities"
Как то все не аргументированно, ну да ладно. Кто такой Кайт не знаю, но все равно, увидешь его, передай привет от меня и поцелуй в ушко. И заодно спроси, как писать приложения для "огорода", так как потребность в них очень большая и Java для этого пока что лучший вариант.
...
Рейтинг: 0 / 0
22.04.2005, 15:42
    #33030463
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
Зюзя Timm Зюзя Timm wessenоно у разных клиентов будет крутится под разными БД.
аццтой. писать надо под конкретную бд. и использовать ее возможности на полную...
Сказал бы я тебе, но ладно... на первый раз прощаю.

спасибо блин большое
большое спасибо блин (ц)
ЗюзяЕсли рассуждать так как ты, то зачем тогда на Java писать, возми какой нить аля Делфи и клепай на нем.
Это не я. Это Кайт. Меня он убедил :)
Зюзятам полный огород, начиная от паскаля и заканчивая Java/#C, в БД такой же огород. И наше приложение просто обязано рабоать со всей этой пиздобратией и заводится с пол пинка - скопировал дистр, запустил ant и наслождаешься :)
С "огородами" снижается manageаbility, scalability и пр. "abilities"
Как то все не аргументированно, ну да ладно. Кто такой Кайт не знаю, но все равно, увидешь его, передай привет от меня и поцелуй в ушко. И заодно спроси, как писать приложения для "огорода", так как потребность в них очень большая и Java для этого пока что лучший вариант.

мало ты писАл, мужык.
твои слова - шаблоны книг.
и мир не так уж идеален
как ты его себе представил.
...
Рейтинг: 0 / 0
22.04.2005, 16:03
    #33030568
Зюзя
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
А.Грасоff™ JE Зюзя Timm Зюзя Timm wessenоно у разных клиентов будет крутится под разными БД.
аццтой. писать надо под конкретную бд. и использовать ее возможности на полную...
Сказал бы я тебе, но ладно... на первый раз прощаю.

спасибо блин большое
большое спасибо блин (ц)
ЗюзяЕсли рассуждать так как ты, то зачем тогда на Java писать, возми какой нить аля Делфи и клепай на нем.
Это не я. Это Кайт. Меня он убедил :)
Зюзятам полный огород, начиная от паскаля и заканчивая Java/#C, в БД такой же огород. И наше приложение просто обязано рабоать со всей этой пиздобратией и заводится с пол пинка - скопировал дистр, запустил ant и наслождаешься :)
С "огородами" снижается manageаbility, scalability и пр. "abilities"
Как то все не аргументированно, ну да ладно. Кто такой Кайт не знаю, но все равно, увидешь его, передай привет от меня и поцелуй в ушко. И заодно спроси, как писать приложения для "огорода", так как потребность в них очень большая и Java для этого пока что лучший вариант.

мало ты писАл, мужык.
твои слова - шаблоны книг.
и мир не так уж идеален
как ты его себе представил.
С твоими словами частично согласен, с тем, что писать нужно под конкретную БД не согласен.

PS стижки еще с удовольствием почитаю
...
Рейтинг: 0 / 0
22.04.2005, 16:17
    #33030633
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
Зюзяс тем, что писать нужно под конкретную БД не согласен
то есть проектировать БД надо только лишь, используя
стандартный SQL? и его синтаксис? а как же ХП, триггеры?

--
а?
...
Рейтинг: 0 / 0
22.04.2005, 16:32
    #33030702
Зюзя
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
А.Грасоff™ JE Зюзяс тем, что писать нужно под конкретную БД не согласен
то есть проектировать БД надо только лишь, используя
стандартный SQL? и его синтаксис? а как же ХП, триггеры?

--
а?

Может мы не так друг друга поняли?

Я имел в виду именно доступ к БД. Вот например для Оракла есть много API для работы с ним, эти API удобные и мощные, но есть одно НО, они работают только с Оракл. Так же как и твой пример, работает только с MS SQL Server.

SQL, хп и тригерры я не имел ввиду, но скажу пару слов. Все SQL запросы хранятся в файлах-ресурсах, для каждой БД свой ресурс. По поводу хп, приложению нужно знать их имена и возвращаемые значения, это все тоже в ресурсах. Триггеры, это уже не забота Java программиста, пускай админы БД воротят все что хотят.
...
Рейтинг: 0 / 0
22.04.2005, 16:34
    #33030705
LiQuid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
wessen
Я имел ввиду, что твой способ не универсальный, у нас сейчас приложение пишется и заранее известно, что оно у разных клиентов будет крутится под разными БД. Вот я и дое....я.

Слушай, хорош говорить, че пристал Грасову, он молодец чувак, хоть на этом скажи спасибо что пример привел, чтобы начинающие учились.
А универсальный пул писать можно но все равно ни один пул на свете не универсальный. Можно сказать более менее универсальные пули пишутся на ява. Молодец Грасов, подерживаю. Такие люди нам нужны в стране. Хотя я сам из КЗ Ну все равно молодец. Нужны такие люди для России
...
Рейтинг: 0 / 0
22.04.2005, 16:36
    #33030716
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
ЗюзяВсе SQL запросы хранятся в файлах-ресурсах, для каждой БД свой ресурс.
таким образом, можно назвать ресурсом пул (мой) и сделать несколько
вариантов под каждую БД :)
...
Рейтинг: 0 / 0
22.04.2005, 16:50
    #33030785
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
А.Грасоff™ JE ЗюзяВсе SQL запросы хранятся в файлах-ресурсах, для каждой БД свой ресурс.
таким образом, можно назвать ресурсом пул (мой) и сделать несколько
вариантов под каждую БД :)
Конечно можно, но у нас щас реализовано так: есть движок на Java (ну почти универсальный :)) и он оч. активно использует ресурсы и их пишут совершенно различные люди, в основном это SQL программисты или админы БД заказчика. Заставлять писать их на Java это уж слишком, а писать конкретно для каждого заказчика (а их много и все они разные:)) нам очень напряжно.
...
Рейтинг: 0 / 0
22.04.2005, 16:52
    #33030794
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
Уже уставший Зюзянапряжнорасслабься :)
...
Рейтинг: 0 / 0
22.04.2005, 17:00
    #33030830
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
доброе утро, федд!
...
Рейтинг: 0 / 0
22.04.2005, 17:32
    #33030938
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
LiQuid wessen
Я имел ввиду, что твой способ не универсальный, у нас сейчас приложение пишется и заранее известно, что оно у разных клиентов будет крутится под разными БД. Вот я и дое....я.

Слушай, хорош говорить, че пристал Грасову, он молодец чувак, хоть на этом скажи спасибо что пример привел, чтобы начинающие учились.
А универсальный пул писать можно но все равно ни один пул на свете не универсальный. Можно сказать более менее универсальные пули пишутся на ява. Молодец Грасов, подерживаю. Такие люди нам нужны в стране. Хотя я сам из КЗ Ну все равно молодец. Нужны такие люди для России
А ты секретарь Граспыха, или его Ангел Хранитель?
...
Рейтинг: 0 / 0
22.04.2005, 18:58
    #33031164
грасаф-паклонег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пример использования ConnectionPool'а, поставляемого с JSQLConnect
wessen LiQuid wessen
Я имел ввиду, что твой способ не универсальный, у нас сейчас приложение пишется и заранее известно, что оно у разных клиентов будет крутится под разными БД. Вот я и дое....я.

Слушай, хорош говорить, че пристал Грасову, он молодец чувак, хоть на этом скажи спасибо что пример привел, чтобы начинающие учились.
А универсальный пул писать можно но все равно ни один пул на свете не универсальный. Можно сказать более менее универсальные пули пишутся на ява. Молодец Грасов, подерживаю. Такие люди нам нужны в стране. Хотя я сам из КЗ Ну все равно молодец. Нужны такие люди для России
А ты секретарь Граспыха, или его Ангел Хранитель?ты чо злой такой?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Пример использования ConnectionPool'а, поставляемого с JSQLConnect / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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