Неверное определение компонента
У меня проблема с журналами, которые я не могу воспроизвести в браузере. Я получаю сотни таких в день
invalid component definition, can't find component [cfc.udf]
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>
1 ответ
Повышен из комментариев
Вы пытались использовать имя сопоставления, кроме /cfc
? Подобно:
<cfset this.mappings['/somethingelse'] = ExpandPath('../cfc')>
так что вы можете назвать это так:
<cfset Application.udf = createObject("component", "somethingelse.udf").init()>
Может быть, это выглядит странно для меня или, может быть, это вызывает вашу проблему (cfc
быть зарезервированным словом или каким-то образом получать специальное отношение в этом случае).