<?xml version="1.0" encoding="utf-8"?>

			<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">

			<channel>
			<title>justCF</title>
			<link>http://www.supportobjective.com/blog/index.cfm</link>
			<description>All things ColdFusion</description>
			<language>en-us</language>
			<pubDate>Sun, 20 May 2012 03:12:13 -0400</pubDate>
			<lastBuildDate>Sun, 08 May 2011 12:17:00 -0400</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>elishia@supportobjective.com</managingEditor>
			<webMaster>elishia@supportobjective.com</webMaster>
			<itunes:subtitle></itunes:subtitle>
			<itunes:summary></itunes:summary>
			<itunes:category text="Technology" />
			<itunes:category text="Technology">
				<itunes:category text="Podcasting" />
			</itunes:category>
			<itunes:category text="Technology">
				<itunes:category text="Tech News" />
			</itunes:category>
			<itunes:keywords></itunes:keywords>
			<itunes:author></itunes:author>
			<itunes:owner>
				<itunes:email>elishia@supportobjective.com</itunes:email>
				<itunes:name></itunes:name>
			</itunes:owner>
			
			<itunes:explicit>no</itunes:explicit>
			
			<item>
				<title>Getting Zillow Information from ColdFusion</title>
				<link>http://www.supportobjective.com/blog/index.cfm/2011/5/8/Making-Zillow-calls-from-ColdFusion</link>
				<description>
				
				I recently needed to create some ColdFusion code to call into Zillow so I thought it would be worth sharing.

The first thing you will need is an ID from Zillow to give you access to the http services.  They use the term web services but they are really http services.  You can find out everything you need to know about getting started and the Zillow APIs here: &lt;a href=&quot;http://www.zillow.com/howto/api/APIOverview.htm&quot; target=&quot;_new&quot;&gt; Getting Started with Zillow&lt;/a&gt;

Once you have your ID you can enter it into the below code and test it on your site.

I posted a demo here: &lt;a href=&quot;http://www.supportobjective.com/demos/zillowtest.cfm&quot; target=&quot;_new&quot;&gt;DEMO&lt;/a&gt;

&lt;code&gt;
&lt;h1&gt;Zillow Zestimate&lt;/h1&gt;
&lt;cfparam name=&quot;form.address&quot; default=&quot;671 Lincoln Ave&quot;  &gt;
&lt;cfparam name=&quot;form.city&quot; default=&quot;Winnetka&quot;&gt;
&lt;cfparam name=&quot;form.state&quot; default=&quot;IL&quot;&gt;
&lt;cfparam name=&quot;form.Zip&quot; default=&quot;60093&quot;&gt;
&lt;cfoutput&gt;
&lt;form name=&quot;zform&quot;  method=&quot;post&quot; &gt;
	Address: &lt;input type=&quot;text&quot; name=&quot;address&quot; value=&quot;#form.address#&quot; size=&quot;35&quot;/&gt;
    City: &lt;input type=&quot;text&quot; name=&quot;city&quot; value=&quot;#form.city#&quot; size=&quot;20&quot;/&gt;
    State: &lt;input type=&quot;text&quot; name=&quot;state&quot; value=&quot;#form.state#&quot; size=&quot;3&quot;/&gt;
    Zip: &lt;input type=&quot;text&quot; name=&quot;Zip&quot; value=&quot;#form.Zip#&quot; size=&quot;14&quot;/&gt;
    &lt;input type=&quot;submit&quot;  name=&quot;getzestimate&quot; value=&quot;Get Zestimate&quot; /&gt;
&lt;/form&gt;

&lt;cfif isdefined(&quot;form.getzestimate&quot;) &gt;
	&lt;cfset hz = &apos;na&apos;&gt;
	&lt;cfset lz = &apos;na&apos;&gt;
	&lt;cfset csz = form.city &amp; &apos;+&apos; &amp; form.state &amp; &apos;+&apos; &amp; form.zip&gt;
    &lt;cfset zurl = &apos;http://www.zillow.com/webservice/GetSearchResults.htm?zws-id=ENTER YOUR WSID HERE&amp;address=#urlEncodedFormat(form.address)#&amp;citystatezip=#urlEncodedFormat(csz)#&apos;&gt;
    &lt;cfhttp method=&quot;get&quot; url=&quot;#zurl#&quot;  result=&quot;zsearch&quot;&gt;
    &lt;cfset xmlResult = trim(zsearch.FileContent)&gt;
    &lt;cfset request.zillow = XmlParse(REReplace( xmlResult, &quot;^[^&lt;]*&quot;, &quot;&quot;, &quot;all&quot; ) ) /&gt;
    &lt;cfif findnocase(&apos;error&apos;,request.zillow.searchresults.message.text ) lt 1&gt;
        &lt;cfset h = trim(request.zillow.searchresults.response.results.result.zestimate.valuationrange.high.xmltext)&gt;
        &lt;cfset l = trim(request.zillow.searchresults.response.results.result.zestimate.valuationrange.low.xmltext)&gt;
        &lt;cfif isnumeric(h)&gt;
            &lt;cfset hz = dollarformat(h)&gt;
        &lt;/cfif&gt;
        &lt;cfif isnumeric(l)&gt;
            &lt;cfset lz = dollarformat(l)&gt;
        &lt;/cfif&gt;
         &lt;h3&gt;Zestimate Range:  From #lz# to #hz#&lt;/h3&gt; &lt;a href=&apos;#request.zillow.searchresults.response.results.result.links.homedetails.xmltext#&apos; 
            target=&quot;_new&quot;&gt;&lt;h3&gt;View Property at Zillow.com&lt;/h3&gt;&lt;/a&gt;
      	&lt;hr /&gt;
		All the other Property Details&lt;br /&gt;
		&lt;cfdump var=&apos;#request.zillow#&apos;&gt;
    &lt;cfelse&gt;
    	Zillow could not recognize address
    &lt;/cfif&gt;
