Cloud Photo

Azure Data Architect | DBA

Learning to Love Railo

I have used the official ColdFusion since 1997 when it was owned by the Allaire brothers. I used it when Macromedia owned it. I used it when Adobe owned it. I have also used Open Blue Dragon and now I have used Railo. Given the price comparison, Railo is so far my favorite flavor of ColdFusion. Here’s a few reasons why and a small datasource IsItUp script.

Setup

One of the first things I noticed about Railo is how easily it installed on a 64-bit Windows 7 workstation. Running an exe or msi is always easy, but one thing that can make an app server install leave a sour taste is how complete the install is. Railo, I’m happy to report, includes drivers for a whole host of databases including Oracle, MS SQL, DB2, H2, PostgreSQL, MySQL and more.

Next, immediately after install, you can login to the administrator page and find a remarkable number of features and a navigation pattern that is very similar to the Adobe ColdFusion layout. This certainly lowers the learning curve. I proceeded to setup a datasource and found the layout still very similar to the historic ColdFusion gui. In under 30 minutes I was able to start coding a ColdFusion application.

First App

So I set out to create a small app to monitor datasources. I needed a quick page that users could hit to see if the problem was the database. I started out creating a hard-coded list of datasources to loop over to check. Then I found the handy cfadmin tag in Railo. The cfadmin tag has an action, getDatasources, that creates a query structure that lists the datasources. Obviously, this is a key to the kingdom and you should guard it carefully. On the other hand, it’s a key to the kingdom and oh there are so many wonderful things you can do with a key to the kingdom. The following lines of code is all there is to my datasource monitoring tool.

First, I use cfadmin to get a list of datasources.

Next, I query the cfadmin results to get just the columns I need and sort it.

Then, I use cfoutput to create dynamic queries against databases depending on the type of database.

Finally, I use cftry/cfcatch to show if the query to the datasource was successful.

It is a very simple but useful tool made even more simple by Railo’s cfadmin tag.

<html lang="en">
<head>
<title>Availability Monitor</title>
</head>
<body>
<style>
.pass { color: green;}
.fail { color: red; font-weight: bold; }
</style>
<h2><script>document.writeln(document.title);</script></h2>
<cfadmin type="server" password="myPassword" action="getDatasources" returnVariable="ds">
<cfquery dbtype="query" name="dsList">select name, classname from ds order by name</cfquery>
<cfoutput query="dsList">
<cftry>
<cfif classname contains "oracle">
<cfquery datasource="#name#" name="q#name#" timeout="3">select sysdate from dual</cfquery>
<cfelseif classname contains "microsoft">
<cfquery datasource="#name#" name="q#name#" timeout="3">select getDate()</cfquery>
</cfif>
<p class="pass">#name# OK</p>
<cfcatch>
<p class="fail">#name# Unavailable</p>
</cfcatch>
</cftry>
</cfoutput>
</body>
</html>

Leave a Reply