我在 ColdFusion Admin 的管理控制台中定义了一个数据源。我已经在 set_datasource_util 文件中声明了具有相同数据源名称的配置。我有一个使用给定数据源连接到 DB(Oracle) 的网页,它在大多数情况下都能正常工作。但是最近我开始看到诸如“变量数据源名称(我的应用程序名称)未定义”之类的异常。我无法确定根本原因,因为我无法重新创建它,因为它大部分时间都在工作。我可以说平均 1000 次点击页面,它失败了 1 次,但有例外。任何人都可以帮助确定可能的问题,以便我可以朝那个方向进行调查。
我已经在 CFAdmin 中配置了 WOCD080P_ABC。
下面是来自 Application.cfm 的代码
<cfif client.securityLevel NEQ ''>
<cfinvoke component="#siteroot#.CFC.Set_Data_Source_Util" method="fnSetABCDataSource" returnvariable="ABCDataSourceDefinition">
<cfinvokeargument name="Environment" value="#variables.thisServerType#" />
</cfinvoke>
<cfif ABCDataSourceDefinition.DataSource NEQ 'Error'>
<cfset DATASOURCE_ABC = ABCDataSourceDefinition.DataSource />
<cfset DBUSER_ABC = ABCDataSourceDefinition.DBUser />
<cfset DBPASSWORD_ABC = ABCDataSourceDefinition.DBPassword />
</cfif>
</cfif>
下面是来自 Set_datasource_UTil 的代码:
<cffunction name="fnSetABCDataSource" access="public" returntype="struct">
<cfargument name="Environment" type="string" required="yes">
<cfset ReturnParameters = StructNew() />
<cfif Environment IS 'prod'>
<cfset ReturnParameters.DataSource = 'WOCD080P_ABC' />
<cfset ReturnParameters.DBUser = ''/>
<cfset ReturnParameters.DBPassword = '' />
<cfelse>
<cfset ReturnParameters.DataSource = 'WOCD080T_ABC'/>
<cfset ReturnParameters.DBUser = ''/>
<cfset ReturnParameters.DBPassword = '' />
</cfif>
<cfreturn ReturnParameters>
</cffunction>
下面是我从 HTML 文件执行的代码。
<cfinvoke component="#siteroot#.cfc.ABC_UTIL" method="GetRegion" returnVariable = "USregion" >
<cfinvokeargument name="dbSource" value=#DATASOURCE_ABC# />
<cfinvokeargument name="dbUser" value=#DBUSER_ABC# />
<cfinvokeargument name="dbPass" value=#DBPASSWORD_ABC# />
</cfinvoke>
HTML 文件中的代码大部分时间都可以工作,但有时会因未定义错误变量 DATASOURCE_ABC 而中断。任何帮助表示赞赏。