Just completed my first port of a major app from ColdFusion to Railo. Time elapsed from downloading the Railo WAR to my dev box to see if the app would run to reenabling the prod instance: 1.5 hours.
Downloaded the WAR, unpacked it into my webroot, unzipped a new Tomcat, set up a Context pointer to my webroot, and fired it up. Worked like a charm, and after adding my DSN to the config file, the app was running.
I had to make a couple minor tweaks for Railo compatibility:
- Railo seems to stick getContextRoot() into cgi.script_name automatically, so I had to remove the function calls in my 'self' variable's definition
- Railo has an issue with non-defaulted, non-required, numeric method arguments that are omitted from a call. I added it as bug 147 in JIRA.
After that I just checked /WEB-INF/ and the tweaks into Subversion for deployment to production. On my prod server I did basically the same process: unzip a Tomcat, set up a Context pointer to the existing webroot, configure an init script, and fire it up. Once Tomcat was happy (first try!), I took the Alias directive out of my Apache config, replaced it with a mod_rewrite proxy directive, redeployed the app (to get /WEB-INF/ and the tweaks), changed the DSN credentials, and bounced Apache. Done. Live. No errors. And cookie-based session tracking worked flawlessly across the engine replacement.
Needless to say this is a HUGE win for both me and Railo. I've been writing new stuff to Railo, but hadn't ported anything substantial because I didn't want to deal with the pain. But with how minor the pain is, it's totally overshadowed by the benefits of separate contexts (or VMs!) per app. That was never really an option with CF because of the memory footprint (350MB for CF vs 60MB for Railo).
Gert will be happy :) The guys at Railo really work hard to get these things working. Now I have to do that for a few of our apps… scared…
I have to admit, Railo is super easy to get up and running. I recently pulled down their Express download, no install, was up and running in about 5 minutes (the time it took me to set up my datasources). As a quick test, I copied over an old MG:U app and outside of some small changes, it ran beautifully. I'm definitely impressed with all the hard work the Railo folks have done.