&lt;/cfif&gt;
&lt;/cfoutput&gt;

&lt;/code&gt; 
				</description>
				
				<category>ColdFusion Maps</category>
				
				<category>ColdFusion</category>
				
				<pubDate>Sun, 08 May 2011 12:17:00 -0400</pubDate>
				<guid>http://www.supportobjective.com/blog/index.cfm/2011/5/8/Making-Zillow-calls-from-ColdFusion</guid>
				
				
			</item>
			
			<item>
				<title>Simple way to capture your CFCatch structure</title>
				<link>http://www.supportobjective.com/blog/index.cfm/2011/5/6/Simple-way-to-capture-your-CFCatch-structure</link>
				<description>
				
				Often times we get cases where we need the complete stack trace of an error and not what is reported by any custom error handler template.

Here is a great way to track your errors that also allows inspection of the entire cfcatch structure at a later time, without interfering with any custom templates.

&lt;code&gt;
&lt;cftry&gt;
	&lt;cfinclude template=&quot;asdfasdf.cfm&quot;&gt;
&lt;cfcatch type=&quot;any&quot;&gt;
&lt;cfdocument filename=&quot;errorreport#gettickcount()#.pdf&quot; format=&quot;pdf&quot;&gt;
    ColdFusion Error&lt;br /&gt;
    &lt;cfdump var=&quot;#cfcatch#&quot;&gt;
&lt;/cfdocument&gt;
&lt;/cfcatch&gt;
&lt;/cftry&gt;
&lt;/code&gt;

In the above code I create a missing template exception, then have the cfcatch simply use cfdocument with a unique filename, to dump out the cfcatch to a PDF file.

You can adjust the location etc as you see fit of course.

The result is a PDF for every occurence showing the complete error and hopefully allowing you to quickly get to a resoluiton. 
				</description>
				
				<category>Server Administration</category>
				
				<pubDate>Fri, 06 May 2011 12:57:00 -0400</pubDate>
				<guid>http://www.supportobjective.com/blog/index.cfm/2011/5/6/Simple-way-to-capture-your-CFCatch-structure</guid>
				
				
			</item>
			
			<item>
				<title>Using Google Maps to populate your form Latitude and Longitude</title>
				<link>http://www.supportobjective.com/blog/index.cfm/2010/12/30/Using-Google-Maps-to-populate-your-form-Latitude-and-Longitude</link>
				<description>
				
				I needed to have a user easily enter a latitude and longitude where there might not be a true address, so I created a simple script to populate form variables when a user doubleclicks a Google Map.

The below is just javascript and html which uses the Google Map API V2 to place a map on the page which by default centers the map when you doubleclick.

The function that is fired in a dblclick event will then set the 2 form variables and leave a marker behind to help the user know where they clicked.

You will need to change the center points and the form names, but all this could be dynamically set as well.

Hope you can use this in your apps.


Note: you will need to fix the 2 InvalidTag&apos;s with script.  
&lt;xmp&gt;
&lt;InvalidTag type=&quot;text/javascript&quot;&gt;
// JavaScript Document
var cm_map;
var centerLon = &apos;-81.655651&apos;;
var centerLat = &apos;30.332184&apos;;
var zoomLevel = 12;
var latforminput = &apos;&apos;;
var lngforminput = &apos;&apos;;
var marker;
function cm_load() {  
    // create the map and display in div name cm_map
    cm_map = new GMap2(document.getElementById(&quot;cm_map&quot;));
    cm_map.addControl(new GLargeMapControl());
    cm_map.addControl(new GMapTypeControl());
	cm_map.setCenter(new GLatLng( centerLat, centerLon), zoomLevel);
	// initialize vars for form fields to populate
	latforminput = document.getElementById(&quot;latinput&quot;);
	lngforminput = document.getElementById(&quot;lnginput&quot;);
	// On Dblclick set form fields and leave a marker
	GEvent.addListener(cm_map, &quot;dblclick&quot;, function(x,ll) {
	latforminput.value = ll.lat();
	lngforminput.value = ll.lng();
	marker = new GMarker(ll, {draggable: false});
	cm_map.addOverlay(marker);
    //alert(&apos;lat:&apos; + ll.lat() +  &apos; lon:&apos; + ll.lng() );
  });
}
setTimeout(&apos;cm_load()&apos;, 500);
&lt;/script&gt;
&lt;!---  Get Google Map API V2 and set Google key---&gt;
&lt;InvalidTag src=&quot;http://maps.google.com/maps?file=api&amp;v=2&amp;key=ENTERYOURGOOGLEMAPKEYHERE&quot;
 type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;!--- Map Div ---&gt;
&lt;div id=&quot;cm_map&quot; style=&quot;width:300px; height:300px&quot;&gt;
&lt;/div&gt;
&lt;!--- Sample Form with values that will be populated when user Double Clicks on map---&gt;
&lt;form name=&quot;setlatlng&quot;&gt;
Lat: &lt;input type=&quot;text&quot; name=&quot;lat&quot;  id=&quot;latinput&quot; value=&quot;&quot;&gt; &lt;br /&gt;
Lng: &lt;input type=&quot;text&quot; name=&quot;lng&quot;  id=&quot;lnginput&quot; value=&quot;&quot;&gt;
&lt;/form&gt;
&lt;/xmp&gt; 
				</description>
				
				<category>ColdFusion Maps</category>
				
				<category>Google Maps</category>
				
				<pubDate>Thu, 30 Dec 2010 12:33:00 -0400</pubDate>
				<guid>http://www.supportobjective.com/blog/index.cfm/2010/12/30/Using-Google-Maps-to-populate-your-form-Latitude-and-Longitude</guid>
				
				
			</item>
			
			<item>
				<title>Using CFImage to create custom map icons for Google Maps</title>
				<link>http://www.supportobjective.com/blog/index.cfm/2010/12/30/Using-CFImage-to-create-custom-map-icons-for-Google-Maps</link>
				<description>
				
				In writing a map application with ColdFusion I needed to create some custom icons and discovered an easy way to take any small icon and create hundreds of them with sequential numbers overlayed on top of the icon.

