ColdFusion Admin の管理コンソールでデータソースを定義しました。set_datasource_util ファイルで同じデータソース名で構成を宣言しました。指定されたデータソースを使用して DB(Oracle) に接続する Web ページがあり、ほとんどの場合正常に動作します。しかし最近、「Variable datasource-name(my app name) is undefined」のような例外が見られるようになりました。ほとんどの場合は機能するため、根本的な原因を再現できないため、根本的な原因を特定できません。ページの平均 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 が定義されていないというエラーで壊れることがあります。どんな助けでも感謝します。