我们使用Oracle和ColdFusion 9。
每当Oracle包失效时,它会导致每个ColdFusion连接失败,并在下次连接访问特定包时出现无效的包警告。
是否有一种编程方式使池中的所有ColdFusion连接无效?
答案 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>