There are a number of sites with free icons, but they all seem to stop at 99, I needed to go into the hundreds in some cases, which made me start to look at what cfimage can do for me.

First, I went I downloaded a default Google icon as my base (20x34px), then I created new blank icons with differing colors within Photoshop.  I saved all the blank icons in a directory called /icons off my root directory. Once I have all the blanks I then edit the list in the below script. 

The script will create a directory for each color, so for blue you will have /icons/blue/mapicon1.png thru mapicon99.png or however you create.

I think you could move the ImageNew out of the loop and into a variable but it works as written and is a one time conversion.

My next idea is to have user generated icons, by having the users select the background and text color.

I also want to create multiple lists to change the text color, since some backgrounds need black text.

This should be enough to get you started.  Enjoy.


&lt;xmp&gt;
&lt;cfset whitecolorlist = &quot;black,blue,blueball,brightgreen,chestnut,chocolate,cyan,darkblue&quot;&gt;
&lt;cfset currentDir = getdirectoryfrompath(getbasetemplatepath())&gt;
&lt;cfoutput&gt;
&lt;!--- Loop colors and create icons inside relative directory ---&gt;
&lt;cfloop list=&quot;#whitecolorlist#&quot; index=&quot;coloritem&quot;&gt;
    
    &lt;cfset iconcolor = coloritem&gt;
    &lt;cfset currentcolordirectory = currentdir &amp; iconcolor&gt;
    &lt;!--- create a directory for the color if it does not exist---&gt;
    &lt;cfif not directoryexists(currentcolordirectory)&gt;
        &lt;cfdirectory action = &quot;create&quot; directory = &quot;#currentcolordirectory#&quot; &gt;
    &lt;/cfif&gt;
    
    
    &lt;cfloop  from=&quot;11&quot; to=&quot;99&quot; index=&quot;i&quot;&gt;
        &lt;cfset myImage=ImageNew(&quot;blank#iconcolor#.png&quot;)&gt; 
        &lt;cfset ImageSetDrawingColor(myImage,&quot;white&quot;)&gt; 
        &lt;cfset attr = StructNew()&gt; 
        &lt;cfset attr.style=&quot;bold&quot;&gt; 
        &lt;cfset attr.size=9&gt; 
        &lt;cfset attr.font=&quot;verdana&quot;&gt; 
        &lt;cfset attr.underline=&quot;no&quot;&gt; 
        &lt;!--- Need to play with x offset depending how many characters.---&gt;
        &lt;cfif i lt 10&gt;
            &lt;cfset x = 7&gt;
        &lt;/cfif&gt;
        &lt;cfif i gt 9 and i lt 100&gt;
            &lt;cfset x = 4&gt;
        &lt;/cfif&gt;
        &lt;cfif i gt 99 and i lt 1000&gt;
            &lt;cfset x = 1&gt;
        &lt;/cfif&gt;
        &lt;cfset ImageDrawText(myImage,i,#x#,12,attr)&gt; 
        &lt;!--- Place image in a directory based on color ---&gt;
        &lt;cfimage source=&quot;#myImage#&quot; action=&quot;write&quot; 
destination=&quot;#currentcolordirectory#/mapicon#i#.png&quot; overwrite=&quot;yes&quot;&gt; 
        
        &lt;img src=&quot;/icons/#iconcolor#/mapicon#i#.png&quot;/&gt;
    &lt;/cfloop&gt;
 &lt;/cfloop&gt;
&lt;/cfoutput&gt;
&lt;/xmp&gt; 
				</description>
				
				<category>ColdFusion Maps</category>
				
				<category>Google Maps</category>
				
				<pubDate>Thu, 30 Dec 2010 12:14:00 -0400</pubDate>
				<guid>http://www.supportobjective.com/blog/index.cfm/2010/12/30/Using-CFImage-to-create-custom-map-icons-for-Google-Maps</guid>
				
				
			</item>
			
			<item>
				<title>ColdFusion 9 Install on RedHat with JBoss</title>
				<link>http://www.supportobjective.com/blog/index.cfm/2010/12/18/ColdFusion-9-Install-on-RedHat-with-JBoss</link>
				<description>
				
				Just wanted to pass along some notes from doing a ColdFusion 8 upgrade to ColdFuison 9 64 bit JBoss install on RedHat this week.

First off, all went fairly well, but I think you might find the tips below helpful.

First get all the software:&lt;br /&gt;
- CF 9  Linux 64 bit&lt;br /&gt;
- CF 901 Updater 64 bit &lt;br /&gt;
- CF 9 Cumulative Hot Fix  (optional)

The ColdFusion Installation docs are what we generally followed:&lt;br /&gt;
&lt;a href=&quot;http://help.adobe.com/en_US/ColdFusion/9.0/Installing/WSc3ff6d0ea77859461172e0811cdec18c28-7fbd.html&quot; target=&quot;_new&quot;&gt;Deploying ColdFusion 9 on JBoss Application Server&lt;/a&gt;
&lt;br /&gt;
You can get the Updater and the Hot Fixes following the below links:&lt;br /&gt;
&lt;a href=&quot;http://www.adobe.com/support/coldfusion/downloads_updates.html&quot; target=&quot;_new&quot;&gt;ColdFusion Updaters&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://kb2.adobe.com/cps/862/cpsid_86263.html&quot; target=&quot;_new&quot;&gt;ColdFusion 901 Cumulative HotFix 1&lt;/a&gt;

Install CF9 using the J2EE install option.

Once installed you are left with the decision to test the install, which would put you down the road of expanding the ear and war per the instructions.  However, the 901 updater executable requires you to apply it to an archived war file.   So, you might want to apply the updater before expanding the ear and war and moving the resulting ear directory into JBoss&apos;s deploy directory.

We did not know the CF 9.01 updater required an archive, and we had already deleted the war file, so we had to recreate the war, apply the updater, re-exand and swap out the new war with the old war directory.  So, just keep that in mind if your doing a complete install as we were doing.

Here are the complete docs for installing the CF 9.01 Updater:&lt;br /&gt;
&lt;a href=&quot;http://www.adobe.com/support/documentation/en/coldfusion/901/cf901install.pdf&quot; target=&quot;_new&quot;&gt;Installing ColdFusion 9.01&lt;/a&gt;

Updating your Settings from ColdFusion 8 to ColdFusion 9
&lt;br /&gt;
So to move the settings we followed the instructions inside the link below:&lt;br /&gt;
&lt;a href=&quot;http://help.adobe.com/en_US/ColdFusion/9.0/Installing/WSe9cbe5cf462523a0-b18e31f121c8f9f003-8000.html&quot; target=&quot;_new&quot;&gt;Migrating ColdFusion Settings for J2EE installations&lt;/a&gt;

So by following the above we did the following:&lt;br /&gt;
- copied all the neo-* files from ../web-inf/cfusion/lib out of the 8 install, and placed then in the ../web-inf/cfusion/lib/cf8settings directory inside 9 &lt;br /&gt;
- adjusted the runmigrationwizard and the migratecf8 settings in ColdFusion 9 cfusion/lib/adminconfig.xml, change them to true &lt;br /&gt;
- restarted ColdFusion and entered the Admin to trigger the Migration

All the ColdFusion 8 settings were brought over.  The migration wizard allows you to filter out settings if you don&apos;t necessarily want them all.

That was it, all went well, and all the settings were brought over and all datasources connected. 
				</description>
				
				<category>Server Administration</category>
				
				<pubDate>Sat, 18 Dec 2010 10:16:00 -0400</pubDate>
				<guid>http://www.supportobjective.com/blog/index.cfm/2010/12/18/ColdFusion-9-Install-on-RedHat-with-JBoss</guid>
				
				
			</item>
			
			<item>
				<title>Dynamically change Google Map Key based on Host</title>
				<link>http://www.supportobjective.com/blog/index.cfm/2010/11/17/Dynamically-change-Google-Map-Key-based-on-Host</link>
				<description>
				
				If you want your code to work across multiple domains when using Google Maps you will need to dynamically change your Google Maps key based on request.  Google requires you have a unique key for each host that makes calls into Google.

I solved this by placing a few statements in my application.cfc onrequest function.

The code checks the cgi.http_host and then sets the correct key value.

I created the all the keys at http://code.google.com/apis/maps/signup.html

&lt;code&gt;
 &lt;cfif findnocase(&quot;123.com&quot;, cgi.HTTP_HOST) GT 0&gt;
      &lt;cfset ajaxparams[&apos;googlemapkey&apos;] = &apos;actual key from google&apos;&gt;
&lt;/cfif&gt;
&lt;cfif findnocase(&quot;345.com&quot;, cgi.HTTP_HOST) GT 0&gt;
       &lt;cfset ajaxparams[&apos;googlemapkey&apos;] = &apos;actual key from google&apos;&gt;
&lt;/cfif&gt;
&lt;cfif findnocase(&quot;567.com&quot;, cgi.HTTP_HOST) GT 0&gt;
      &lt;cfset ajaxparams[&apos;googlemapkey&apos;] = &apos;actual key from google&apos;&gt;
&lt;/cfif&gt;
&lt;cfajaximport   params=&quot;#ajaxparams#&quot;&gt;
&lt;/code&gt;

If you just have one host you can alternatively set the key inside the administrator. 
				</description>
				
				<category>ColdFusion Maps</category>
				
				<category>ColdFusion</category>
				
				<pubDate>Wed, 17 Nov 2010 22:26:00 -0400</pubDate>
				<guid>http://www.supportobjective.com/blog/index.cfm/2010/11/17/Dynamically-change-Google-Map-Key-based-on-Host</guid>
				
				
			</item>
			
			<item>
				<title>Adobe MAX 2010 - A New Revolution</title>
				<link>http://www.supportobjective.com/blog/index.cfm/2010/11/3/Adobe-MAX-2010--A-New-Revolution</link>
				<description>
				
				&lt;p&gt;As MAX unfolded this year you could feel a major shift across all products to developing apps for all screen sizes. This was not the year of the big release but a year to recognize the shift that is occurring to have all new applications consider all devices from browsers, phones, tablets, and TV consoles. I don&apos;t think it was just a coincidence we received free devices, in fact it underlines the transition we are all going through as we write  applications for all devices.&lt;/p&gt;
&lt;p&gt;It kind of feels like 1997 when everyone became aware the internet was going to overtake the majority of application development. You get that same feeling when you look out over the next 2-3 years when you look at convergence of apps across devices and the move into the family room. (In a strange connection, it&apos;s hard to believe  the same guy who hit the game winner in game 7 in 1997 is the same guy who hit it in 2010.)&lt;/p&gt;
&lt;p&gt;To best capture this evolution all you need to do is watch the opening video of MAX as Kevin Lynch walks thru some timeline charts that demonstrate the changes upon us with bandwidth, browser vs devices, screen size changes ,digital publishing and the now the family room.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tv.adobe.com/watch/max-2010-keynotes/adobe-max-2010-keynote-day-1-welcome-to-the-revolution/&quot; target=&quot;_new&quot;&gt;MAX Opens with Multi-Screen Revolution&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Throughout the conference we witnesed how products are adding features to support managing screen sizes. ColdFusion did a sneak peek around supporting multi-screens with setting up a scope which will carry the clients device meta data using the CS5 Device Central database. Dreamweaver is adding more support around using  CSS versions to support differing layouts based on device.&lt;/p&gt;
&lt;p&gt;One big announcement was the Flash Builder &apos;Burrito&apos; Labs release which is now available to everyone inside &lt;a href=&quot;http://labs.adobe.com&quot; target=&quot;_new&quot;&gt;http://labs.adobe.com&lt;/a&gt; .   I&apos;d encourage you to download and check out how easy it is to start writing Mobile applications.&lt;/p&gt; 
				</description>
				
				<category>ColdFusion</category>
				
				<category>Adobe MAX</category>
				
				<pubDate>Wed, 03 Nov 2010 12:47:00 -0400</pubDate>
				<guid>http://www.supportobjective.com/blog/index.cfm/2010/11/3/Adobe-MAX-2010--A-New-Revolution</guid>
				
				
			</item>
			
			<item>
				<title>Get a Snapshot whenever a request goes over 5 seconds</title>
				<link>http://www.supportobjective.com/blog/index.cfm/2010/10/18/Get-a-Snapshot-whenever-a-request-goes-over-5-seconds</link>
				<description>
				
				Here is a great alert to keep on all the time or when you are trying to capture long running requests.  The snapshot will then capture the running thread and make it easy to identify where the thread is with processing the request.  Usually you can find the exact line number within the ColdFusion tag.

The below code will turn on monitoring and then set UnresponsiveServerAlert to create a snapshot anytime 1 or more requests goes over 5 seconds.

You can change any these settings including seting up notifications.  You can set this up via the ColdFusion Administrator, but you might find it easier to setup alerts via script if you have a number of servers.  

&lt;code&gt;
&lt;cfapplication name=&quot;compinvoker&quot; sessionmanagement=&quot;Yes&quot;&gt;
&lt;cfobject   component=&quot;cfide.adminapi.administrator&quot; name=&quot;admin&quot;&gt;
&lt;cfobject   component=&quot;cfide.adminapi.servermonitoring&quot; name=&quot;sm&quot;&gt;
&lt;!--- Login to CFAdmin using your admin password---&gt;
&lt;cfset admin.login(&apos;admin&apos;)&gt;

&lt;!---Turn on monitoring---&gt;
&lt;cfset sm.startMonitoring()&gt;

&lt;!--- For the record let&apos;s see the current settings---&gt;
&lt;cfdump var=&quot;#sm.getAlertSettings(&quot;unresponsiveserveralert&quot;)#&quot;&gt;

&lt;cfset alertSettings = StructNew()&gt;
&lt;cfset alertSettings.alert_processing_cfc = &apos;&apos;&gt;  
&lt;cfset alertSettings.busytimethreshold = 5000&gt;  
&lt;cfset alertSettings.dumpsnapshot = true&gt;
&lt;cfset alertSettings.enabled = true&gt;  
&lt;cfset alertSettings.hungthreadcount = 1&gt;  
&lt;cfset alertSettings.killthreadsenabled = false&gt;  
&lt;cfset alertSettings.killthreadthreshold = 0&gt;  
&lt;cfset alertSettings.notifyclientonalert = false&gt;  
&lt;cfset alertSettings.notifyonalert = false&gt; 
&lt;cfset alertSettings.rejectrequestsenabled = false&gt;

&lt;!--- Set the unresponsiveserveralert alert ---&gt;  
&lt;cfset sm.setAlertSettings(&quot;unresponsiveserveralert&quot;, alertSettings)&gt;

&lt;!--- Let&apos;s verify the new settings---&gt;
&lt;cfdump var=&quot;#sm.getAlertSettings(&quot;unresponsiveserveralert&quot;)#&quot;&gt;
&lt;/code&gt; 
				</description>
				
				<category>ColdFusion</category>
				
				<category>Server Administration</category>
				
				<pubDate>Mon, 18 Oct 2010 10:11:00 -0400</pubDate>
				<guid>http://www.supportobjective.com/blog/index.cfm/2010/10/18/Get-a-Snapshot-whenever-a-request-goes-over-5-seconds</guid>
				
				
			</item>
			
			<item>
				<title>Scripting a Snapshot from ColdFusion</title>
				<link>http://www.supportobjective.com/blog/index.cfm/2010/10/14/Scripting-a-Snapshot-from-ColdFusion</link>
				<description>
				
				A quick block of code to demonstrate how to generate a stack trace from within ColdFusion.  Using the server monitor API it is a fairly simple process.

&lt;code&gt;
&lt;cfapplication name=&quot;cfmonitor&quot; sessionmanagement=&quot;Yes&quot;&gt;
&lt;cfobject   component=&quot;cfide.adminapi.administrator&quot; name=&quot;admin&quot;&gt;
&lt;cfobject   component=&quot;cfide.adminapi.servermonitoring&quot; name=&quot;sm&quot;&gt;

&lt;cfset admin.login(&apos;YOURADMINPASSWORD&apos;)&gt;
&lt;cfset filename = sm.dumpSnapShot()&gt;
&lt;cfoutput&gt;
Snapshot was placed in: #filename#
&lt;/cfoutput&gt;
&lt;/code&gt;

The code calls the login function passing in your ColdFusion Admin password in order to get access to the Admin API.

The dumpSnapShot function will create the stack trace and return the file path of the snapshot.  The default location is usually ../web-inf/cfusion/logs/snapshots.

You might want to prompt for a password versus hardcoding in the tag as well. 
				</description>
				
				<category>ColdFusion</category>
				
				<category>Server Administration</category>
				
				<pubDate>Thu, 14 Oct 2010 11:39:00 -0400</pubDate>
				<guid>http://www.supportobjective.com/blog/index.cfm/2010/10/14/Scripting-a-Snapshot-from-ColdFusion</guid>
				
				
			</item>
			
			<item>
				<title>Creating a PDF Workflow with ColdFusion - Lead Management Sample Application</title>
				<link>http://www.supportobjective.com/blog/index.cfm/2010/10/6/Creating-a-PDF-Workflow-with-ColdFusion--Lead-Management-Sample-Application</link>
				<description>
				
				Recently my team needed to share some lead information to track data about contacts, and interactions.  I thought it would be a great solution for ColdFusion and PDF Forms and wrote an application to collect and save the PDF files.&lt;br /&gt;&lt;br/&gt;
&lt;img src=&quot;/images/coldfusionpdfscreenshot.png&quot;&gt;&lt;br /&gt;
The application works as follows:
&lt;ul&gt;
&lt;li&gt;The user logs into the ColdFusion application &lt;/li&gt;
&lt;li&gt;The user is presented with a Tabbed Layout showing Open and Closed leads &lt;/li&gt;
&lt;li&gt;The user can click on the Open leads and enter additional data, interactions &lt;/li&gt;
&lt;li&gt;If the user enters a close date the PDF is considered closed and is moved to the Closed folder\tab &lt;/li&gt;
&lt;li&gt;A user can also click the New Lead link and will be presented with a PDF with some prepopulated fields &lt;/li&gt;
&lt;li&gt;When the user is done editing they submit the entire PDF to CF and the file is saved on the server.&lt;/li&gt;
&lt;li&gt;Once any PDF is submitted into CF, it then sends an email to all users that are registered for different events&lt;/li&gt;
&lt;/ul&gt;

The PDF we are using in the application was built with Adobe Acrobat Form Designer.  We added a Submit button to this PDF that allows us to send the entire PDF to ColdFusion.  Once we have the entire PDF we are able to read the form data and make decisions on where to place the file.  In our case we are looking at the close date to see if we need to remove this PDF from the Open que.

The use case can apply to any PDF form as it travels between team members, work queues, collects data, gets signed, has files attached until the PDF is finally considered complete.

You don&apos;t necessarily need to send the entire PDF, you can just as easily submit the form data with Acrobat button called the HTTP Submit.  You would then need to handle prepopulating the form and data within CF before sent to the requestor.

Make sure to place the PDF repository inside a non-browsable location, to make sure it is only served via your CF application.

&lt;b&gt;Instructions for installing:&lt;/b&gt; &lt;a href=&quot;/demos/coldfusionpdf_100.zip&quot;&gt;Download Application&lt;/a&gt;&lt;br /&gt;
1. The PDF submits to /jaxfusion/index.cfm so if you deploy to another directory you will need to change sample pdf &lt;br /&gt;
2. Place 3 files in a directory called jaxfusion off your web application root ie:C:\JRun4\servers\cfusion\cfusion.ear\cfusion.war\jaxfusion &lt;br /&gt;
3. Place the leads directory into a directory off the root. ie: C:\JRun4\servers\expertshelf\cfusion.ear\cfusion.war\Web-INF\leads &lt;br /&gt;
4. You will see the leadmanagement.pdf and 2 subdirecectories called open and closed inside the leads directory &lt;br /&gt;
5. Review settings in the application.cfm, if you placed files anywhere else you will need to make adjustments. &lt;br /&gt;
6. I added 2 users to a test query, you can use for testing. &lt;br /&gt;
7. You will need to adjust the mail settings to get notifications to work as well. &lt;br /&gt;

&lt;b&gt;Next Steps&lt;/b&gt;&lt;br /&gt;
This design of this application was inspired after doing some work with Alfresco&apos;s Document Management.  My next step is to take this application and integrate it with Alfresco&apos;s repository and user authentication features.  Look for Part 2 of this application in a few weeks using Alfresco to store, version and secure the PDFs. 
				</description>
				
				<category>ColdFusion and PDFs</category>
				
				<category>JaxFusion</category>
				
				<pubDate>Wed, 06 Oct 2010 17:06:00 -0400</pubDate>
				<guid>http://www.supportobjective.com/blog/index.cfm/2010/10/6/Creating-a-PDF-Workflow-with-ColdFusion--Lead-Management-Sample-Application</guid>
				
				
			</item>
			
			<item>
				<title>ColdFusion 9 Enterprise - CF Builder Promotion</title>
				<link>http://www.supportobjective.com/blog/index.cfm/2010/10/5/ColdFusion-9-Enterprise--CF-Builder-Promotion</link>
				<description>
				
				Adobe has recently made available an awesome bundle promotion around ColdFusion 9 Enterprise.

If you plan on buying new or upgrade licenses it might be a good time, you get 3 Free licenses of ColdFusion Builder 1.0 for each ColdFusion 9 Enterprise.

&lt;img src=&apos;/images/cfbuilderpromomedium.png&apos;&gt;

&lt;h2&gt;Give us a call if we can help with your order.&lt;/h2&gt; 
				</description>
				
				<category>ColdFusion Builder</category>
				
				<category>ColdFusion</category>
				
				<pubDate>Tue, 05 Oct 2010 12:06:00 -0400</pubDate>
				<guid>http://www.supportobjective.com/blog/index.cfm/2010/10/5/ColdFusion-9-Enterprise--CF-Builder-Promotion</guid>
				
				
			</item>
			
			<item>
				<title>A Brief Early History of JRun</title>
				<link>http://www.supportobjective.com/blog/index.cfm/2010/9/28/A-Brief-Early-History-of-JRun</link>
				<description>
				
				I found this email recently and thought it was worth sharing.

This was created by Paul Colton in 2001.

1996 - Live Software releases LiveSite 1.0, a server-side scripting system written in C++ for Windows that is aimed squarely at ColdFusion

1997 - Live Software develops numerous Java applications as a consulting company, including one of the first &apos;Personal Java&apos; apps running on WebTV and demoed at JavaOne

1997 - JRun was written in San Diego

1997 / July - Released by San Diego-based Live Software (company consisted of Paul Colton, Shannon Gillikin, and a single part-time employee) as a free product 
 
1997 / Fall Included in O&apos;Reilly&apos;s WebSite server for NT and StarNine&apos;s WebStar server for the MAC 

1997 / Oct - JSP engine developed and demoed to O&apos;Reilly
 
1998 / April - First commercial version (JRun Pro) released 

1998 / Spring - Licensed by Cisco  

1998 / JavaOne - First commercial JSP engine
 
1998 - Went &quot;out-of-process&quot; first (due to Macromedia Generator) and released pluggable API for JRun &apos;admin&apos; tool (again for Macromedia)

1998 / Summer - Moved to Bay Area then got funded by David Poole, former founder of Spry

1998 / Dec - Began hiring employees for the first time, including Edwin Smith, Dan Smith, Tom Reilly, Clement Wong, and others
 
1998 / Dec - CFanywhere created

1999 / March - CFAnywhere announced with full-page ad in premier issue of &apos;Cold Fusion Developers Journal&apos;

1999 / June - Live Software was a 10-person company when acquired by Allaire 
 
2000 / Summer - Added Ejb 1.1 support in 3.0

2002 / May 12th - JRun 4 released 
				</description>
				
				<category>JRun</category>
				
				<pubDate>Tue, 28 Sep 2010 16:43:00 -0400</pubDate>
				<guid>http://www.supportobjective.com/blog/index.cfm/2010/9/28/A-Brief-Early-History-of-JRun</guid>
				
				
			</item>
			
			<item>
				<title>Using SpreadSheetSetActiveSheet to break out a Query into Multiple Sheets</title>
				<link>http://www.supportobjective.com/blog/index.cfm/2010/9/21/Using-SpreadSheetActiveSheet-to-break-out-a-Query-into-Multiple-Sheets</link>
				<description>
				
				I recently had to loop thru a query and break it out into separate sheets inside one spreadsheet.  Here is a quick walkthrough on how you can code this with the new  ColdFusion 9 spreadsheet functions.

1. You may need to adjust the requesttimeout if you are working with a large number of records.

&lt;code&gt;&lt;cfsetting showdebugoutput=&quot;no&quot;  requesttimeout=&quot;300&quot;&gt;&lt;/code&gt;

2. Create your main spreadsheet and all the sheets you need, the below spreadsheet will have 3 sheets &apos;mainSS&apos; represents the first sheet.
&lt;code&gt;
&lt;cfscript&gt; 
theFile=GetDirectoryFromPath(GetCurrentTemplatePath()) &amp; &quot;YOURFILENAME.xls&quot;; 
mainSS = SpreadsheetNew(&quot;mainSS&quot;);
SpreadsheetCreateSheet(mainSS, &quot;mySheet1&quot;); 
SpreadsheetCreateSheet(mainSS, &quot;mySheet2&quot;); 
&lt;/cfscript&gt; 
&lt;/code&gt;

3. Create your query
&lt;code&gt;
&lt;cfquery name=&quot;q1&quot;  datasource=&quot;YOURDSN&quot;&gt;
       select firstname,lastname from employees    
&lt;/cfquery&gt;
&lt;/code&gt;

4. Set Header Rows - you will need to decide how you want to use header rows by sheet, for this example I am setting one row to make note of it.
&lt;code&gt;
&lt;cfset SpreadsheetAddRow(mainSS,&quot;Firstname,Lastname&quot;)&gt; 
&lt;/code&gt;

5. Loop thru query and decide what sheet will receive the data by using the SpreadSheetActiveSheet Function
&lt;code&gt;
&lt;cfloop query=&quot;q1&quot; &gt;
&lt;cfif firstname eq &apos;Mary&apos;  &gt;
&lt;cfset SpreadsheetSetActiveSheet (mainSS, &quot;mySheet1&quot;)&gt;
&lt;/cfif&gt;
&lt;cfif firstname eq &apos;John&apos;  &gt;
&lt;cfset SpreadsheetSetActiveSheet (mainSS, &quot;mySheet2&quot;)&gt;
&lt;/cfif&gt;
&lt;/code&gt;

6.  Add data row to sheet that was made active
&lt;code&gt;
&lt;cfset SpreadsheetAddRow(mainSS,&quot;#q1.firstname#,#q1.lastname#&quot;)&gt; 
&lt;/cfloop&gt;
&lt;/code&gt;

7. Your spreadsheet is now ready to be saved, the below will write the spreadsheet to a file, replacing any existing file 
&lt;code&gt;
&lt;cfscript&gt; 
   	spreadsheetwrite(mainSS, theFile,&apos;&apos;,&quot;yes&quot;);
&lt;/cfscript&gt; 
&lt;/code&gt;

Note: I did need to pass in an empty string for the 3rd parameter, which is a spreadsheet password, otherwise I was getting a compiler error.

At this point you can open your spreadsheet and view your data as you organized it inside the sheets. 
				</description>
				
				<category>ColdFusion</category>
				
				<pubDate>Tue, 21 Sep 2010 20:44:00 -0400</pubDate>
				<guid>http://www.supportobjective.com/blog/index.cfm/2010/9/21/Using-SpreadSheetActiveSheet-to-break-out-a-Query-into-Multiple-Sheets</guid>
				
				
			</item>
			
			<item>
				<title>Using a Session Listener with ColdFusion</title>
				<link>http://www.supportobjective.com/blog/index.cfm/2010/9/7/Using-a-Session-Listener-with-ColdFusion</link>
				<description>
				
				How cool would be if you could catch whenever someone changed a session variable in order to do some debugging.  Yes, it is possible and it can be used for debugging but also for many other uses cases.  Let&apos;s take look how we can do this with ColdFusion.  

The idea of listening to HTTPSession events is basically a J2EE concept and JRun fully supports this and allows you to catch all the event thrown by active sessions.  You should be able to do this for J2EE application servers as well.

A great place to start to understand the concepts is to read the documentation Adobe provides in the JRun LiveDocs: http://www.adobe.com/livedocs/jrun/4/Programmers_Guide/servletlifecycleevents4.htm
&lt;a href=&quot;http://www.adobe.com/livedocs/jrun/4/Programmers_Guide/servletlifecycleevents4.htm&quot;&gt;JRun LiveDocs: HTTPSession Listeners&lt;/a&gt;

Once you understand the concepts, it&apos;s time to look at some code.  You have a few options, you can use the sample code provided the JRun Sample Server, or you can use a TechNote written to demonstrate this very topic within JRun, it comes with compiled code, source code  and web.xml edits  

&lt;a href=&quot;http://kb2.adobe.com/cps/182/tn_18279.html&quot;&gt;JRun 4.0: Monitoring HttpSessions using new servlet 2.3 session APIs&lt;/a&gt;

Important ColdFusion Note: Make sure you have Use J2EE Sessions turned on inside your ColdFusion Administrator.

Once you have made the edits to web.xml and added the class files, restart ColdFusion in a command window and you will begin to see session activity being logged to the console.

Using the code from the above technote I see the following when I update a session variable with the now() function.

Tue Sep 07 12:39:59 EDT 2010 (session) replaced attribute: ID=84301d9ce403c6a78d
147b2e3c2d4a161a50 Name=test Old Value={test={ts &apos;2010-09-07 12:39:48&apos;}, urltoke
n=CFID=12001&amp;CFTOKEN=83593823&amp;jsessionid=84301d9ce403c6a78d147b2e3c2d4a161a50, s
essionid=84301d9ce403c6a78d147b2e3c2d4a161a50} New Value={test={ts &apos;2010-09-07 1
2:39:48&apos;}, urltoken=CFID=12001&amp;CFTOKEN=83593823&amp;jsessionid=84301d9ce403c6a78d147
b2e3c2d4a161a50, sessionid=84301d9ce403c6a78d147b2e3c2d4a161a50}  


Your own code can do anything within the listener classes, such as go to a database, email you if something is triggered and so on. 
				</description>
				
				<category>Server Administration</category>
				
				<pubDate>Tue, 07 Sep 2010 13:22:00 -0400</pubDate>
				<guid>http://www.supportobjective.com/blog/index.cfm/2010/9/7/Using-a-Session-Listener-with-ColdFusion</guid>
				
				
			</item>
			
			<item>
				<title>Happy 15th Birthday ColdFusion</title>
				<link>http://www.supportobjective.com/blog/index.cfm/2010/7/11/Happy-15th-Birthday-ColdFusion</link>
				<description>
				
				I was just reading the the CF Wiki tonight and found that yesterday was CFs birthday.

&lt;a href=&quot;http://en.wikipedia.org/wiki/ColdFusion&quot; target=&quot;_blank&quot;&gt; http://en.wikipedia.org/wiki/ColdFusion&lt;/a&gt;

The first version of ColdFusion (then called Cold Fusion) was released on July 10, 1995.

ColdFusion has come along way the last 15 years.  (per wiki)

&lt;ul&gt;
&lt;li&gt;1995 : Allaire Cold Fusion version 1.0 &lt;/li&gt;
&lt;li&gt;1996 : Allaire Cold Fusion version 1.5 &lt;/li&gt;
&lt;li&gt;1996 : Allaire Cold Fusion version 2.0 &lt;/li&gt;
&lt;li&gt;1997-June : Allaire Cold Fusion version 3.0 &lt;/li&gt;
&lt;li&gt;1998-January : Allaire Cold Fusion version 3.1 &lt;/li&gt;
&lt;li&gt;1998-November : Allaire ColdFusion version 4.0 (space eliminated between Cold and Fusion to make it ColdFusion) &lt;/li&gt;
&lt;li&gt;1999-November : Allaire ColdFusion version 4.5 &lt;/li&gt;
&lt;li&gt;2001-June : Macromedia ColdFusion version 5.0 &lt;/li&gt;
&lt;li&gt;2002-May : Macromedia ColdFusion MX version 6.0 (build 6,0,0,48097), Updater 1 (build 6,0,0,52311), Updater 2 (build 6,0,0,55693), Updater 3 (build 6,0,0,58500) &lt;/li&gt;
&lt;li&gt;2003-July : Macromedia ColdFusion MX version 6.1 (build 6,1,0,63958), Updater 1 (build 6,1,0,83762) &lt;/li&gt;
&lt;li&gt;2005 : Macromedia ColdFusion MX 7 (build 7,0,0,91690), 7.0.1 (build 7,0,1,116466), 7.0.2 (build 7,0,2,142559) &lt;/li&gt;
&lt;li&gt;2007-July-30 : Adobe ColdFusion 8 (build 8,0,0,176276) &lt;/li&gt;
&lt;li&gt;2009-April-04 : Adobe ColdFusion 8.0.1 (build 8,0,1,195765) &lt;/li&gt;
&lt;li&gt;2009-October-05 : Adobe ColdFusion 9 (build 9,0,0,251028) &lt;/li&gt;

&lt;/ul&gt;

Happy Birthday Coldfusion!!  Here&apos;s to many more... 
				</description>
				
				<category>ColdFusion</category>
				
				<pubDate>Sun, 11 Jul 2010 22:25:00 -0400</pubDate>
				<guid>http://www.supportobjective.com/blog/index.cfm/2010/7/11/Happy-15th-Birthday-ColdFusion</guid>
				
				
			</item>
			</channel></rss>
