User Guide

cflock 273
To avoid a deadlock, everyone who nests locks must do so in a well-specified order and name the
locks consistently. If you must lock access to the Server, Application, and Session scopes, you must
do so in this order:
1.
Lock the Session scope. In the cflock tag, specify scope = "session".
2.
Lock the Application scope. In the cflock tag, specify scope = "Application".
3.
Lock the Server scope. In the cflock tag, specify scope = "server".
4.
Unlock the Server scope.
5.
Unlock the Application scope.
6.
Unlock the Session scope.
Note: If you do not have to lock a scope, you can skip any pair of these lock/unlock steps. For
example, if you do not have to lock the Server scope, you can skip Steps 3 and 4. Similar rules apply
for named locks.
For more information, see the following:
Chapter 15, “Using Persistent Data and Locking” in ColdFusion MX Developers Guide
Article #20370, ColdFusion Locking Best Practices, on the Macromedia website at
www.macromedia.com/support/service/
Example
<!--- This example shows how cflock can guarantee consistency of data updates
to variables in the Application, Server, and Session scopes. --->
<!--- Copy the following code into an Application.cfm file in the application
root directory. --->
<!---------------- Beginning of Application.cfm code --------------->
<!--- cfapplication defines scoping for a ColdFusion application and
enables or disables storing of application and session variables.
Put this tag in a special file called Application.cfm.
It is run before any other ColdFusion page in its directory. --->
<!--- Enable session management for this application. --->
<cfapplication name = "ETurtle"
sessionTimeout = #CreateTimeSpan(0,0, 0, 60)#
sessionManagement = "yes">
<!--- Initialize session and application variables used by E-Turtleneck.
Use session scope for the session variables. --->
<cflock scope = "Session"
timeout = "30" type = "Exclusive">
<cfif NOT IsDefined("session.size")>
<cfset session.size = "">
</cfif>
<cfif NOT IsDefined("session.color")>
<cfset session.color = "">
</cfif>
</cflock>