powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Tomcat JDBC Connection Pool
5 сообщений из 5, страница 1 из 1
Tomcat JDBC Connection Pool
    #38204461
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первый раз решил использовать пул соединений, зашел на сайт апача и реализовал у себя пример.
создал класс SimplePOJOExample
и сделал как в примере, привязав к своей существующей бд:

Код: java
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.
package test;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import org.apache.tomcat.jdbc.pool.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;

public class SimplePOJOExample implements Serializable {

    private static final long serialVersionUID = 1L;
    
    public static void main(String[] args) throws Exception {
        PoolProperties p = new PoolProperties();
        p.setUrl("jdbc:postgresql://localhost:5432/phlight");
        p.setDriverClassName("org.postgresql.Driver");
        p.setUsername("user");
        p.setPassword("pass");
        p.setJmxEnabled(true);
        p.setTestWhileIdle(false);
        p.setTestOnBorrow(true);
        p.setValidationQuery("SELECT 1");
        p.setTestOnReturn(false);
        p.setValidationInterval(30000);
        p.setTimeBetweenEvictionRunsMillis(30000);
        p.setMaxActive(100);
        p.setInitialSize(10);
        p.setMaxWait(10000);
        p.setRemoveAbandonedTimeout(60);
        p.setMinEvictableIdleTimeMillis(30000);
        p.setMinIdle(10);
        p.setLogAbandoned(true);
        p.setRemoveAbandoned(true);
        p.setJdbcInterceptors(
                "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;"
                + "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer");
        DataSource datasource = new DataSource();
        datasource.setPoolProperties(p);

        Connection con = null;
        try {
            con = datasource.getConnection();
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select * from users");
            int cnt = 1;
            while (rs.next()) {
                System.out.println((cnt++) + ". id:" + rs.getInt("id")
                        + " UserName :" + rs.getString("name") + " Password:" + rs.getString("password"));
            }
            rs.close();
            st.close();
        } finally {
            if (con != null) {
                try {
                    con.close();
                } catch (Exception ignore) {
                }
            }
        }
    }
}



Запускаю класс, получаю:
1. id:1 UserName :Admin Password:1
То есть все хорошо, все работает.


Добавил туда геттер коннекшена.

Код: java
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.
public Connection getConnection() {
        Connection con = null;
        PoolProperties p = new PoolProperties();
        p.setUrl("jdbc:postgresql://localhost:5432/phlight");
        p.setDriverClassName("org.postgresql.Driver");
        p.setUsername("user");
        p.setPassword("pass");
        p.setJmxEnabled(true);
        p.setTestWhileIdle(false);
        p.setTestOnBorrow(true);
        p.setValidationQuery("SELECT 1");
        p.setTestOnReturn(false);
        p.setValidationInterval(30000);
        p.setTimeBetweenEvictionRunsMillis(30000);
        p.setMaxActive(100);
        p.setInitialSize(10);
        p.setMaxWait(10000);
        p.setRemoveAbandonedTimeout(60);
        p.setMinEvictableIdleTimeMillis(30000);
        p.setMinIdle(10);
        p.setLogAbandoned(true);
        p.setRemoveAbandoned(true);
        p.setJdbcInterceptors(
                "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;"
                + "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer");
        DataSource datasource = new DataSource();
        datasource.setPoolProperties(p);
        try {
            con = datasource.getConnection();
        } catch (Exception e) {
        }
        return con;
    }



Пытаюсь вызвать его в своем классе и коннекшен не создается, становится null. Соответственно ничего не работает и PreparedStatement не "берется".
Я, конечно, в выходные еще почитаю про pool вообще, чтобы иметь более ясное представление о его параметрах и работе, но может кто на вскидку скажет, в чем проблема?
Спасибо.
...
Рейтинг: 0 / 0
Tomcat JDBC Connection Pool
    #38204475
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicДобавил туда геттер коннекшена.

Куда "туда"?
Nixic
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public Connection getConnection() {
        DataSource datasource = new DataSource();
        datasource.setPoolProperties(p);
        try {
            con = datasource.getConnection();
        } catch (Exception e) {
        }
    }



Это двойной facepalm. Т.е. каждое создание соединение это создание нового пула, а затем получание оттуда соединения.
Ну, и пустой catch блок это отличное достижение. Такое ощущение что только вчера начали Java изучать.

Nixicможет кто на вскидку скажет, в чем проблема?

В том что эту секцию доки надо было проскипать и перейти к "As a Resource".
...
Рейтинг: 0 / 0
Tomcat JDBC Connection Pool
    #38204489
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, ааааа.... все понял, завтра попробую)
Действительно тупанул, ну теперь хоть принцип пула немного понятнее стал.
а про catch - дак это пофиг пока, хотелось просто по-быстрому попробовать.
Пасибо)
...
Рейтинг: 0 / 0
Tomcat JDBC Connection Pool
    #38204492
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixicа про catch - дак это пофиг пока
Угу. Там возникает исключение, из-за которого Connection не создался. Но пока на исключение пофиг, проще пойти поискать телепатов на форуме, чем прочитать сообщение об ошибке.
...
Рейтинг: 0 / 0
Tomcat JDBC Connection Pool
    #38205531
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczNixicа про catch - дак это пофиг пока
Угу. Там возникает исключение, из-за которого Connection не создался. Но пока на исключение пофиг, проще пойти поискать телепатов на форуме, чем прочитать сообщение об ошибке.
там было когда я дебажил следующее: org.postgresql.Driver
и всё.

закрыли тему.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Tomcat JDBC Connection Pool
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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