I manage a lot of ColdFusion Enterprise application servers. When I'm working on new server deployments, accessing the various ColdFusion Administrator's, or troubleshooting issues, I often have ideas about ways Adobe can improve enterprise server management. Here are three of the ideas I've had recently.

Select all checkboxes in CAR builder

If you're responsible for managing a bunch of ColdFusion servers and/or you've worked with ColdFusion's packaging and deployment tools you should be familiar with CAR files. If not, ColdFusion archive files (*.car) are a great way to package ColdFusion administrator settings on one server and deploy them on additional servers in your infrastructure. The CAR builder in ColdFusion 8 works well but some user interface refinements would really make the tool easier to use. Take datasources for instance. You have to individually select each datasource in order to include them in your CAR file. If your server uses more than a few this process can be tedious. I'd like to see two new controls here, select all and deselect all.

Notes feature in scheduled tasks

Before talking about my idea for scheduled tasks let me briefly provide some background. I typically deploy purposeful ColdFusion servers. By purposeful I mean each server has a specific role and it doesn't deviate much from its main purpose in life. These roles are highly generalized like serving content for public Web sites, an intranet, or a back-end content management system. This example defines three different roles where separate ColdFusion servers would accommodate user requests.

Another common role is reporting. Applying this idea in the real world generally means all "heavy" ColdFusion tasks - like reporting - would run on one or more of the reporting servers. It's not uncommon for these servers to have dozens of scheduled tasks. Through the lifecycle of product development scheduled tasks are created, removed, edited, temporarily paused, and deleted. Managing these scheduled tasks and knowing the current state of each task is pretty cumbersome. Sure you can take notes in a tool like Evernote but I'd really like to see a notes feature in scheduled tasks. It could be as simple as a text area that allows you to type free form notes for any purpose you find necessary. If you have to temporarily change the schedule for a task you could write a note about why. If you had to pause a task for an indefinite period of time but you wanted to remember why later, you could note it in the notes field. You might need to alter a scheduled tasks URL or authentication parameters while you troubleshoot an issue. Using the notes feature you could jot down the original URL or authentication username/password. The ways this feature can be used to manage a server effectively are limitless.

Remote settings compare

I recently needed to compare ColdFusion Administrator settings across more than a dozen servers. Our application error tracking and reporting code started notifying us of issues with a few servers. It was unclear from stack traces where the root cause of the error was or even if the problem was with ColdFusion or the database cluster. Understanding why only a few of the servers were experiencing issues involved first ensuring all server settings were the same. To do this I copied all the text on the Settings Summary screen of each of the ColdFusion Administrator's and made a bunch of text files. I then used the wonderful Changes application on OS X to do a file comparison from server A to server B and server B to server C, etc. This worked okay but it was more time consuming than I'd like.

A better solution would be a settings comparison tool built into the CF admin that allowed you to remotely compare settings across all servers. The obvious place for this tool is the Enterprise Manager where additional ColdFusion instances are managed. Or, in the case of single-instances deployed across multiple physical (or virtual) servers Web Services could be used to tap into an Admin API feature for settings comparison. Imagine selecting all the servers you want to compare and getting a grid display showing you what settings are different across all the servers!

What do you, the ColdFusion community, think of these ideas? Am I crazy for thinking these things would be useful? What ColdFusion Administrator features would you like to see?

Aaron West's Gravatar
About this post:

This entry was posted by Aaron West on April 27, 2009 at 8:00 AM. It was filed in the following categories: ColdFusion. It has been viewed 3857 times and has 6 comments.

6 Responses to Ideas on Improving ColdFusion Server Management

  1. We hired a pair of server admins almost a year ago. For them, this is their first ColdFusion shop. We have over 30 CF servers in our pool they're annoyed at having to log into each server for tasks like adding or updating a data source.

    They keep hounding me for some kind of single interface to all of the CF servers, where you can alter a setting and "deploy to all". We're using CF Standard currently, but we have plans to move to multi-instance Enterprise. If the interface could handle both versions of CF, that would save time & money.

  2. @Adrian: Not sure why they're hounding you considering CF Standard doesn't get access to the CAR interface/deployment. That being said, I know I have kicked Adobe repeatedly for this, hoping they finally fix it.

  3. cool ideas, and I agree they are important. I manage 8 CF 8 Ent. instances (6 of which need identical settings), and am tired of copying CAR files everywhere and manually logging into each CF Admin just to clear the template cached. I've got an early "alpha" version of what I'm calling MultiCFAdmin, where I've just got the basic proof-of-concept going: it lists all the cf instances that you want to manage (set up in a configuration structure), and then logs into each to get basic "heartbeat" data, and then I have a single link action that allows you to clear the template cache for all the cf instances at once. It requires CF 8, some special mod to each jrun-web.xml, web service facades to the Admin API, and duct tape ;), but does the trick.

    follow me on http://twitter.com/aqlong, and I hope to be able to let folks know when I get something more sharable ready

  4. For forms like the CAR Datasources, the Web Developer Toolbar for Firefox is great (Forms > Populate Form Fields selects all). But yes, Adobe should do a select/deselect all option too.

  5. spitch

    we had to compare servers for cmmi requirements and created a page we ran on the server
    then checked into our version control system to do a compare. Primitive but effective. The code
    was mostly from some tutorial I don't remember so i cannot give proper credit.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

       <title>MX Server Configuration</title>


    <cfset serverConfig = StructNew()>

    <cfoutput query="ConfigFiles">
    <cfif Name CONTAINS ".xml">

    <cfif IsWDDX(fcontents)>
    <cfset temp = StructInsert(serverConfig, name, StructNew())>


    <cfset temp = StructUpdate(serverConfig, name, Duplicate(stFile))>

    <cfcatch type="Any"></cfcatch>

    <cfdump var="#serverConfig#">

    <!--- All DSN information in CFMX is available as a structure so you can display the information easily: --->
    <cfobject type="JAVA" action="Create" name="factory" class="coldfusion.server.ServiceFactory">

    <cfset sqlexecutive = factory.getDataSourceService()>
    <cfset datasources=sqlexecutive.datasources>

    <!--- // now if you want to see the information on all datasources you can dump it: --->

    <cfdump var="#datasources#" label="DataSources">


  6. @spitch - Thanks for posting your comment and idea. Until reading it I had forgotten I have a little ServiceFactory code (hidden on my blog actually) that displays all kinds of server information like OS, JVM version, datasources, etc. I never thought to check in the results of the page into source control but it's a pretty good idea. The only problem is making sure anyone with access to change a setting in CF Admin remembers to rerun the script, get the new data, and commit a change. Otherwise, having a history in source control is nice but not really helpful for tracking historical changes. Good stuff.