Runs when ColdFusion receives the first request for a page in the application.
<cffunction name="onApplicationStart" returnType="boolean"> ... <cfreturn Boolean> </cffunction>
value: True if the application startup code ran successfully; False, otherwise.
You do not need to explicitly return a True value if you omit the
Use this method for application initialization code; for example, use it to set Application scope variables, to determine whether a required data source or other resource is available, or to log the application start. You do not have to lock the Application scope if you set Application variables in this method, and you can reference Application scope variables as you normally do; for example, as Application.myVariable.
method can access the requested page’s Variables scope only if the
Application.cfc file includes an
that calls the page.
If you call this method explicitly, ColdFusion does not start the application; it does execute the method code, but does not lock the Application scope while the method executes.
this method throws an uncaught exception or returns False, the application does
not start and ColdFusion does not process any pages in the application.
In this case, ColdFusion runs the
the next time a user requests a page in the application.
The following example tests for the availability of a database. If the database is not available it reports and logs the error, and does not start the application; if it is available, the method initializes two Application scope variables.
<cffunction name="onApplicationStart"> <cftry> <!--- Test whether the DB is accessible by selecting some data. ---> <cfquery name="testDB" dataSource="cfdocexamples" maxrows="2"> SELECT Emp_ID FROM employee </cfquery> <!--- If you get a database error, report an error to the user, log the error information, and do not start the application. ---> <cfcatch type="database"> <cfoutput> This application encountered an error<br> Please contact support. </cfoutput> <cflog file="#This.Name#" type="error" text="cfdocexamples DB not available. message: #cfcatch.message# Detail: #cfcatch.detail# Native Error: #cfcatch.NativeErrorCode#" > <cfreturn False> </cfcatch> </cftry> <cflog file="#This.Name#" type="Information" text="Application Started"> <!--- You do not have to lock code in the onApplicationStart method that sets Application scope variables. ---> <cfscript> Application.availableResources=0; Application.counter1=1; </cfscript> <cfreturn True> </cffunction>