Есть ли способ сбросить все подключения ColdFusion из пула?

Мы используем Oracle и ColdFusion 9.

Всякий раз, когда пакет Oracle становится недействительным, он вызывает сбой каждого соединения ColdFusion с предупреждением о недействительном пакете в следующий раз, когда соединение получит доступ к конкретному пакету.

Есть ли программный способ аннулировать все соединения ColdFusion в пуле?

1 ответ

Решение

Быстрая и грязная опция для сервера разработки - изменить настройки источника данных через API администратора. Я считаю, что отключение / включение пула соединений (или просто изменение DSN) автоматически закрывает все соединения.

Вот пример MS SQL. Настройки для Oracle могут немного отличаться.

<cfscript>
    // get datasource api
    adminAPI = createObject("component", "cfide.adminapi.administrator");
    adminAPI.login( "cf_admin_password" );
    dsnService = createObject("component","cfide.adminapi.datasource");

    // disable pooling
    // NOTE: change setMSSQL() to setOracle() 
    props = {name="MyDatasourceName", pooling=false, host="127.0.0.1", database="MyDBName"};
    dsnService.setMSSQL(argumentCollection=props);

    sleep(2000);

    // re-enable pooling
    props.pooling = true;
    dsnService.setMSSQL(argumentCollection=props);

    // sanity check
    finalSettings = dsnService.getDatasources()[props.name];
    if (finalSettings.pooling) {
        WriteDump("SUCCESS");
    } else {
        WriteDump("ERROR: Pooling was not re-enabled");
    }
</cfscript>
Другие вопросы по тегам