有没有办法重置池中的所有ColdFusion连接?

时间:2011-09-15 16:14:31

标签: oracle coldfusion coldfusion-9

我们使用Oracle和ColdFusion 9。

每当Oracle包失效时,它会导致每个ColdFusion连接失败,并在下次连接访问特定包时出现无效的包警告。

是否有一种编程方式使池中的所有ColdFusion连接无效?

1 个答案:

答案 0 :(得分:1)

开发服务器的快速和脏选项是通过admin 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>