<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Simon Whatley &#187; Adobe ColdFusion</title>
	<atom:link href="http://www.simonwhatley.co.uk/tag/adobe-coldfusion/feed" rel="self" type="application/rss+xml" />
	<link>http://www.simonwhatley.co.uk</link>
	<description>The opposite of every great idea is another great idea</description>
	<lastBuildDate>Wed, 11 Aug 2010 09:49:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Adobe ColdFusion 9 License Terms in Plain English</title>
		<link>http://www.simonwhatley.co.uk/adobe-coldfusion-9-license-terms-in-plain-english</link>
		<comments>http://www.simonwhatley.co.uk/adobe-coldfusion-9-license-terms-in-plain-english#comments</comments>
		<pubDate>Thu, 28 Jan 2010 12:58:46 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[Adobe Systems Inc]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[Cloud infrastructure]]></category>
		<category><![CDATA[cloud network]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Computer software]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Multi-core]]></category>
		<category><![CDATA[Rackspace Cloud]]></category>
		<category><![CDATA[Software license agreement]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Virtual Machine]]></category>
		<category><![CDATA[Virtualization software licensing]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=2212</guid>
		<description><![CDATA[If like me, you’ve been struggling to understand the legalese of the Adobe ColdFusion 9 EULA, I have put together a brief and hopefully, helpful summary of what it actually means in in plain English.]]></description>
			<content:encoded><![CDATA[<p>If like me, you&#8217;ve been struggling to understand the legalese of the Adobe ColdFusion 9 <abbr title="End User License Agreement">EULA</abbr>, I have put together a brief and hopefully, helpful summary of what it actually means in <em>in plain English</em>.</p>
<p>The sections we&#8217;re really interested in are 3.1.1 and 3.1.2. These are detailed below.</p>
<p>Regarding production software on a per-<abbr title="Central Processing Unit">CPU</abbr> and Virtual Machine (<abbr title="Virtual Machine">VM</abbr>) basis:</p>
<blockquote><p>3.1.1 Adobe grants Licensee a license to install and use the Software as Production Software on a per-CPU basis as provided in a separate writing. The total number of CPUs of all of the Computers on which the Software operates may not exceed the total number of CPUs separately licensed. For purposes of this License Metric, (a) all CPUs on a Computer on which the Software is installed shall be deemed to operate the Software unless Licensee configures that Computer (using a reliable and verifiable means of hardware or software partitioning) such that the total number of CPUs that actually operate the Software is less than the total number on that Computer, and (b) a CPU shall mean a single, physical chip with the capability of housing multiple processor cores. If Licensee purchases a 2-CPU Production Software license, then each CPU to which it applies such license must reside in the same Computer. In the event that Licensee desires to apply 2-CPU Production Software licenses to Virtual Machines, then (c) for the Standard version of the Software, the number of 2-CPU licenses required shall be the greater of (i) the number of available physical CPUs for all instances of the Software divided by two (any fractions shall be rounded up for purposes of this provision), or (ii) the total number of Virtual Machines on all Computers on which the Software is installed, and (d) for the Enterprise version of the Software, the number of 2-CPU licenses required shall be the number of physical CPUs on which the Software operates divided by two (any fractions shall be rounded up for purposes of this provision).</p></blockquote>
<p>The key information here is:</p>
<ul>
<li>The Standard license is charged per 2-CPU or per-VM, which ever is greater.</li>
<li>The Enterprise license is charged per 2-CPU.</li>
</ul>
<p>But what does this actually mean for <em>Joe Bloggs</em>? Fortunately the guys at Adobe, via <a href="http://twitter.com/coldfusion" title="Twitter: @coldfusion" target="_blank" rel="nofollow">Twitter</a>, were on hand to help.</p>
<p>Here is a little table that should whet your appetite:</p>
<table>
<thead>
<tr>
<th scope="col" colspan="2">Server Configuration</th>
<th scope="col" colspan="2">Number of Licenses Required</th>
</tr>
<tr>
<th scope="col"><abbr title="Central Processing Unit">CPU</abbr></th>
<th scope="col"><abbr title="Virtual Machine">VM</abbr></th>
<th scope="col">Standard</th>
<th scope="col">Enterprise</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>0</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>4</td>
<td>0</td>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td colspan="4">&nbsp;</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>2</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>4</td>
<td>4</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>6</td>
<td>6</td>
<td>1</td>
</tr>
<tr>
<td colspan="4">&nbsp;</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
<td>2</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>4</td>
<td>4</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>6</td>
<td>6</td>
<td>1</td>
</tr>
<tr>
<td colspan="4">&nbsp;</td>
</tr>
<tr>
<td>4</td>
<td>2</td>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td>4</td>
<td>4</td>
<td>4</td>
<td>2</td>
</tr>
<tr>
<td>4</td>
<td>6</td>
<td>6</td>
<td>2</td>
</tr>
</tbody>
</table>
<p>Regarding production software on a cloud network:</p>
<blockquote><p>3.1.2 Adobe grants Licensee a license to install and use the Software as Production Software on a Cloud Network on a per-instance basis as provided in a separate writing. The total number of instances that may run on a Cloud Network may not exceed the total number of instances separately licensed. Licensee must purchase and apply 1 instance license to each use of the Standard version of the Software. Licensee may apply 10 instances for each license purchased of the Enterprise version of the Software.</p></blockquote>
<p>The key information here is:</p>
<ul>
<li>The Standard license supports cloud computing, but for each instance, 1 license must be applied.</li>
<li>The Enterprise license supports up to 10 cloud instances, e.g. on Amazon EC3, Azure, Joyent, Rackspace Cloud etc.</li>
</ul>
<p>In essence, if you&#8217;re going to run a [decent] virtual machine environment, or indeed a cloud environment, it would be far more cost efficient to run ColdFusion Enterprise, since it is costed by the number of virtual machines or increments of 10 cloud instances.</p>
<p>You can download the original <a href="http://www.adobe.com/products/eulas/pdfs/adobe_coldFusion_combined_20090811_0930.pdf" title="Adobe ColdFusion 9 EULA" target="_blank" rel="nofollow">Adobe ColdFusion 9 EULA</a> (PDF 400K) from the Adobe website.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/adobe-coldfusion-9-license-terms-in-plain-english/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Secure Your Application &#8211; PCI DSS Specifications</title>
		<link>http://www.simonwhatley.co.uk/secure-your-application-pci-dss-specifications</link>
		<comments>http://www.simonwhatley.co.uk/secure-your-application-pci-dss-specifications#comments</comments>
		<pubDate>Mon, 26 Jan 2009 11:19:37 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[American Express]]></category>
		<category><![CDATA[anti-virus software]]></category>
		<category><![CDATA[Applications]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[Authentication]]></category>
		<category><![CDATA[BlueDragon]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[ColdFusion Administrator]]></category>
		<category><![CDATA[company processing]]></category>
		<category><![CDATA[compliance]]></category>
		<category><![CDATA[control measures]]></category>
		<category><![CDATA[Data Security Standard]]></category>
		<category><![CDATA[database server]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Discover Financial Services]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JCB International]]></category>
		<category><![CDATA[Manitoba]]></category>
		<category><![CDATA[Mastercard Worldwide]]></category>
		<category><![CDATA[Payment Card Industry]]></category>
		<category><![CDATA[Payment Card Industry Security Standards Council]]></category>
		<category><![CDATA[payment card processing]]></category>
		<category><![CDATA[Payment Processors]]></category>
		<category><![CDATA[PCI DSS]]></category>
		<category><![CDATA[public networks]]></category>
		<category><![CDATA[Railo]]></category>
		<category><![CDATA[raw processing]]></category>
		<category><![CDATA[RDBMS]]></category>
		<category><![CDATA[regulations]]></category>
		<category><![CDATA[secure]]></category>
		<category><![CDATA[secure systems]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Security Standards Council]]></category>
		<category><![CDATA[security systems]]></category>
		<category><![CDATA[Server Side]]></category>
		<category><![CDATA[software developers]]></category>
		<category><![CDATA[software releases]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SSC]]></category>
		<category><![CDATA[the Council]]></category>
		<category><![CDATA[Visa]]></category>
		<category><![CDATA[Visa Inc .]]></category>
		<category><![CDATA[web application]]></category>
		<category><![CDATA[web application developers]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[web code]]></category>
		<category><![CDATA[Web Servers]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=1785</guid>
		<description><![CDATA[PCI DSS stands for Payment Card Industry Data Security Standard, and is a worldwide security standard assembled by the Payment Card Industry Security Standards Council (PCI SSC). The PCI security standards are technical and operational requirements that were created to help organizations that process card payments prevent credit card fraud, hacking and various other security vulnerabilities and threats. The standards apply to all organizations that store, process or transmit cardholder data – with guidance for software developers and manufacturers of applications and devices used in those transactions. A company processing, storing, or transmitting cardholder data must be PCI DSS compliant.]]></description>
			<content:encoded><![CDATA[<p>PCI DSS stands for <a href="https://www.pcisecuritystandards.org/" title="Payment Card Industry Data Security Standard website" target="_blank" rel="nofollow">Payment Card Industry Data Security Standard</a>, and is a worldwide security standard assembled by the Payment Card Industry Security Standards Council (<abbr title="Payment Card Industry">PCI</abbr> <abbr title="Security Standards Council">SSC</abbr>). The <abbr title="Payment Card Industry">PCI</abbr> security standards are technical and operational requirements that were created to help organizations that process card payments prevent credit card fraud, hacking and various other security vulnerabilities and threats. The standards apply to all organizations that store, process or transmit cardholder data – with guidance for software developers and manufacturers of applications and devices used in those transactions. A company processing, storing, or transmitting cardholder data must be <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Data Security Standard">DSS</abbr> compliant.</p>
<p><a href="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2009/01/payment-card-data.png"><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2009/01/payment-card-data.png" alt="Types of Data on a Payment Card" title="Types of Data on a Payment Card" width="600" height="255" class="aligncenter size-full wp-image-1815" /></a></p>
<p>The <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Security Standards Council">SSC</abbr> (<q>Council</q>) is responsible for managing the security standards, while compliance with the <abbr title="Payment Card Industry">PCI</abbr> set of standards is enforced by the founding members of the Council: <a href="http://www.americanexpress.com/datasecurity" title="American Express" target="_blank" rel="nofollow">American Express</a>, <a href="http://www.discovernetwork.com/fraudsecurity/disc.html" title="Discover Financial Services" target="_blank" rel="nofollow">Discover Financial Services</a>, <a href="http://www.jcb-global.com/english/pci/index.html" title="JCB International" target="_blank" rel="nofollow">JCB International</a>, <a href="http://www.mastercard.com/sdp" title="MasterCard Worldwide" target="_blank" rel="nofollow">MasterCard Worldwide</a> and <a href="http://www.visa.com/cisp" title="Visa" target="_blank" rel="nofollow">Visa Inc</a>. Non-compliant companies who maintain a relationship with one or more of the card brands, either directly or through an acquirer risk losing their ability to process credit card payments and being audited and/or fined.</p>
<p>All in-scope companies must validate their compliance annually. This validation can be conducted by Qualified Security Assessors, i.e. companies that have completed a <a href="https://www.pcisecuritystandards.org/qsa_asv/become_qsa.shtml" title="PCI: Becoming a Qualified Security Assessor" target="_blank" rel="nofollow">three-step certification process</a> by the <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Security Standards Council">SSC</abbr> which recognises them as being qualified to assess compliance to the <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Data Security Standard">DSS</abbr> standard. However, smaller companies have the option to use a <a href="https://www.pcisecuritystandards.org/saq/index.shtml" title="PCI Self-Assessment Questionnaire" target="_blank" rel="nofollow">Self-Assessment Questionnaire</a>. Whether this questionnaire needs to be validated by a <abbr title="Qualified Security Assessors">QSA</abbr> depends on the requirements of the card brands in that merchant&#8217;s region.</p>
<p>The current version of the standard specifies 12 requirements for compliance, organised into 6 logically related groups, which are called &#8220;control objectives.&#8221;</p>
<ol>
<li>Build and Maintain a Secure Network
<ul>
<li>Requirement 1: Install and maintain a firewall configuration to protect cardholder data</li>
<li>Requirement 2: Do not use vendor-supplied defaults for system passwords and other security parameters</li>
</ul>
</li>
<li>Protect Cardholder Data
<ul>
<li>Requirement 3: Protect stored cardholder data</li>
<li>Requirement 4: Encrypt transmission of cardholder data across open, public networks</li>
</ul>
</li>
<li>Maintain a Vulnerability Management Program
<ul>
<li>Requirement 5: Use and regularly update anti-virus software</li>
<li>Requirement 6: Develop and maintain secure systems and applications</li>
</ul>
</li>
<li>Implement Strong Access Control Measures
<ul>
<li>Requirement 7: Restrict access to cardholder data by business need-to-know</li>
<li>Requirement 8: Assign a unique ID to each person with computer access</li>
<li>Requirement 9: Restrict physical access to cardholder data</li>
</ul>
</li>
<li>Regularly Monitor and Test Networks
<ul>
<li>Requirement 10: Track and monitor all access to network resources and cardholder data</li>
<li>Requirement 11: Regularly test security systems and processes</li>
</ul>
</li>
<li>Maintain an Information Security Policy
<ul>
<li>Requirement 12: Maintain a policy that addresses information security</li>
</ul>
</li>
</ol>
<p>Compliance with these requirements can be summarized into 3 main stages:</p>
<ul>
<li>Collecting and storing: Secure collection and tamper-proof storage of all log data so that it is available for analysis.</li>
<li>Reporting: Being able to prove compliance on the spot if audited and present evidence that controls are in place for protecting data.</li>
<li>Monitoring and alerting: Have systems in place such as auto-alerting, to help administrators constantly monitor access and usage of data. Administrators are warned of problems immediately and can rapidly address them. These systems should also extend to the log data itself –- there must be proof that log data is being collected and stored.</li>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>What does this actually mean for web application developers?</h3>
<p>It is considerably more expensive and more time-consuming to recover from a security incident than to take preventative measures ahead of time. If you follow the guidelines below, you will go along way to securing you application in line with the <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Data Security Standards">DSS</abbr> regulations. Many of the measures apply to general application security, but since <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Data Security Standards">DSS</abbr> is all about security, they are worth mentioning.</p>
<p>Server-level Security:</p>
<ul>
<li>Separate web- and database-servers on to different physical machines.</li>
<li>Secure the web- and database-servers with traditional techniques. Only authorised accounts should have the capabilities to run tasks on the machine. That means not giving admin-rights to the user account.</li>
<li>Keep servers up-to-date with the latest patches and software releases.</li>
<li>Minimise the number of services running on the server. This means limiting the services to only those required for the web- or database-servers to function.</li>
<li>Secure information in transit between servers. This may mean physically securing the network to prevent evesdropping via encryption or obfuscating the data amongst innocuous &#8216;noise&#8217;.</li>
<li>Secure the database server behind a firewall.</li>
</ul>
<p>Application-level Security:</p>
<ul>
<li>Separate ColdFusion, the webserver and database server user accounts. They should never be under the same system account.</li>
<li>Create a database user specifically for your ColdFusion datasource and restrict it to only the activities required for the application. The user should not have database-owner rights, access to databases not relating to the application or access to the system tables.</li>
<li>Revoke privileges in the ColdFusion datasource definition to prevent the <abbr title="Structured Query Language">SQL</abbr> commands <code>CREATE</code>, <code>DROP</code>, <code>GRANT</code>, <code>REVOKE</code> and <code>ALTER</code>.</li>
<li>General settings in the ColdFusion Administrator:
<ul>
<li>Check the <em>Disable access to internal ColdFusion Java components</em> option.</li>
<li>Check the <em>Enable Global Script Protection</em> option.</li>
<li>Add a <em>Missing Template Handler</em>.</li>
<li>Add a <em>Site-wide Error Handler</em>.</li>
<li>Reduce the <em>Maximum size of post data</em> from 100<abbr title="megabytes">MB</abbr>.</li>
<li>Enable <em>Timeout Requests</em>, and set to 60 seconds or less.</li>
<li>Disable <em>Robust Exception Handling</em> on production servers.</li>
</ul>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>Web Application-level Security:</p>
<ul>
<li>Use secure HTTP to transfer data and/or when logged into &#8216;administration&#8217; secutions of your web application.</li>
<li>Timeout sessions after 15 minutes and on browser close.</li>
<li>Provide multi-level login processes. For example, lock the application after 3 failed attempts for a period of 10 minutes.</li>
<li>Do not identify whether the username or password are incorrect, simply notify the user that their login failed and that they must try again.</li>
<li>Encrypt passwords stored in the database with a standard such as <a href="http://en.wikipedia.org/wiki/SHA_hash_functions" title="Wikipedia: SHA cryptographic has function" target="_blank" rel="nofollow">SHA-256</a> or &#8216;stronger&#8217;.</li>
<li>Use <a href="http://en.wikipedia.org/wiki/Captcha" title="Wikipedia: CAPTCHA" target="_blank" rel="nofollow">CAPTCHA</a>s (textual and aural) to prevent automated robots hacking into your application.</li>
<li>Run regular penetration tests on your application to identify potential problems.</li>
<li>Encrypt credit card information held in the database or other storage mechanism. Only store credit card data in line with the <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Data Security Standards">DSS</abbr> regulations.</li>
</ul>
<p>Code-level Security:</p>
<ul>
<li>Application.cfc &#8211; Set the <code>scriptProtect</code> Application variable to <code>true</code> to enable application-wide cross-site script protection.
</li>
<li>CFQueryParam &#8211; This tag, importantly, verifies the data type of a query parameter and, for <abbr title="Relational Database Management Systems">RDBMS</abbr>s that support bind variables, enables ColdFusion to use bind variables in the <acronym title="Structured Query Language">SQL</acronym> statement. Bind variable usage enhances performance when executing a <code>cfquery</code> statement multiple times. There are limitations to the use of the <code>cfqueryparam</code> tag. In ColdFusion 7 for example, you cannot use them in queries using the <code>cachedWithin</code> attribute. Similarly, they cannot be used in <code>ORDER BY</code> clauses, although the use of conditional logic should resolve the need for order by variables.
</li>
<li>Functions &#8211; As a rule of thumb, validate <em>all</em> the data being passed into a query prior to it being used. ColdFusion MX 7 saw the introduction of the <code>isValid()</code> function. This function tests whether a value meets a validation or data type rule and can be used to replace a large number of type-specific functions such as <code>isArray()</code>, <code>isBinary()</code>, <code>isBoolean()</code>, <code>isDate()</code>, <code>isNumeric()</code> and <code>isSimpleValue()</code> etc.
</li>
<li>Stored Procedures &#8211; I often favour the use of stored procedures over standard queries. Not only do they add an additional level of performance, they provide an additional level of security; ColdFusion does not do any raw processing of queries in the web code, it simply passes variables down the wire to the database server.</li>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Conclusion</h3>
<p>The goal of the <abbr title="Payment Card Industry">PCI</abbr> Data Security Standard is to protect cardholder data that is processed, stored or transmitted by merchants. The security controls and processes required by <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Data Security Standards">DSS</abbr> are vital for protecting cardholder account data, including the <abbr title="primary account number">PAN</abbr> &#8211; the primary account number printed on the front of a payment card. Merchants and any other service providers involved with payment card processing must never store sensitive authentication data after authorisation. This includes sensitive data that is printed on a card, or stored on a card’s magnetic stripe or chip &#8211; and personal identification numbers entered by the cardholder.</p>
<p>By following the points made above, you will go a long way to meeting the <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Data Security Standards">DSS</abbr> guidelines, whilst also securing your infrastructure and applications in a more general sense.</p>
<p><strong>Caveat:</strong> The views and comments written in this article are provided as a guideline. I hold no responsibility for the security of your applications and data based upon the information provided.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/secure-your-application-pci-dss-specifications/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe&#039;s LiveCycle Powered by Amazon&#039;s Cloud</title>
		<link>http://www.simonwhatley.co.uk/adobes-livecycle-powered-by-amazons-cloud</link>
		<comments>http://www.simonwhatley.co.uk/adobes-livecycle-powered-by-amazons-cloud#comments</comments>
		<pubDate>Wed, 14 Jan 2009 12:07:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[Adobe LiveCycle]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[chief rival]]></category>
		<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[content services]]></category>
		<category><![CDATA[correspondence management]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[elastic cloud computing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[information technology]]></category>
		<category><![CDATA[infrastructure web services platform]]></category>
		<category><![CDATA[installation of LiveCycle ES Solution Components]]></category>
		<category><![CDATA[Internet-based information technology services]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[LiveCycle]]></category>
		<category><![CDATA[LiveCycle Enterprise Suite]]></category>
		<category><![CDATA[Podcast]]></category>
		<category><![CDATA[process management]]></category>
		<category><![CDATA[Railo]]></category>
		<category><![CDATA[recent technology trends]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[server software product]]></category>
		<category><![CDATA[simple storage service]]></category>
		<category><![CDATA[technology infrastructure]]></category>
		<category><![CDATA[term cloud computing]]></category>
		<category><![CDATA[utility computing]]></category>
		<category><![CDATA[Web Browser]]></category>
		<category><![CDATA[web services]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=1757</guid>
		<description><![CDATA[Adobe recently announced, in conjunction with Amazon, that they would bring LiveCycle to Amazon’s Elastic Compute Cloud (EC2).]]></description>
			<content:encoded><![CDATA[<p>Adobe recently announced, in conjunction with Amazon, that they would bring LiveCycle to Amazon&#8217;s Elastic Compute Cloud (<abbr title="Elastic Compute Cloud">EC2</abbr>). To quote Adobe:</p>
<blockquote><p>
Adobe is now offering developers subscribed to the Adobe Enterprise Developer Program access to their own virtual instance of LiveCycle ES through LiveCycle ES Developer Express. LiveCycle ES Developer Express provides a pre-configured, virtualized installation of LiveCycle ES Solution Components in a self-contained development environment. LiveCycle ES Developer Express is hosted on the Amazon Elastic Compute Cloud (Amazon EC2). AEDP members can test, build, store and develop their applications in a cloud-base environment where all LiveCycle ES applications are pre-configured and running. The Adobe Enterprise Developer Program will offer a minimum of 10 hours of runtime per month, with additional hours to be available separately.</p></blockquote>
<h3>What is cloud computing and why is it important?</h3>
<p>The term cloud computing, as used by some commentators, refers to the use of scalable, real-time, Internet-based information technology services and resources. This somewhat nebulous concept incorporates software as a service (<abbr title="software as a servic">SaaS</abbr>), utility computing, <a href="http://en.wikipedia.org/wiki/Web_2.0" title="Wikipedia: Web 2.0" target="_blank" rel="nofollow">Web 2.0</a> and other recent technology trends. The common theme stresses reliance on the Internet for satisfying the computing needs of users, without them needing knowledge of, expertise with, or control over the technology infrastructure that supports them. An often-quoted example is <a href="http://www.google.com/apps/intl/en/business/index.html" title="Google Apps" target="_blank" rel="nofollow">Google Apps</a>, which provides common business applications online that are accessed from a web browser, while the software and data are stored on Google servers.</p>
<p>The cloud element of cloud computing derives from a metaphor used for the Internet, from the way it is often depicted in computer network diagrams, and is an abstraction for the complex infrastructure it conceals.</p>
<h3>How do Adobe and Amazon fit into the equation?</h3>
<p>Adobe and Amazon have similar goals. They both want to gain more share of the enterprise market. Amazon needs to convince the enterprise that its version of the cloud is capable of supporting the demands of enterprise applications. On the other hand Adobe wants to convince the developers who already use <abbr title="Amazon Web Services">AWS</abbr> that LiveCycle is the platform of choice for the enterprise.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>What is Adobe LiveCycle?</h3>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2009/01/logo_adobe_livecycle1.jpg" alt="Adobe LiveCycle" title="Adobe LiveCycle" width="102" height="105" class="alignleft size-full wp-image-1769" />Adobe&#8217;s <a href="http://www.adobe.com/products/livecycle/" title="Adobe LiveCycle" target="_blank" rel="nofollow">LiveCycle Enterprise Suite</a> is a <abbr title="Java 2 Enterprise Edition">J2EE</abbr>-based server software product used to build applications that automate a broad range of business processes for enterprises and government agencies.</p>
<p>LiveCycle combines technologies for data capture, information assurance, document output, content services, and process management to deliver solutions such as account opening, services and benefits enrollment, correspondence management, request for proposal processes, and other manual based workflows.</p>
<h3>What are Amazon Webservices?</h3>
<p><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2009/01/logo_aws.gif" alt="Amazon Webservices Logo" title="Amazon Webservices Logo" width="164" height="60" class="alignright size-full wp-image-1762" />Since early 2006, <a href="http://aws.amazon.com" title="Amazon Web Services" target="_blank" rel="nofollow">Amazon Web Services</a> (<abbr title="Amazon Web Services">AWS</abbr>) has provided companies of all sizes with an infrastructure web services platform in <a href="http://en.wikipedia.org/wiki/Cloud_computing" title="Wikipedia: Cloud Computing" target="_blank" rel="nofollow">the cloud</a>. With <abbr title="Amazon Web Services">AWS</abbr> you can requisition compute power, storage, and other services–gaining access to a suite of elastic <abbr title="Information Technology">IT</abbr> infrastructure services as your business demands them. With <abbr title="Amazon Web Services">AWS</abbr> you have the flexibility to choose whichever development platform or programming model makes the most sense for the problems you’re trying to solve. You pay only for what you use, with no up-front expenses or long-term commitments, making <abbr title="Amazon Web Services">AWS</abbr> a cost-effective way to deliver applications to customers and clients.</p>
<h3>How do they fit together?</h3>
<p>Essentially, Adobe has put a Red Hat <a href="http://www.jboss.org" title="JBoss" target="_blank" rel="nofollow">JBoss</a> <abbr title="Java 2 Enterprise Edition">J2EE</abbr> stack on <abbr title="Amazon Web Services">AWS</abbr> and deployed LiveCycle on the stack. Adobe state that this platform is purely for prototyping, developing and testing applications, rather than production environments, but that is likely to change.</p>
<h3>The future</h3>
<p>Deploying LiveCycle on <abbr title="Amazon Web Services">AWS</abbr> has wider implications, not only for Adobe products. By setting up a J2EE stack on <abbr title="Amazon Web Services">AWS</abbr> it makes it possible to deploy any Java-based application; yes that does mean one developed in Adobe&#8217;s ColdFusion or indeed its chief rival, Railo.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/adobes-livecycle-powered-by-amazons-cloud/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Let&#039;s not Dilly-Dally: ColdFusion has its Merits</title>
		<link>http://www.simonwhatley.co.uk/lets-not-dilly-dally-coldfusion-has-its-merits</link>
		<comments>http://www.simonwhatley.co.uk/lets-not-dilly-dally-coldfusion-has-its-merits#comments</comments>
		<pubDate>Fri, 09 Jan 2009 10:58:36 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[administrator]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Atom]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[content management]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[enterprise-level search]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[fundamentals]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Internet Applications]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rapid application development]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[The Web]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[web technology]]></category>
		<category><![CDATA[web world]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=1734</guid>
		<description><![CDATA[ColdFusion is 13 years old. That make makes it the daddy of the web world! It does not make it any less hip or useful than the relatively new kids on the block. Let's not dilly-dally, bicker or insult one another about which is best, which one is dying and which one is not worth the computer it is compiled on. What is important is to understand the merits of each language and decide which one best suits the application, not only in technical terms, but also in terms of time-to-market, cost of development, availability of a skilled workforce etc.]]></description>
			<content:encoded><![CDATA[<p>ColdFusion is 13 years old. That make makes it the daddy of the web world! It does not make it any less hip or useful than the relatively new kids on the block.</p>
<p>Take this scenario. A company I once worked for had what can be described as a business directory built upon a licensed, yet bastardised, version of a popular ColdFusion-based <abbr title="Content Management System">CMS</abbr>. It didn&#8217;t work that well! The decision was made to redevelop the application in Java. It took two years to reach the same level of functionality! What happened next? Ruby-on-Rails is what! The rest is history and beyond the topic of this post.</p>
<p>So, in effect, the application almost went full-circle in its development paradigm &#8212; both ColdFusion and Ruby-on-Rails can be considered <q>Rapid Application Development</q> environments, Java, certainly not. Why did the decision makers not stick with ColdFusion and put time aside to actually build it properly in the first place? To put it simply, they lost faith in ColdFusion; it was largely mis-understood.</p>
<p>The weakness of every programming language does not lie with the language itself per se &#8212; albeit it can have an important influencing factor &#8212; but rather with the ability, or indeed inability, of the developer to leverage the language in the most efficient and optimal way.</p>
<p>ColdFusion, like every other programming language has had and I&#8217;m sure still does have its fair share of poor developers; those people simply working with it as a means-to-an-end, rather than those passionate about the language, those people programming without understanding the fundamentals of programming or the implications of their poorly written code. This is apparent from .NET to Java, ColdFusion to Ruby, JavaScript to ActionScript.</p>
<p>Let&#8217;s not dilly-dally, bicker or insult one another about which is best, which one is dying and which one is not worth the computer it is compiled on. What is important is to understand the merits of each language and decide which one best suits the application, not only in technical terms, but also in terms of time-to-market, cost of development, availability of a skilled workforce etc.</p>
<p>ColdFusion, whether rightly or wrongly in some people&#8217;s opinion, can sit proudly amongst its peers and provide a truly compelling alternative.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>Here&#8217;s how (in no particular order):</p>
<ol>
<li>Low Total Cost of Ownership &#8211; frequently, ColdFusion is described as expensive, it simply isn&#8217;t especially if you consider the natively supported functions. But to put it bluntly, if your company cannot afford the cost of ColdFusion standard, or indeed ColdFusion hosting, you have bigger things to worry about regarding the profitability of the company; you won&#8217;t be able to afford much of anything! The problem becomes not the product. ColdFusion applications are quicker to develop and developers are vastly cheaper to employ than their peers in Java or Ruby, just look at <a href="http://www.itjobswatch.co.uk/" title="ITJobsWatch" target="_blank" rel="nofollow">ITJobsWatch</a> for examples.</li>
<li>Rapid Application Development &#8211; ColdFusion vastly simplifies tasks. What would take other languages numerous lines of code to produce is efficiently encapsulated either in a tag or function or as a setting in the administrator. This is a simplistic yet indicative example: where else can you connected to a database simply with one line of code or indeed simply by name? ColdFusion changed the idea of specifying development time in terms of months and years to weeks and months or small features a matter of hours and days. Simplicity is not the mother or all evil. To be pragmatic, simplification reduces costs.</li>
<li>Rich Internet Applications &#8211; ColdFusion may or may not have pioneered the <abbr title="Rich Internet Application">RIA</abbr> paradigm, but it has played a significant supporting role to Flash and now Flex. ColdFusion natively supports Flash remoting, providing the all important data access tier.</li>
<li>Platform Maturity &#8211; ColdFusion 8 is built upon the latest version of Java (1.6). Along with internal improvements to the ColdFusion application, this has afforded ColdFusion unprecedented speed improvements and stability.</li>
<li>Language Maturity &#8211; with each major release of ColdFusion comes many language enhancements added to the core. This means that previous addons, for example image manipulation, which came at a premium are now standard. Adobe and other companies that produce <abbr title="ColdFusion Markup Language">CFML</abbr> engines are now participating in  a <abbr title="ColdFusion Markup Language">CFML</abbr> advisory committee, which aims to set standards for the core language. This is not only a sign of maturity but a letter of intent by the industry that will mean your application will work on any engine, assuming no proprietary functionality is used.</li>
<li>The Ultimate Middleware &#8211; ColdFusion sits comfortably between any backend and front end system. Be it interfacing with a host of databases, Java, .NET, <abbr title="Component Object Model">COM</abbr>, Corba or connecting to classic <abbr title="HyperText Manrkup Language">HTML</abbr> or rich Flash, Flex and <abbr title="Asynchronous JavaScript and XML">AJAX</abbr> frontends with little or no configuration.</li>
<li>Feature Rich &#8211; what other web technology <strong>natively</strong> supports <abbr title="">PDF</abbr> generation, charting, enterprise-level search, <abbr title="Asynchronous JavaScript and XML">AJAX</abbr>, image manipulation, Atom and <abbr title="Really Simple Syndication">RSS</abbr> creation, Zip and <abbr title="Java Archive">JAR</abbr> file manipulation, a server monitor, Flex integration, encryption libraries, all important database connectors, webservice creation, <abbr title="">XML</abbr> manipulation, inbuilt reporting application (similar to Crystal Reports), email, <abbr title="File Transfer Protocol">FTP</abbr> to name but a few? I hazard a guess at none, unless you&#8217;re happy to pay a premium.</li>
<li>Platform Independent &#8211; since ColdFusion 6, when Macromedia redeveloped the entire application in Java, ColdFusion has been platform independent. You can install it on practically any machine.</li>
<li>OpenSource Alternatives &#8211; BlueDragon and Railo are both significant alternatives to Adobe ColdFusion and both have opensource alternatives, the latter of the two having recently joined the JBoss community. Adobe are also considering providing a free edition to academic institutions.</li>
<li>The Future &#8211; many commentators have mentioned Hibernate as a significant addition to the next release of ColdFusion, version 9. But having seen the prerelease notes, that is not all that will be added. Alas I&#8217;m under <abbr title="Non-Disclosure Agreement">NDA</abbr>, but rest assured, there is going to be a significant intake of breath when developers get hold of the next release. ColdFusion 8 was firmly geared towards middle management with fuzzy additions, ColdFusion 9 is set to re-address the balance with compelling language and functionality enhancements.</li>
</ol>
<p>ColdFusion evangelism needs to step up a gear! Adobe certainly doesn&#8217;t afford much marketing budget to the product, prefering <q>The Community</q> do the hard work. It is not always easy convincing the decision makers that ColdFusion is a good product of choice, without Adobe&#8217;s unnerving support, but we have to work hard, break down those barriers, encroach on events outside the comfortable sphere of the ColdFusion world and demonstrate ColdFusion&#8217;s match-winning ability.</p>
<p>ColdFusion isn’t dying, it’s simply niche. Every niche has its place.</p>
<p><strong>UPDATE:</strong> If you would like to view the ensuing debate regarding ColdFusion prompted by <a href="http://aralbalkan.com/1864" title="Aral Balkan - Why learning ColdFusion today is a waste of time." target="_blank" rel="nofollow">Aral Balkan</a>, feel free to do so. This post should serve as a positive reminder of ColdFusion&#8217;s virtues, alongside the need for a balanced and polite debate.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/lets-not-dilly-dally-coldfusion-has-its-merits/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript Frameworks &#8211; Let There Be Light</title>
		<link>http://www.simonwhatley.co.uk/javascript-frameworks-let-there-be-light</link>
		<comments>http://www.simonwhatley.co.uk/javascript-frameworks-let-there-be-light#comments</comments>
		<pubDate>Wed, 16 Jul 2008 17:27:58 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[client-side]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[Server Side]]></category>
		<category><![CDATA[server-side technology]]></category>
		<category><![CDATA[Spry]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[web developers]]></category>
		<category><![CDATA[Yahoo]]></category>
		<category><![CDATA[Yahoo user interface]]></category>
		<category><![CDATA[Yahoo! User Interface Library]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=599</guid>
		<description><![CDATA[For many web developers, whenever JavaScript is mentioned it provokes a rye smile; JavaScript is one of those programming languages that is rather avoided than embraced. This is not the fault of the language itself, but rather the browsers.]]></description>
			<content:encoded><![CDATA[<p>For many web developers, whenever JavaScript is mentioned it provokes a rye smile; JavaScript is one of those programming languages that is rather avoided than embraced. This is not the fault of the language itself, but rather the browsers. A few years ago, the landscape of client-side scripting was a bleak scene. Browser inconsistencies, particularly with the dominant Internet Explorer, implementation bugs and numerous target platforms made developing client-side JavaScript a tricky undertaking.</p>
<p>To the consternation of these same developers, the landscape changed and Web 2.0 hit the mainstream. Almost overnight, every website on the internet wanted to use or was using AJAX. Marketers joined the bandwaggon and every feature requested had to involve something dynamic and revolutionary. Thus JavaScript development quickly hit the forefront of peoples minds and became as important as any server-side technology available at the time.</p>
<p>Over the next few blog posts, I will be using the popular frameworks <a href="http://jquery.com" title="jQuery" target="_blank" rel="nofollow">jQuery</a>, <a href="http://developer.yahoo.com/yui/" title="Yahoo! User Interface Library" target="_blank" rel="nofollow">Yahoo! User Interface Library</a> (<abbr title="Yahoo User Interface">YUI</abbr>), <a href="http://extjs.com" title="ExtJS" target="_blank" rel="nofollow">ExtJS</a> and Adobe&#8217;s <a href="http://labs.adobe.com/technologies/spry/" title="Spry" target="_blank" rel="nofollow">Spry</a> with ColdFusion to demonstrate various techniques, such as autocomplete and form validation.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/javascript-frameworks-let-there-be-light/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion Becomes a Teenager</title>
		<link>http://www.simonwhatley.co.uk/coldfusion-becomes-a-teenager</link>
		<comments>http://www.simonwhatley.co.uk/coldfusion-becomes-a-teenager#comments</comments>
		<pubDate>Thu, 10 Jul 2008 18:14:36 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[1999]]></category>
		<category><![CDATA[2001]]></category>
		<category><![CDATA[2005]]></category>
		<category><![CDATA[2007]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[Allaire]]></category>
		<category><![CDATA[Centaur]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[ColdFusion Markup Language]]></category>
		<category><![CDATA[Derby]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash platform]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Internet Applications]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Jeremy Allaire]]></category>
		<category><![CDATA[JJ Allaire]]></category>
		<category><![CDATA[JSP]]></category>
		<category><![CDATA[macromedia]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Neo]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Scorpio]]></category>
		<category><![CDATA[Visual C++]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=591</guid>
		<description><![CDATA[Today ColdFusion moved into the next stage of its life and became a teenager, hopefully not a precocious one!]]></description>
			<content:encoded><![CDATA[<p>Today ColdFusion moved into the next stage of its life and became a teenager, hopefully not a precocious one!</p>
<p><strong>Happy 13<sup>th</sup> Birthday ColdFusion.</strong></p>
<p>Adobe ColdFusion has had a long and illustrious life. The first version of ColdFusion&#8211;written almost entirely by one person, JJ Allaire and then called &#8220;Cold Fusion&#8221;&#8211;was released in 1995. This first version, although revolutionising how web applications were built, was primitive by modern standards, doing little more than database access.</p>
<p>Although originally built in Visual C++, Allaire, around 1999, took the decision to rewrite the entire ColdFusion engine in Java&#8211;a project named &#8220;Neo&#8221;&#8211;which would allow for greater portability among different platforms. The rewrite, released under the monicker MX 6, would prove to be somewhat problematic and a wholescale update to the version resulted.</p>
<p>In 2001 Allaire was acquired by Macromedia. This union brought with it the integration of Macromedia&#8217;s Flash platform via Flash Remoting; a huge step towards rich Internet applications.</p>
<p>In 2005 it was the turn of Macromedia to be acquired and they merged with Adobe. A period of instability in the ColdFusion world resulted, brought about by the knowledge that Adobe was a company that developed tools, not programming languages. However, following a successful release of ColdFusion 8 in 2007 and the announcement that a version 9 would be developed, code-named &#8220;Centaur&#8221;, fears about ColdFusion&#8217;s future have subsided&#8211;albeit the continued debate over &#8220;ColdFusion is Dead&#8221; remains boiling in the background.</p>
<p>The primary distinguishing feature of ColdFusion is its associated scripting language, ColdFusion Markup Language (<abbr title="ColdFusion Markup Language">CFML</abbr>), which compares favourably to its rivals, <abbr title="Java Server Pages">JSP</abbr>, <abbr title="Active Server Pages">ASP</abbr>.NET, or <abbr title="PHP Hypertext Preprocessor">PHP</abbr> and resembles <abbr title="HyperText Markup Language">HTML</abbr> in syntax. &#8220;ColdFusion&#8221; is often used synonymously with &#8220;CFML&#8221;, but it should be noted that there are additional <abbr title="ColdFusion Markup Language">CFML</abbr> application servers besides ColdFusion, and that ColdFusion supports programming languages other than <abbr title="ColdFusion Markup Language">CFML</abbr>, such as server-side Actionscript and embedded scripts that can be written in a JavaScript-like language, known as <abbr title="ColdFusion">CF</abbr>Script. Adobe ColdFusion also includes native support for Flex, <abbr title="Portable Document Format">PDF</abbr>, Verity and the embedded Derby database amongst a host of <a href="http://www.adobe.com/products/coldfusion/features/" title="Features of Adobe ColdFusion" target="_blank" rel="nofollow">other features</a>.</p>
<p>ColdFusion 9 is set to be an exciting release, much like its predecessor, with more features added to the core tag set, whilst also integrating other technologies such <acronym title="Adobe Integrated Runtime">AIR</acronym> and Hibernate.</p>
<p>Exciting times lay ahead. Let&#8217;s hope Adobe takes full advantage with such a fine product.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><strong>See Also:</strong></p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/ColdFusion" title="ColdFusion" target="_blank" rel="nofollow">ColdFusion</a> Wikipedia entry</li>
<li><a href="http://en.wikipedia.org/wiki/ColdFusion_Markup_Language" title="ColdFusion Markup Language" target="_blank" rel="nofollow">ColdFusion Markup Language</a> Wikipedia entry</li>
<li><a href="http://www.www.railo-technologies.com/" title="Railo" target="_blank" rel="nofollow">Railo</a> &#8211; Free, Open Source alternative <abbr title="ColdFusion Markup Language">CFML</abbr> Engine</li>
<li><a href="http://www.smithproject.org" title="SmithProject" target="_blank" rel="nofollow">SmithProject</a> &#8211; Free, Open Source alternative <abbr title="ColdFusion Markup Language">CFML</abbr> Engine</li>
<li><a href="http://www.newatlanta.com/bluedragon/" title="BlueDragon" target="_blank" rel="nofollow">BlueDragon</a> &#8211; Free, Open Source alternative <abbr title="ColdFusion Markup Language">CFML</abbr> Engine</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/coldfusion-becomes-a-teenager/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion Is Hotting Up in the UK</title>
		<link>http://www.simonwhatley.co.uk/coldfusion-is-hotting-up-in-the-uk</link>
		<comments>http://www.simonwhatley.co.uk/coldfusion-is-hotting-up-in-the-uk#comments</comments>
		<pubDate>Fri, 27 Jun 2008 11:56:10 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[Adobe MAX]]></category>
		<category><![CDATA[Aral Balkan]]></category>
		<category><![CDATA[BlueDragon]]></category>
		<category><![CDATA[Brighton]]></category>
		<category><![CDATA[cf.Objective]]></category>
		<category><![CDATA[CFUnited]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Coldspring]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[Edinburgh]]></category>
		<category><![CDATA[europe]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Fusebox]]></category>
		<category><![CDATA[Hal Helms]]></category>
		<category><![CDATA[London]]></category>
		<category><![CDATA[Mach-II]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Model-Glue]]></category>
		<category><![CDATA[Peter Bell]]></category>
		<category><![CDATA[Peter Elst]]></category>
		<category><![CDATA[Railo]]></category>
		<category><![CDATA[Scotch on the Rocks]]></category>
		<category><![CDATA[Sean Corfield]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Simon Bailey]]></category>
		<category><![CDATA[Spry]]></category>
		<category><![CDATA[technology-agnostic topics]]></category>
		<category><![CDATA[united kingdom]]></category>
		<category><![CDATA[United States]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=588</guid>
		<description><![CDATA[In the past, the US has held a near monopoly not only in ColdFusion-based user groups, but also conferences, with CFUnited, cf.Objective() and the more general Adobe MAX leading the way.]]></description>
			<content:encoded><![CDATA[<p>In the past, the <abbr title="United States">US</abbr> has held a near monopoly not only in ColdFusion-based user groups, but also conferences, with <a href="http://cfunited.com/" title="CFUnited" rel="nofollow">CFUnited</a>, <a href="http://www.cfobjective.com/" title="cf.Objective()" rel="nofollow">cf.Objective()</a> and the more general <a href="http://max.adobe.com/" title="Adobe MAX">Adobe MAX</a> leading the way.</p>
<p>But the landscape is changing and the <abbr title="United Kingdom">UK</abbr> is challenging for its share of the scene. 2008 is seeing a renaissance in the ColdFusion world following on from the buzz created around the release of ColdFusion 8 in 2007 and the eagerly anticipated future release of ColdFusion, codenamed Centaur. This buzz has resulted in not one but three conferences for 2008: <a href="http://europe.cfunited.com/" title="CFUnited Europe" rel="nofollow">CFUnited Europe</a> was held in London in March, <a href="http://www.scotch-on-the-rocks.co.uk/" title="Scotch-on-the-Rocks" rel="nofollow">Scotch-on-the-Rocks</a> was held in Edinburgh in June and soon we will see the return of <a href="http://www.cfdevcon.com/" title="CFDevCon" rel="nofollow">CFDevCon</a>.</p>
<p>The inaugural CFDevCon one-day-conference was held back in 2006, in Croydon, but in September 2008 it is heading down to what is arguably one of the creative capitals in the south of England, <a href="http://maps.google.co.uk/maps?f=q&#038;hl=en&#038;geocode=&#038;q=Brighton,+UK&#038;ie=UTF8&#038;ll=50.9342,0.054932&#038;spn=2.271057,4.812012&#038;z=8" title="Google Maps - Brighton" rel="nofollow">Brighton</a>. The conference has not only become a two-day conference, but its scope has moved beyond simply Adobe-based products, with the introduction of Microsoft-based technologies, specifically <abbr title="Internet Information Server">IIS</abbr>7.0, Silverlight and <abbr="Structured Query Language">SQL</abbr> Server 2008 and technology-agnostic topics such as Regular Expressions, Search Engine Optimisation (<abbr title="Search Engine Optimisation">SEO</abbr>) and Accessibility.</p>
<p>As with all <a href="http://www.scotch-on-the-rocks.co.uk/" title="Scotch-on-the-Rocks" rel="nofollow">great conferences</a>, CFDevCon has a great line-up of speakers with the likes of Sean Corfield, Hal Helms, Peter Elst, Peter Bell, Aral Balkan and Simon Bailey, to name a few, all presenting sessions.</p>
<p>So, lets get excited people, support the conferences and <a href="http://www.adobe.com/cfusion/usergroups/search_results.cfm?findType=2&#038;loc=en_us&#038;country_id=9259BCE3-668D-4A21-BB8751DC0E2A45B3" title="UK Adobe User Groups" rel="nofollow">user groups</a> and evangelise ColdFusion.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/coldfusion-is-hotting-up-in-the-uk/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Minor Rant About The ColdFusion 8 Developer Exam</title>
		<link>http://www.simonwhatley.co.uk/a-minor-rant-about-the-coldfusion-8-developer-exam</link>
		<comments>http://www.simonwhatley.co.uk/a-minor-rant-about-the-coldfusion-8-developer-exam#comments</comments>
		<pubDate>Tue, 24 Jun 2008 14:19:06 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[Adobe Press]]></category>
		<category><![CDATA[Adobe Publishing]]></category>
		<category><![CDATA[Ben Forta]]></category>
		<category><![CDATA[Ben Nadel]]></category>
		<category><![CDATA[Brian Simmons]]></category>
		<category><![CDATA[CentraSoft]]></category>
		<category><![CDATA[CF8]]></category>
		<category><![CDATA[CFMX7]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[exam]]></category>
		<category><![CDATA[Exam Buster]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[macromedia]]></category>
		<category><![CDATA[Macromedia Press]]></category>
		<category><![CDATA[prep]]></category>
		<category><![CDATA[preparation]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[version 7]]></category>
		<category><![CDATA[version 8]]></category>
		<category><![CDATA[Web Application Construction Kit]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=586</guid>
		<description><![CDATA[The Adobe ColdFusion 8 Developer Exam arrived earlier this year and it is about time I took it. But like Ben Nadel, the exam scares me! Why? Because there is so much more to know. With the introduction of new AJAX tags, native JSON support, .NET integration, image manipulation, threading, interfaces, not to mention full PDF integration, the presentation builder and across the board enhancements, there are a lot of new things to know.]]></description>
			<content:encoded><![CDATA[<p>The Adobe <a href="http://partners.adobe.com/public/en/ace/ACE_Exam_Guide_ColdFusion8.pdf" title="ColdFusion 8 Exam Guidelines" rel="nofollow">ColdFusion 8 Developer Exam</a> arrived earlier this year and it is about time I took it. But like Ben Nadel, the exam <a href="http://www.bennadel.com/blog/931-Getting-Certified-In-ColdFusion-8-Scares-Me.htm" title="Getting Certified In ColdFusion 8 Scares Me" rel="nofollow">scares me</a>! Why? Because there is so much more to know. With the introduction of new <acronym title="Asynchronous JavaScript and XML">AJAX</acronym> tags, native <abbr title="JavaScript Object Notation">JSON</abbr> support, .NET integration, image manipulation, threading, interfaces, not to mention full <abbr title="Portable Document Format">PDF</abbr> integration, the presentation builder and across the board enhancements, there are a lot of new things to know.</p>
<p>If it wasn&#8217;t for the fact that I am also an Adobe Certified Trainer, I would probably shy away from taking the exam, since, apart from showing that I have gained an Advanced level of knowledge of what&#8217;s available in the language/application, is it really relevant?</p>
<p><strong>Now for the moan&#8230;</strong></p>
<p>I like to prepare for exams properly. I studied hard for the CFMX6.1 and CFMX7 exams because I wanted to achieve the best result I possibly could. I don&#8217;t much like the stigma of mediocrity, so I try hard. But with the advent of the ColdFusion 8 exam, Adobe aren&#8217;t making life any easier and this isn&#8217;t because of the increased number of features. It&#8217;s because they are not supporting their exam with the appropriate study material.</p>
<p>In the past, Ben Forta had been commissioned to create the <a href="http://www.amazon.com/Macromedia-ColdFusion-Certified-Developer-Study/dp/0321330110" title="ColdFusion MX7 Developer Study Guide" rel="nofollow">official developer study guide</a>. However, according to Ben, this appears no longer to be the case (at least for now).</p>
<p>It beggars belief that Adobe release a product, then release a related exam, but do not have the will to produce a study guide. Yes we have the <a href="http://www.amazon.com/Adobe-ColdFusion-Web-Application-Construction/dp/032151548X" title="Amazon: Web Application Construction Kit" rel="nofollow">Web Application Construction Kit</a> and <a href="http://livedocs.adobe.com/coldfusion/8/" title="ColdFusion 8 Livedocs" rel="nofollow">Livedocs</a>, but for me, they are either not succinct enough or not available in print. It makes it tough to study.</p>
<p>Clearly there is a cost issue, but Adobe Publishing can be smarter these days with their print-runs. Indeed they could even allow developers to choose between a print and <abbr title="Portable Document Format">PDF</abbr> versions, much like Manning and many other publishers.</p>
<p>Perhaps Ben is busy. Surely not! But if it is the case, I&#8217;m sure there are a number of his peers that could take up the mantle. Cue&#8230;</p>
<p><strong>A ray of hope&#8230;</strong></p>
<p>There is a small ray of hope. There is likely to be an updated version of the popular <a href="http://www.centrasoft.com/products.cfm#cfmx_exam_buster" title="CFMX Exam Buster" rel="nofollow">CFMX Exam Buster</a> by CentraSoft. Brian Simmons is working hard on the latest version.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/a-minor-rant-about-the-coldfusion-8-developer-exam/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anatomy of the Application.cfc in ColdFusion 8</title>
		<link>http://www.simonwhatley.co.uk/anatomy-of-the-applicationcfc-in-coldfusion-8</link>
		<comments>http://www.simonwhatley.co.uk/anatomy-of-the-applicationcfc-in-coldfusion-8#comments</comments>
		<pubDate>Tue, 18 Mar 2008 09:03:38 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[CFC]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[ColdFusion Component]]></category>
		<category><![CDATA[cross-site]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[onApplicationEnd]]></category>
		<category><![CDATA[onApplicationStart]]></category>
		<category><![CDATA[onError]]></category>
		<category><![CDATA[onMissingTemplate]]></category>
		<category><![CDATA[onRequest]]></category>
		<category><![CDATA[onRequestEnd]]></category>
		<category><![CDATA[onRequestStart]]></category>
		<category><![CDATA[onSessionEnd]]></category>
		<category><![CDATA[onSessionStart]]></category>
		<category><![CDATA[request]]></category>
		<category><![CDATA[scopes]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[this]]></category>
		<category><![CDATA[www.domain.com]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=414</guid>
		<description><![CDATA[With the release of ColdFusion MX 7 came the introduction of the Application.cfc ColdFusion component. This component replaced the traditional Application.cfm and OnRequestEnd.cfm ColdFusion application templates. Furthermore, if Application.cfc is present, both of these templates are ignored by the application.

In addition to replacing the Application.cfm, the Application.cfc introduced a number of built in methods that handle specific events. These events, as discussed in detail below, allow for a greater control over events within the application.]]></description>
			<content:encoded><![CDATA[<p>With the release of ColdFusion MX 7 came the introduction of the Application.cfc ColdFusion component. This component replaced the traditional Application.cfm and OnRequestEnd.cfm ColdFusion application templates. Furthermore, if Application.cfc is present, both of these templates are ignored by the application.</p>
<p>In addition to replacing the Application.cfm, the Application.cfc introduced a number of built in methods that handle specific events. These events, as discussed in detail below, allow for a greater control over events within the application.</p>
<h2>Application Variables</h2>
<p>The <code>THIS</code> scope in the Application.cfc contains several built-in variables that allow you to set the properties of the application.</p>
<p>The following <code>cfscript</code> briefly outlines the variables that you can set to control the application&#8217;s behaviour.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;"><span style="color: #808080;">//the application name (should be unique)</span></span>
<span style="color: #000099;">THIS.<span style="color: #0000ff;">name</span> <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;ApplicationName&quot;</span>;</span>
<span style="color: #000099;"><span style="color: #808080;">//how long the application variables persist</span></span>
<span style="color: #000099;">THIS.<span style="color: #0000ff">applicationTimeout</span> <span style="color: #0000ff">=</span> <span style="color: #800080;">createTimeSpan</span><span style="color: #000000;">&#40;</span><span style="color: #ff0000;">0</span>,<span style="color: #ff0000;">2</span>,<span style="color: #ff0000;">0</span>,<span style="color: #ff0000;">0</span><span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;"><span style="color: #808080;">//define whether client variables are enabled</span></span>
<span style="color: #000099;">THIS.<span style="color: #0000ff">clientManagement</span> <span style="color: #0000ff">=</span> false;</span>
<span style="color: #000099;"><span style="color: #808080;">//where should we store them, if enabled?</span></span>
<span style="color: #000099;">THIS.<span style="color: #0000ff">clientStorage</span> <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;registry&quot;</span>; <span style="color: #808080;">//cookie||registry||datasource</span></span>
<span style="color: #000099;"><span style="color: #808080;">//define where cflogin information should persist</span></span>
<span style="color: #000099;">THIS.<span style="color: #0000ff">loginStorage</span> <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;session&quot;</span>; <span style="color: #808080;">//cookie||session</span></span>
<span style="color: #000099;"><span style="color: #808080;">//define whether session variables are enabled</span></span>
<span style="color: #000099;">THIS.<span style="color: #0000ff">sessionManagement</span> <span style="color: #0000ff">=</span> true;</span>
<span style="color: #000099;"><span style="color: #808080;">//how long the session variables persist?</span></span>
<span style="color: #000099;">THIS.<span style="color: #0000ff">sessionTimeout</span> <span style="color: #0000ff">=</span> <span style="color: #800080;">createTimeSpan</span><span style="color: #000000;">&#40;</span><span style="color: #ff0000;">0</span>,<span style="color: #ff0000;">0</span>,<span style="color: #ff0000;">20</span>,<span style="color: #ff0000;">0</span><span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;"><span style="color: #808080;">//define whether to set cookies on the browser?</span></span>
<span style="color: #000099;">THIS.<span style="color: #0000ff">setClientCookies</span> <span style="color: #0000ff">=</span> true;</span>
<span style="color: #000099;"><span style="color: #808080;">//should cookies be domain specific</span></span>
<span style="color: #000099;"><span style="color: #808080;">//i.e. *.domain.com or www.domain.com</span></span>
<span style="color: #000099;">THIS.<span style="color: #0000ff">setDomainCookies</span> <span style="color: #0000ff">=</span> false;</span>
<span style="color: #000099;"><span style="color: #808080;">//should we try to block cross-site scripting?</span></span>
<span style="color: #000099;">THIS.<span style="color: #0000ff">scriptProtect</span> <span style="color: #0000ff">=</span> false;</span>
<span style="color: #000099;"><span style="color: #808080;">//should we secure our JSON calls?</span></span>
<span style="color: #000099;">THIS.<span style="color: #0000ff">secureJSON</span> <span style="color: #0000ff">=</span> false;</span>
<span style="color: #000099;"><span style="color: #808080;">//use a prefix in front of JSON strings?</span></span>
<span style="color: #000099;">THIS.<span style="color: #0000ff">secureJSONPrefix</span> <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;&quot;</span>;</span>
<span style="color: #000099;"><span style="color: #808080;">//used to help ColdFusion work with missing files</span></span>
<span style="color: #000099;"><span style="color: #808080;">//and directory indexes. tells ColdFusion not to call</span></span>
<span style="color: #000099;"><span style="color: #808080;">//onMissingTemplate method.</span></span>
<span style="color: #000099;">THIS.welcomeFi<span style="color: #0000ff;">le</span>L<span style="color: #0000ff;">is</span>t <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;&quot;</span>;</span>
<span style="color: #000099;"><span style="color: #808080;">//define custom coldfusion mappings.</span></span>
<span style="color: #000099;"><span style="color: #808080;">//Keys are mapping names, values are full paths</span></span>
<span style="color: #000099;">THIS.mappings <span style="color: #0000ff">=</span> <span style="color: #800080;">structNew</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;"><span style="color: #808080;">//define a list of custom tag paths.</span></span>
<span style="color: #000099;">THIS.customTagPaths <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;&quot;</span>;</span>
<span style="color: #000099;"><span style="color: #800000;">&lt;/cfscript&gt;</span></span></pre></div></div>

<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h2>Method Summary</h2>
<p>Below is a brief discussion of the built-in event methods available to the Application.cfc. Since the Application.cfc is a regular ColdFusion component, you can also implement your own methods alongside the built in ones (assuming the names are uniquely different).</p>
<h3>The onApplicationStart Method</h3>
<p>Runs when the application first starts up: when the first request for a page is processed or the first <acronym title="ColdFusion Component">CFC</acronym> method is invoked by an event.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;onApplicationStart&quot;</span> <span style="color: #0000ff">returnType</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;boolean&quot;</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #0000ff;">&lt;</span>cfreturn true <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span></pre></div></div>

<p>This method is typically used to initialise code; for example to to set variables, such as datasource, into the <code>APPLICATION</code> scope, or create <a href="http://en.wikipedia.org/wiki/Singleton_pattern" title="Singleton Design Pattern" target="_blank" rel="nofollow">Singleton</a> instances of ColdFusion components.</p>
<p>For example:</p>
<p>The following example creates structures in tha application scope to store general configuration settings and Singleton objects that can be later referenced by the application framework.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;onApplicationStart&quot;</span> <span style="color: #0000ff">returnType</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;boolean&quot;</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">	<span style="color: #808080;">// INITIALISE CONFIGURATION VARIABLES AND APPLICATION BUSINESS COMPONENTS</span></span>
<span style="color: #000099;">	<span style="color: #808080;">// **********************************************************************</span></span>
<span style="color: #000099;">	<span style="color: #808080;">// LOAD COMMON SITE VARIABLES INTO APPLICATION SCOPE</span></span>
<span style="color: #000099;">	<span style="color: #808080;">// create structure to hold configuration settings</span></span>
<span style="color: #000099;">	<span style="color: #0000ff">APPLICATION</span>.strConfig <span style="color: #0000ff">=</span> <span style="color: #800080;">structNew</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;">	<span style="color: #808080;">//site-wide datasource(s)</span></span>
<span style="color: #000099;">	<span style="color: #0000ff">APPLICATION</span>.strConfig.<span style="color: #0000ff">datasource</span> <span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;DatasourceName&quot;</span>;</span>
<span style="color: #000099;">	<span style="color: #808080;">// default records per page for pagination</span></span>
<span style="color: #000099;">	<span style="color: #0000ff">APPLICATION</span>.strConfig.rec<span style="color: #0000ff;">or</span>dsPerPa<span style="color: #0000ff;">ge</span> <span style="color: #0000ff">=</span> <span style="color: #ff0000;">15</span>;</span>
<span style="color: #000099;">	<span style="color: #808080;">// **********************************************************************</span></span>
<span style="color: #000099;">	<span style="color: #808080;">// LOAD PERSISTENT OBJECTS INTO APPLICATION SCOPE</span></span>
<span style="color: #000099;">	<span style="color: #808080;">// data for object instantiation</span></span>
<span style="color: #000099;">	strArgs	<span style="color: #0000ff">=</span> <span style="color: #800080;">structNew</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>; <span style="color: #808080;">// flush strArgs</span></span>
<span style="color: #000099;">	strArgs.<span style="color: #0000ff">datasource</span> <span style="color: #0000ff">=</span> <span style="color: #0000ff">APPLICATION</span>.strConfig.<span style="color: #0000ff">datasource</span>;</span>
&nbsp;
<span style="color: #000099;">	<span style="color: #808080;">// create structure to hold objects</span></span>
<span style="color: #000099;">	<span style="color: #0000ff">APPLICATION</span>.strObjs <span style="color: #0000ff">=</span> <span style="color: #800080;">structNew</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;">	<span style="color: #0000ff">APPLICATION</span>.strObjs.objUserMana<span style="color: #0000ff;">ge</span>r <span style="color: #0000ff">=</span> <span style="color: #800080;">createObject</span><span style="color: #000000;">&#40;</span><span style="color: #009900;">&quot;component&quot;</span>,<span style="color: #009900;">&quot;com.whatley.user.UserManager&quot;</span><span style="color: #000000;">&#41;</span>.init<span style="color: #000000;">&#40;</span><span style="color: #0000ff">argumentCollection</span><span style="color: #0000ff;">=</span>strArgs<span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;">	<span style="color: #808080;">//etc...</span></span>
&nbsp;
<span style="color: #000099;">	<span style="color: #808080;">// instantiate utility service objects</span></span>
<span style="color: #000099;">	<span style="color: #0000ff">APPLICATION</span>.strObjs.objEmailServices <span style="color: #0000ff">=</span> <span style="color: #800080;">createObject</span><span style="color: #000000;">&#40;</span><span style="color: #009900;">&quot;component&quot;</span>,<span style="color: #009900;">&quot;com.whatley.service.Email&quot;</span><span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;">	<span style="color: #0000ff">APPLICATION</span>.strObjs.objFi<span style="color: #0000ff;">le</span>Services <span style="color: #0000ff">=</span> <span style="color: #800080;">createObject</span><span style="color: #000000;">&#40;</span><span style="color: #009900;">&quot;component&quot;</span>,<span style="color: #009900;">&quot;com.whatley.service.File&quot;</span><span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;">	<span style="color: #0000ff">APPLICATION</span>.strObjs.objQueryServices <span style="color: #0000ff">=</span> <span style="color: #800080;">createObject</span><span style="color: #000000;">&#40;</span><span style="color: #009900;">&quot;component&quot;</span>,<span style="color: #009900;">&quot;com.whatley.service.Query&quot;</span><span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;">	<span style="color: #808080;">//etc...</span></span>
&nbsp;
<span style="color: #000099;">	<span style="color: #808080;">// native coldfusion objects</span></span>
<span style="color: #000099;">	<span style="color: #0000ff">APPLICATION</span>.strObjs.objServiceFact<span style="color: #0000ff;">or</span>y <span style="color: #0000ff">=</span> <span style="color: #800080;">createObject</span><span style="color: #000000;">&#40;</span><span style="color: #009900;">&quot;java&quot;</span>,<span style="color: #009900;">&quot;coldfusion.server.ServiceFactory&quot;</span><span style="color: #000000;">&#41;</span>;</span>
&nbsp;
<span style="color: #000099;">	<span style="color: #808080;">// **********************************************************************</span></span>
<span style="color: #000099;">	return true;</span>
<span style="color: #000099;">	<span style="color: #800000;">&lt;/cfscript&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span></pre></div></div>

<p>Since the objects above are created as Singletons, we do not have to create or destroy objects throughout the application, but simply reference the object held in memory. This is efficient, but of course, would not be suitable for per-session objects, such as shopping carts.</p>
<p>For example:</p>
<p>Referencing and invoking an object from the <code>APPLICATION</code> scope:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #800000;">&lt;cfinvoke</span> <span style="color: #0000ff;">object</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;APPLICATION.strObjs.objUserManager&quot;</span> <span style="color: #0000ff;">method</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;getUser&quot;</span> <span style="color: #0000ff">returnvariable</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;qryGetUser&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfargument</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;userId&quot;</span> <span style="color: #0000ff;">value</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#SESSION.strUser.userId#&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cfinvoke&gt;</span></span></pre></div></div>

<h3>The onApplicationEnd Method</h3>
<p>Runs when the application stops: when the application times out or the service is stopped.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;onApplicationEnd&quot;</span> <span style="color: #0000ff">returnType</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;void&quot;</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfargument</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;applicationScope&quot;</span> <span style="color: #0000ff">required</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;true&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span></pre></div></div>

<p>This method is typically used to clean-up currently activities, save the current state of the application to a database or log the application&#8217;s end to a file. The latter can be useful to help determine when and why an application ended.</p>
<p>Below is a simple example of how you could implement a simple log:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;onApplicationEnd&quot;</span> <span style="color: #0000ff">returnType</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;void&quot;</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfargument</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;applicationScope&quot;</span> <span style="color: #0000ff">required</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;true&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
        <span style="color: #333333;"><span style="color: #800000;">&lt;cflog</span> <span style="color: #0000ff">file</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#THIS.Name#&quot;</span> <span style="color: #0000ff;">type</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;Information&quot;</span></span>
<span style="color: #333333;">        	<span style="color: #0000ff;">text</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;Application #ARGUMENTS.applicationScope.applicationName# Ended&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span></pre></div></div>

<p>Notes:</p>
<ul>
<li>The method is not associated with an individual request so you cannot use it to display data to a user.</li>
<li>If you call this method explicity, ColdFusion does not end the application, but does execute the code within the method.</li>
<li>The method can access the <code>SERVER</code> scope directly, but does not have access to the <code>SESSION</code> and <code>REQUEST</code> scopes.</li>
</ul>
<h3>The onMissingTemplate Method</h3>
<p>Triggered when the user requests a ColdFusion template that doesn&#8217;t exist.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;onMissingTemplate&quot;</span> <span style="color: #0000ff">returnType</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;boolean&quot;</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfargument</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;targetpage&quot;</span> <span style="color: #0000ff">required</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;true&quot;</span> <span style="color: #0000ff;">type</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;string&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #0000ff;">&lt;</span>cfreturn true <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span></pre></div></div>

<p>ColdFusion invokes this method when it encounters a file not found condition, that is, when a URL specifies a <acronym title="ColdFusion Markup Language">CFML</acronym> page that does not exist. This is an important addition to ColdFusion 8 and allows missing template errors (also known as <a href="http://en.wikipedia.org/wiki/HTTP_404" title="HTTP 404 Error" target="_blank" rel="nofollow">HTTP 404</a> errors) to be captured more efficiently by the application framework.</p>
<h3>The onRequestStart Method</h3>
<p>Runs before the request is processed.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;onRequestStart&quot;</span> <span style="color: #0000ff">returnType</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;boolean&quot;</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfargument</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;thePage&quot;</span> <span style="color: #0000ff;">type</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;string&quot;</span> <span style="color: #0000ff">required</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;true&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #0000ff;">&lt;</span>cfreturn true <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span></pre></div></div>

<p>This method is great for user authorisation and login handling and for request specific variable initialisation. For example, you could use this method to log statistics to a database (performance and usage).</p>
<p>As this method runs at the beginning of a request, we can also use it to fire other events. In the example below, I reinitialise the Application which enables me to refresh objects held in memory that may have changed during code development or release.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;onRequestStart&quot;</span> <span style="color: #0000ff">returnType</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;void&quot;</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">	<span style="color: #808080;">//flush the application scope</span></span>
<span style="color: #000099;">	<span style="color: #0000ff;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>CGI.server_name <span style="color: #0000ff">=</span><span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;localhost&quot;</span><span style="color: #000000;">&#41;</span> || <span style="color: #000000;">&#40;</span><span style="color: #800080;">structKeyExists</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff">URL</span>,<span style="color: #009900;">'refresh'</span><span style="color: #000000;">&#41;</span> <span style="color: #0000ff;">&amp;&amp;</span> <span style="color: #800080;">structKeyExists</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff">URL</span>,<span style="color: #009900;">'password'</span><span style="color: #000000;">&#41;</span> <span style="color: #0000ff;">&amp;&amp;</span> <span style="color: #0000ff">URL</span>.<span style="color: #0000ff">password</span> <span style="color: #0000ff">=</span><span style="color: #0000ff">=</span> <span style="color: #009900;">&quot;p455w0rd&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span></span>
<span style="color: #000099;">	<span style="color: #000000;">&#123;</span></span>
<span style="color: #000099;">		onApplicationStart<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;">	<span style="color: #000000;">&#125;</span></span>
<span style="color: #000099;">	return true;</span>
<span style="color: #000099;">	<span style="color: #800000;">&lt;/cfscript&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span></pre></div></div>

<h3>The onRequest Method</h3>
<p>Runs before the request is processed, but after onRequestStart.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;onRequest&quot;</span> <span style="color: #0000ff">returnType</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;void&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfargument</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;thePage&quot;</span> <span style="color: #0000ff;">type</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;string&quot;</span> <span style="color: #0000ff">required</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;true&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfinclude</span> <span style="color: #0000ff">template</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#ARGUMENTS.thePage#&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span></pre></div></div>

<p>This event handler provides an optional request filter mechanism for ColdFusion page requests. Use it to intercept requests to target pages and override the default behavior of running the requested pages. You can use this method to do preprocessing that is required for all requests. Typical uses include filtering and modifying request page contents (such as removing extraneous white space), or creating a switching mechanism that determines the exact page to display based on available parameters.</p>
<h3>The onRequestEnd Method</h3>
<p>Runs at the end of the request when all pages have been processed.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #808080; background-color:#ffff80;">&lt;!--- Runs at end of request ---&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;onRequestEnd&quot;</span> <span style="color: #0000ff">returnType</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;void&quot;</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfargument</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;thePage&quot;</span> <span style="color: #0000ff;">type</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;string&quot;</span> <span style="color: #0000ff">required</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;true&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span></pre></div></div>

<p>This method can be useful for gathering performance metrics, or for displaying dynamic footer information (although I wouldn&#8217;t generally put display code in an Application.cfc).</p>
<p>For example:</p>
<p>Log the <code>CGI</code> variables to a database table.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;onRequestEnd&quot;</span> <span style="color: #0000ff">returnType</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;void&quot;</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfset</span> <span style="color: #0000ff;">var</span> qryInsertStats <span style="color: #0000ff">=</span> <span style="color: #800080;">queryNew</span><span style="color: #000000;">&#40;</span><span style="color: #009900;">'tempCol'</span><span style="color: #000000;">&#41;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfquery</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;qryInsertStats&quot;</span> <span style="color: #0000ff">datasource</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#APPLICATION.strConfig.datasource#&quot;</span><span style="color: #800000;">&gt;</span></span>
	INSERT INTO tbl_site_stats (template,query_string,referer,user_agent,remote_addr,datetime)
	VALUES
	(
		<span style="color: #333333;"><span style="color: #800000;">&lt;cfqueryparam</span> <span style="color: #0000ff;">value</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#CGI.PATH_INFO#&quot;</span> <span style="color: #0000ff">cfsqltype</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;cf_sql_varchar&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
		<span style="color: #333333;"><span style="color: #800000;">&lt;cfqueryparam</span> <span style="color: #0000ff;">value</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#CGI.QUERY_STRING#&quot;</span> <span style="color: #0000ff">cfsqltype</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;cf_sql_varchar&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
		<span style="color: #333333;"><span style="color: #800000;">&lt;cfqueryparam</span> <span style="color: #0000ff;">value</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#CGI.HTTP_REFERER#&quot;</span> <span style="color: #0000ff">cfsqltype</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;cf_sql_varchar&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
		<span style="color: #333333;"><span style="color: #800000;">&lt;cfqueryparam</span> <span style="color: #0000ff;">value</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#CGI.HTTP_USER_AGENT#&quot;</span> <span style="color: #0000ff">cfsqltype</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;cf_sql_varchar&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
		<span style="color: #333333;"><span style="color: #800000;">&lt;cfqueryparam</span> <span style="color: #0000ff;">value</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#CGI.REMOTE_ADDR#&quot;</span> <span style="color: #0000ff">cfsqltype</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;cf_sql_varchar&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
		<span style="color: #333333;"><span style="color: #800000;">&lt;cfqueryparam</span> <span style="color: #0000ff;">value</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#now()#&quot;</span> <span style="color: #0000ff">cfsqltype</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;cf_sql_datetime&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
	)
	<span style="color: #333333;"><span style="color: #800000;">&lt;/cfquery&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span></pre></div></div>

<h3>The onError Method</h3>
<p>Triggered when an error is encountered that is not caught by a try/catch block.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #808080; background-color:#ffff80;">&lt;!--- Runs on error ---&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;onError&quot;</span> <span style="color: #0000ff">returnType</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;void&quot;</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfargument</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;exception&quot;</span> <span style="color: #0000ff">required</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;true&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfargument</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;eventname&quot;</span> <span style="color: #0000ff;">type</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;string&quot;</span> <span style="color: #0000ff">required</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;true&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfdump</span> <span style="color: #0000ff;">var</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#ARGUMENTS#&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
        <span style="color: #333333;"><span style="color: #0000ff;">&lt;</span>cfab<span style="color: #0000ff;">or</span>t <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span></pre></div></div>

<p>This method is used to handle errors in an application-specific manner. This method overrides any error handlers that you set in the ColdFusion Administrator or in cferror tags. It does not override try/catch blocks.</p>
<p>For example:</p>
<p>The following displays a friendly, static error page to the user if it is not a development server whilst also logging the error. If the error is on development, simply dump the error to screen for debugging.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;onError&quot;</span> <span style="color: #0000ff">returnType</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;void&quot;</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;true&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfargument</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;exception&quot;</span> <span style="color: #0000ff">required</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;true&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfargument</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;eventName&quot;</span> <span style="color: #0000ff;">type</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;string&quot;</span> <span style="color: #0000ff">required</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;true&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfif</span> CGI.server_name <span style="color: #0000ff;">neq</span> <span style="color: #009900;">&quot;localhost&quot;</span> <span style="color: #0000ff;">and</span> CGI.server_name <span style="color: #0000ff;">neq</span> <span style="color: #009900;">&quot;127.0.0.1&quot;</span><span style="color: #800000;">&gt;</span></span>
		<span style="color: #333333;"><span style="color: #808080; background-color:#ffff80;">&lt;!--- Live application, handle error ---&gt;</span></span>
		<span style="color: #333333;"><span style="color: #800000;">&lt;cfinclude</span> <span style="color: #0000ff">template</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;error/error.htm&quot;</span><span style="color: #800000;">&gt;</span></span>
		<span style="color: #333333;"><span style="color: #808080; background-color:#ffff80;">&lt;!--- Log all errors. ---&gt;</span></span>
	        <span style="color: #333333;"><span style="color: #800000;">&lt;cflog</span> <span style="color: #0000ff">file</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#THIS.Name#&quot;</span> <span style="color: #0000ff;">type</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;error&quot;</span></span>
<span style="color: #333333;">	            <span style="color: #0000ff;">text</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;Event Name: #ARGUMENTS.Eventname#&quot;</span> <span style="color: #800000;">&gt;</span></span>
	        <span style="color: #333333;"><span style="color: #800000;">&lt;cflog</span> <span style="color: #0000ff">file</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#THIS.Name#&quot;</span> <span style="color: #0000ff;">type</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;error&quot;</span></span>
<span style="color: #333333;">	            <span style="color: #0000ff;">text</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;Message: #ARGUMENTS.Exception.message#&quot;</span><span style="color: #800000;">&gt;</span></span>
	        <span style="color: #333333;"><span style="color: #800000;">&lt;cflog</span> <span style="color: #0000ff">file</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#THIS.Name#&quot;</span> <span style="color: #0000ff;">type</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;error&quot;</span></span>
<span style="color: #333333;">	            <span style="color: #0000ff;">text</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;Root Cause Message: #ARGUMENTS.Exception.rootcause.message#&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfelse&gt;</span></span>
		<span style="color: #333333;"><span style="color: #808080; background-color:#ffff80;">&lt;!--- dump error for Staging and Development ---&gt;</span></span>
		<span style="color: #333333;"><span style="color: #800000;">&lt;cfif</span> <span style="color: #800080;">len</span><span style="color: #000000;">&#40;</span><span style="color: #0000ff">ARGUMENTS</span>.eventName<span style="color: #000000;">&#41;</span><span style="color: #800000;">&gt;</span></span>
			<span style="color: #333333;"><span style="color: #800000;">&lt;cfdump</span> <span style="color: #0000ff;">var</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#ARGUMENTS.eventName#&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
		<span style="color: #333333;"><span style="color: #800000;">&lt;/cfif&gt;</span></span>
		<span style="color: #333333;"><span style="color: #800000;">&lt;cfdump</span> <span style="color: #0000ff;">var</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#ARGUMENTS.exception#&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;/cfif&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span></pre></div></div>

<h3>The onSessionStart Method</h3>
<p>Runs when your session starts.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;onSessionStart&quot;</span> <span style="color: #0000ff">returnType</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;void&quot;</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span><span style="color: #800000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span></pre></div></div>

<p>This method is used for initialising <code>SESSION</code>-scoped data, such as a shopping basket and application form.</p>
<p>For example:</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;onSessionStart&quot;</span> <span style="color: #0000ff">returnType</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;void&quot;</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #000099;"><span style="color: #800000;">&lt;cfscript&gt;</span></span>
<span style="color: #000099;">	SESSION.<span style="color: #0000ff;">start</span> <span style="color: #0000ff">=</span> <span style="color: #800080;">now</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;">	SESSION.strShoppingBasket <span style="color: #0000ff">=</span> <span style="color: #800080;">structNew</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;</span>
<span style="color: #000099;">	SESSION.strShoppingBasket.items <span style="color: #0000ff">=</span> <span style="color: #ff0000;">0</span>;</span>
<span style="color: #000099;">	<span style="color: #800000;">&lt;/cfscript&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span></pre></div></div>

<h3>The onSessionEnd Method</h3>
<p>Runs when session ends</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #800000;">&lt;cffunction</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;onSessionEnd&quot;</span> <span style="color: #0000ff">returnType</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;void&quot;</span> <span style="color: #0000ff">output</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfargument</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;sessionScope&quot;</span> <span style="color: #0000ff;">type</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;struct&quot;</span> <span style="color: #0000ff">required</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;true&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
	<span style="color: #333333;"><span style="color: #800000;">&lt;cfargument</span> <span style="color: #0000ff;">name</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;appScope&quot;</span> <span style="color: #0000ff;">type</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;struct&quot;</span> <span style="color: #0000ff">required</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;false&quot;</span> <span style="color: #0000ff;">/</span><span style="color: #800000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;/cffunction&gt;</span></span></pre></div></div>

<p>Use this method for any clean-up activities when the session ends. A session ends when the session is inactive for the session time-out period. You can, for example, save session-related data, such as shopping basket contents or whether the user has not completed an order, in a database, or do any other required processing based on the user&#8217;s status. You might also want to log the end of the session, or other session related information, to a file for diagnostic use.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>Adobe Livedocs has a whole <a href="http://livedocs.adobe.com/coldfusion/8/htmldocs/AppEvents_01.html" title="Application.CFC Reference" target="_blank" rel="nofollow">section dedicated to the Application.cfc</a>.</p>
<p>I have created an <a href="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/03/application.txt" title="Example Application.cfc Template - ColdFusion 8" target="_blank">example Application.cfc</a>, which is available for <a href="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2008/03/application.txt" title="Example Application.cfc Template - ColdFusion 8" target="_blank">download</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/anatomy-of-the-applicationcfc-in-coldfusion-8/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft SQL Server 2005 JDBC Driver 1.2</title>
		<link>http://www.simonwhatley.co.uk/microsoft-sql-server-2005-jdbc-driver-12</link>
		<comments>http://www.simonwhatley.co.uk/microsoft-sql-server-2005-jdbc-driver-12#comments</comments>
		<pubDate>Fri, 14 Mar 2008 10:42:08 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[jar]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft SQL Server]]></category>
		<category><![CDATA[MSSQL]]></category>
		<category><![CDATA[SQL Server 2005]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=469</guid>
		<description><![CDATA[Download the SQL Server 2005 JDBC Driver 1.2, a Type 4 JDBC driver that provides database connectivity through the standard JDBC application program interfaces (APIs) available in J2EE (Java2 Enterprise Edition).

This release of the JDBC Driver is JDBC 3.0 compliant and runs on the Java Development Kit (JDK) version 1.4 and higher. It has been tested against all major application servers including BEA WebLogic, IBM WebSphere, JBoss, and Sun.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C47053EB-3B64-4794-950D-81E1EC91C1BA&#038;displaylang=en" title="Microsoft SQL Server 2005 JDBC Driver 1.2" rel="nofollow" target="_blank">Download the SQL Server 2005 JDBC Driver 1.2</a>, a Type 4 JDBC driver that provides database connectivity through the standard JDBC application program interfaces (APIs) available in J2EE (Java2 Enterprise Edition).</p>
<p>This release of the JDBC Driver is JDBC 3.0 compliant and runs on the Java Development Kit (JDK) version 1.4 and higher. It has been tested against all major application servers including BEA WebLogic, IBM WebSphere, JBoss, and Sun.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/microsoft-sql-server-2005-jdbc-driver-12/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
