We use application scope variables solely as "constants". We
set their values in the application.cfc OnApplicationStart. Their
values are then only ever read, never written to.

1. I put cflock statements around them in application.cfc. Is
this really necessary?

2. Do I still need to put cflock statements with
type="READONLY" when they're referenced in templates? Again, need
to emphasize, their values are *never* rewritten. They are only
ever read. This is by design, and is a standard we use, so there
will never be a future situation where an application scope
variable is written to outside of OnApplicationStart.

Yes, one generally does not need to lock access to shared
scope
variables, such as application, unless there is a risk of
race
conditions that could cause a problem. In other words, if
there is no
risk of a race condition, or even if there is a race
condition it does
not cause a problem, i.e. 90% of the time, then there is no
need to lock.

Over locking code unnecessary can have performance and
throughput
consequences to an applications scalability.

This advice is generally left over from ColdFusion 4.5 days,
when there
was a bug in CF that could cause memory leak problems if
shared scope
variables where not religiously locked. This problem has been
resolved
for years, but the advice persists.