Есть ли способ сбросить все соединения ColdFusion из пула? - PullRequest
2 голосов
/ 15 сентября 2011

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

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

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

1 Ответ

1 голос
/ 16 сентября 2011

Быстрая и грязная опция для сервера разработки - изменить настройки источника данных через 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>
...