动态更改“全局”数据源

时间:2012-09-19 13:19:43

标签: coldfusion datasource coldfusion-10 application.cfc

我通常在Application.cfc的第一行中设置应用程序范围的数据源名称:

<cfscript>THIS.datasource="mydsn";</cfscript>

如果我需要在代码的某些部分更改它,该怎么办?

具体来说,我的意思是:

  • 如果cgi.server_name等于“www.firsturl.com”=&gt; this.datasource =“firstdsn”
  • 如果cgi.server_name等于“www.secondurl.com”=&gt; this.datasource =“seconddsn”

我可以为每个请求执行此操作吗?

1 个答案:

答案 0 :(得分:5)

好的,我对你原来帖子的评论 - 发现这些事情的最好办法就是试试然后看看会发生什么,答案是:是的。

Application.cfc的命名很差,因为它暗示它是特定于应用程序的,但实际上整个事件都是在每个请求中实例化的。某些事件处理程序仅在给定的情况下运行(onApplicationStart / onSessionStart等)既不在这里也不在那里:整个事务运行每个请求。因此,与任何实例化的CFC一样,每个请求也会运行伪构造函数代码(在此处创建这种范围的变量声明)。

这意味着您可以根据REQUEST特定信息(请求,CGI,URL,FORM等;但不是APPLICATION或SESSION)有条件地设置任何变量。因此,基于CGI变量的条件可以正常工作。

但是不要相信我的话:试试吧!总是尝试这些东西。

最后,为了稍微插上一下,我会在this article的博客中讨论在Application.cfc中运行的内容。也许给它一个阅读,或许你在那里看看Application.cfc上的其他文章。