无效的组件定义
Invalid Component Definition
我在无法在浏览器上复制的日志中遇到问题。我每天收到数百个这样的东西
invalid component definition, can't find component [cfc.udf]
cfc 存储在应用程序上一级的 cfc 文件夹中。这样许多应用程序就可以使用相同的 cfc。
文件夹结构:
---- cfc
--------- udf.cfc
---- myApp
--------- application.cfc
在 application.cfc 中,我正在使用特定于应用程序的映射,因为这是在生产中的许多不同负载平衡服务器以及 QA 环境和本地测试环境中设置的,并保留它们全部同步将很困难。
在 onRequestStart 中,我有一个每 5 分钟重新启动应用程序的功能。它是由一位顾问提供的。我怀疑这是罪魁祸首,因为日志显示这些错误恰好以 5 分钟的间隔出现
<cfcomponent>
<cfset This.name = "myApp">
<cfset This.Sessionmanagement=true>
<cfset This.Sessiontimeout="#createtimespan(0,0,30,0)#">
<cfset this.mappings['/cfc'] = ExpandPath('../cfc')>
<cffunction name="onApplicationStart">
<cfset Application.udf = createObject("component", "cfc.udf").init()>
</cffunction>
<cffunction name="onRequestStart">
<cfset appRefreshMinutes = 5>
<cfif Not IsDefined("Application.refreshTime")>
<cfset currentMinute = Minute(Now())>
<cfset Application.refreshTime = DateAdd("n", -(currentMinute MOD appRefreshMinutes)+appRefreshMinutes, Now())>
<cfset Application.refreshTime = DateAdd("s", -(Second(Application.refreshTime)), Application.refreshTime)>
</cfif>
<cfif Now() GTE Application.refreshTime Or IsDefined("URL.reload")>
<cflock name="ApplicationInit" type="exclusive" timeout="5" throwontimeout="false">
<cfif Now() GTE Application.refreshTime Or IsDefined("URL.reload")>
<cfset OnApplicationStart()>
<cfset Application.refreshTime = DateAdd("n", appRefreshMinutes, Application.refreshTime)>
</cfif>
</cflock>
</cfif>
</cffunction>
</cfcomponent>
来自评论
您是否尝试过使用 /cfc
以外的映射名称?喜欢:
<cfset this.mappings['/somethingelse'] = ExpandPath('../cfc')>
这样您就可以这样称呼它:
<cfset Application.udf = createObject("component", "somethingelse.udf").init()>
也许它对我来说看起来很奇怪,或者这可能导致您的问题(cfc
是一个保留字或在这种情况下以某种方式得到特殊处理)。
我在无法在浏览器上复制的日志中遇到问题。我每天收到数百个这样的东西
invalid component definition, can't find component [cfc.udf]
cfc 存储在应用程序上一级的 cfc 文件夹中。这样许多应用程序就可以使用相同的 cfc。
文件夹结构:
---- cfc
--------- udf.cfc
---- myApp
--------- application.cfc
在 application.cfc 中,我正在使用特定于应用程序的映射,因为这是在生产中的许多不同负载平衡服务器以及 QA 环境和本地测试环境中设置的,并保留它们全部同步将很困难。
在 onRequestStart 中,我有一个每 5 分钟重新启动应用程序的功能。它是由一位顾问提供的。我怀疑这是罪魁祸首,因为日志显示这些错误恰好以 5 分钟的间隔出现
<cfcomponent>
<cfset This.name = "myApp">
<cfset This.Sessionmanagement=true>
<cfset This.Sessiontimeout="#createtimespan(0,0,30,0)#">
<cfset this.mappings['/cfc'] = ExpandPath('../cfc')>
<cffunction name="onApplicationStart">
<cfset Application.udf = createObject("component", "cfc.udf").init()>
</cffunction>
<cffunction name="onRequestStart">
<cfset appRefreshMinutes = 5>
<cfif Not IsDefined("Application.refreshTime")>
<cfset currentMinute = Minute(Now())>
<cfset Application.refreshTime = DateAdd("n", -(currentMinute MOD appRefreshMinutes)+appRefreshMinutes, Now())>
<cfset Application.refreshTime = DateAdd("s", -(Second(Application.refreshTime)), Application.refreshTime)>
</cfif>
<cfif Now() GTE Application.refreshTime Or IsDefined("URL.reload")>
<cflock name="ApplicationInit" type="exclusive" timeout="5" throwontimeout="false">
<cfif Now() GTE Application.refreshTime Or IsDefined("URL.reload")>
<cfset OnApplicationStart()>
<cfset Application.refreshTime = DateAdd("n", appRefreshMinutes, Application.refreshTime)>
</cfif>
</cflock>
</cfif>
</cffunction>
</cfcomponent>
来自评论
您是否尝试过使用 /cfc
以外的映射名称?喜欢:
<cfset this.mappings['/somethingelse'] = ExpandPath('../cfc')>
这样您就可以这样称呼它:
<cfset Application.udf = createObject("component", "somethingelse.udf").init()>
也许它对我来说看起来很奇怪,或者这可能导致您的问题(cfc
是一个保留字或在这种情况下以某种方式得到特殊处理)。