Максимальное количество соединений c3p0 не работает в Linux - PullRequest
1 голос
/ 11 января 2011

У меня есть Java-приложение, которое использует hibernate для отображения O / R, а также я использую пул соединений c3p0, который поставляется вместе с hibernate.БД - это Oracle.

Это в моем hibernate.cfg.xml:

<property name="hibernate.c3p0.min_size">3</property>
<property name="hibernate.c3p0.max_size">5</property>
<property name="hibernate.c3p0.max_statements">20</property>
<property name="hibernate.c3p0.timeout">1800</property>
<property name="hibernate.c3p0.idleTestPeriod">120</property>        

Вот так я получаю сеанс гибернации:

public class HibernateUtil {
    private static Logger log = Logger.getLogger(HibernateUtil.class);
    private static final SessionFactory sessionFactory;

    private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
    static {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            sessionFactory = new Configuration().configure(CONFIG_FILE_LOCATION).buildSessionFactory();
        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            log.fatal("Initial SessionFactory creation failed." + ex.getMessage());
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

Но когда я запускаю SELECT * FROM V$SESSION WHERE machine='xxx'; в Oracleколичество подключений может достигать 20, что превышает max_size.

Максимальное количество подключений не работает в среде Linux, но работает в Unix и Windows.Любая настройка в Linux, которую нужно настроить?

Я также подозреваю, что где-то есть кеш приложения, как я ранее установил max_size из 20. Я запускаю приложение в Tomcat 5.5.Но я не знаю такого кеша приложений в Tomcat.

Другая информация: я использую Linux 2.6.9-34.ELsmp.Red Hat Enterprise Linux AS release 4 (Nahant Update 3)

Спасибо.

1 Ответ

0 голосов
/ 11 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...