views:

401

answers:

3

How do I reset a Coldfusion Application / application.cfc without resetting the Coldfusion Server instance? If I remember right, there are a few tricks out there such as creating a reinit function within application.cfc or renaming the file.

+9  A: 

A couple of steps:

First, make sure all your application initialization logic is contained inside the OnApplicationStart method of your CFC. If it has nested calls, that is fine - just so long as you can re-initialize your application easily through a single call makes your life much easier.

Second, this is the code I use in the OnRequestStart method of application.cfc

<cfif structKeyExists(url,'resetappvars')>
  <cfset OnApplicationStart() />
</cfif>

Feel free to use whatever coded value you would like in place of resetAppVars.

Goyuix
don't forget: <cfcache action="flush">
Henry
+3  A: 

CF9 Doc:

To restart the application, you can stop the application using ApplicationStop() and the next request to any page in this application automatically starts it.

ApplicationStop() is new in ColdFusion 9.

Henry
Wow, that's a handy new feature! :-) Does anyone know if this is in the other CFML engines too?
Dan Sorensen
+2  A: 

If you're on CF8 and using the "if reinit, then call onApplicationStart()" approach, make sure you avoid race conditions. This is a good explanation: http://blog.bullamakanka.net/2009/12/coldfusion-shared-scopes-and-race.html

marc esher