Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Tomcat JDBC Connection Pool / 5 сообщений из 5, страница 1 из 1
29.03.2013, 15:44:15
    #38204461
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tomcat JDBC Connection Pool
Первый раз решил использовать пул соединений, зашел на сайт апача и реализовал у себя пример.
создал класс 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
29.03.2013, 15:50:16
    #38204475
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tomcat JDBC Connection Pool
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
29.03.2013, 15:56:41
    #38204489
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tomcat JDBC Connection Pool
Blazkowicz, ааааа.... все понял, завтра попробую)
Действительно тупанул, ну теперь хоть принцип пула немного понятнее стал.
а про catch - дак это пофиг пока, хотелось просто по-быстрому попробовать.
Пасибо)
...
Рейтинг: 0 / 0
29.03.2013, 15:59:14
    #38204492
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tomcat JDBC Connection Pool
Nixicа про catch - дак это пофиг пока
Угу. Там возникает исключение, из-за которого Connection не создался. Но пока на исключение пофиг, проще пойти поискать телепатов на форуме, чем прочитать сообщение об ошибке.
...
Рейтинг: 0 / 0
30.03.2013, 17:51:15
    #38205531
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Tomcat JDBC Connection Pool
BlazkowiczNixicа про catch - дак это пофиг пока
Угу. Там возникает исключение, из-за которого Connection не создался. Но пока на исключение пофиг, проще пойти поискать телепатов на форуме, чем прочитать сообщение об ошибке.
там было когда я дебажил следующее: org.postgresql.Driver
и всё.

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


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