如何获得用于在coldfusion中生成页面的数据源列表?

时间:2014-01-27 23:51:09

标签: coldfusion coldfusion-10

当您添加调试IP以查看解析为显示页面的模板集合中的调试信息时,它会包含该页面中所有查询的列表。

是否可以访问该对象进行检查?

我正在尝试自动化哪些数据源正在用于哪些页面请求的文档。我们有大量的小型Web应用程序可以访问不同的数据库并具有不同的依赖关系。我希望找到一种方法来自动化这些依赖项的文档,而不必手动审查所有Web应用程序的所有代码。

在页面创建过于实际执行任何包含数据的内容之前,不确定是否创建了对象,但谁知道......

2 个答案:

答案 0 :(得分:2)

以下是一段代码,您可以将其添加到模板的末尾,以获取页面上使用的数据源列表:

<cfobject action="CREATE" type="JAVA" class="coldfusion.server.ServiceFactory" name="factory">
<cfset cfdebugger = factory.getDebuggingService()>
<cfset qEvents = cfdebugger.getDebugger().getData()>

<cftry>
    <cfquery dbtype="query" name="cfdebug_qryDSN">
        SELECT DISTINCT DATASOURCE FROM qEvents WHERE type = 'SqlQuery'
    </cfquery>
    <cfcatch type="Any">
        <cfset cfdebug_qryDSN = queryNew('DATASOURCE')>
    </cfcatch>
</cftry>

<cfdump var="#cfdebug_qryDSN#" label="cfdebug_qryDSN">

PS:此片段的大部分灵感来自{cfusion 10 home} \ cfusion \ wwwroot \ WEB-INF \ debug \ classic.cfm。您可以从如何从该文件访问调试器对象/数据中获得一些好主意。

答案 1 :(得分:0)

这个想法适用于使用Application.cfc的每个应用程序。

    CF管理员
  1. Enable Request Debugging Output
  2. 配置Debugging IP Addresses,以便每个页面都能收到调试信息。
  3. 假设Select Debugging Output Format设置为classic.cfm短路 {cfusion 10 home}\cfusion\wwwroot\WEB-INF\debug\classic.cfm,方法是<cfreturn> classic.cfm中的第一个可执行语句。这将阻止任何页面看到调试输出。
  4. Application.cfc::OnRequestEnd()执行Scott Jibben suggested。您可以将斯科特的想法包含在<cfif IsDebugMode()>