• Railo 3.3 Released!

    Railo 3.3 released!

    Railo 3.3 is now available for download and update. It is an amazing new release of Railo Server which comes with several new features and enhancements. Check out the release notes for details.

    read more »

    Railo 3.3 Released!Give your servers more power.

  • Railo for Beginners

    Railo for Beginners Book Released!

    Railo for Beginners is the first book published by the Railo Team giving you a start to finish guide to developing your applications using Railo Server.

    Order Now! »

    Railo for Beginners Released!Get the lowdown on the best CFML Server

  • Find, fix and prevent server problems

    Monitor your Railo servers with the leading ColdFusion monitor - FusionReactor.  FusionReactor is designed to continuously monitor production servers and give you instant alerts of resource issues or server instability and even performs self healing actions when servers are in distress. 

    Read More

    Server Monitor for RailoFind, fix and prevent server problems.

  • Introducing Non-Intrusive Debugging

    Increase your ColdFusion development team's productivity with advanced CFML debugging! FusionDebug, the interactive step debugger for Railo, now supports IP Filtering.

    Read More

    Interactive Debugger for RailoIntroducing Non-Intrusive Debugging.

Services

Our expert consultants can help you get the most value out of projects. We offer support for all aspects of your project from installation to programming to maintenance and even training.

Consulting Training Support Contact Us
Products

Accelerate your CFML and Java development with Railo Server. Railo Server is the fastest CFML engine available and is 100% compatible with JBoss Application Server, Tomcat and the most popular Java Servlet engines.

Railo Enterprise Bundle Railo Open Source
Railo Server Monitoring

Enhance your Railo solution by adding professional Server Monitoring and ColdFusion Debugging capability - using FusionReactor and FusionDebug. Both tools are included when you purchase the Railo Enterprise Bundle.

Read More about Server Monitoring Read More about Debugging

Railo News

January 23, 2012
Railo Tip of the Week: Query Cache

If you are using the query cache and you would like to flush the cache you can use the tag <cfobjectcache action = "clear"> in order to do so. The problem here is that this call flushes the complete cache which is a waste. In Railo you can use some additional attributes like filter, filterignorecase, and result.

The attributes filter and filterignorecase allow you to flush objects from the cache that match the filter. The filter gets applied like the sql statement LIKE. So if you use the following tag:

<cfobjectcache action="clear" filter="susi">

Then all elements in the query cache that are containing the string susi are flushed from the cache. This means you can easily remove all queries for a certain table if a table is updated on the database. The attribute filterignorecase does the same without obeying the case.

The next new attribute Railo has introduced is result which can be used with the new action size. If you execute the following tag:

<cfobjectcache action="size" result="cachesize">

the variable cachesize will contain the number of elements in the cache.

January 16, 2012
Railo Tip of the Week: Page Pool

Greetings and welcome to the first in our weekly series of Railo tips! Over the years, we've picked up a trick or two using Railo and we wanted to share these with you. And so, without further adieu, we are happy to present our first tip!

Page Pool

When you call a template in Railo, the template lands in the page pool for reuse. The pages in the page pool are refreshed depending on the settings you have made in the Performance/Caching area of the Railo administrator. Now if you want to make use of the setting "never" which will never look for changed templates during the lifetime of a server instance, you should use the built in function
pagePoolClear()
in order to flush the template cache (page pool).

If you want to see what pages are inside the page pool you can use the built in function
pagePoolList().
The function returns an array with all the pages in the page pool.

Have a tip you'd like to share? Get in touch with us and let us know!

December 20, 2011
Railo 3.3.1.007 and Comment Metadata

Normally in patch releases we do not introduce new functionality. Except if they don't affect the runtime behaviour of Railo Server. With the latest release of Railo Server (3.3.1.007) we have introduced two new features I would like to present in more detail.

Support for Query coverage

Now when you pull a query from the database, you can check your debugging output for a percentage of how much the columns of your queries has been actually used in the code. First of all you need to activate the query coverage display in the admin under debugging:

Once activated, if you for instance execute something like this:

<cfquery name="get" datasource="ds">
Select * from countries
</cfquery>
<cfoutput>
<cfloop query="get">
#get.countryShort#: #get.countryLong#<br>
</cfloop>
</cfoutput>


And your countries table has 5 columns. The coverage of that query lies at 40%. This is then displayed in the debugging information like follows (in this example I use the debugging console):

Support for Comment Metadata

General syntax and notes

Another new feature we have introduced is the idea of Comment Metadata (also known as annotations). In Railo we would rather call them "doc comments" since Railo will only check for added metadata if a doc type comment is found in the code. So the comment must look like the following:

/**
*
...
*
*/
function ... { }


So what you now can do in Railo Server is:

/**
* my Hint
* @prop1 Property 1
* the rest of the hint
*/ function test(arg1){ }


Now if you call getMetaData(test) you will get a struct that contains additional keys (in this case prop1). Other implementations allow you to define each possible argument of a function in annotation style, just like this:

/**
*
@returntype string
*/
function test(arg1) { }


This notation and thus the functionality behind it means that comments are affecting the code's behaviour, which we will intentionally NOT support.
Take the following example that throws a compiler error:

/**
* @returntype string
*/
public int function test(arg1) {
}


In our opinion you should never receive a compiler error because of a comment you have made in your code. So even the following would throw an error, which is wrong since it IS just a comment:

/**
* please never ever use the comment
@returntype since this might crash
something in the compiler.
*/
public int function test(arg1) {
}


So Railo always ignores definitions which contain doc comments that might interfere with allowed arguments of a function definition (like output, returntype etc.).
Another case is that Railo Server will never ever throw an exception if something is wrong in the doc comment or meta data for a param which is defined inside the comment and also within the statement.
In short, the doc comments will only provide data for the return of the function getMetadata() and nothing else.
So how does one use it?
/**
* test
* @susi sorglos
* update
*/

Generated metadata:
/**
* test
* @
* update
*/

Generated metadata:
/**
* test
* @arg1. susi
* update
*/
function test(arg1){}

Generated metadata:
in ACF: {"":"susi"}
ignored in Railo, thus producing: {}

/**
* test
* @susi "Sorglos"
* update
*/

Generated metadata:
/**
* test
* @susi "Sorglos
dried her hair"

* update */

Generated metadata:
In this case Adobe ColdFusion only removes the starting quote ("), but not the ending quote("). Railo only removes quotes (") if there is a quote (") at start AND at the end of the line. We are thinking of changing this to allow multiple line definitions for metadata, so that the above code would result in metadata for susi that would contain the value "Sorglos dried her hair" (including the quotes of course).

/**
* test
* @hint "Susi Sorglos"
* update
*/

Generated metadata:

Defining argument hints in cfscript

What you can also do is to define your hints for certain arguments within cfscript.
Let's have a look at the code below for details (both function definitions define the same function):

/**
* @arg3.urs hallo
* @arg3.peter halli
*/
function testFunctionScript(argument1='something' myannotation='something', string arg2="" susi="sorglos", numeric arg3 urs="ursula") {
return 'something';
}

<cffunction name="testFunctionTag">
<cfargument name="argument1" myannotation="something">
<cfargument name="arg2" susi="sorglos">
<cfargument name="arg3" type="numeric" urs="ursula" peter="halli">
</cffunction>


Generated metadata:

As usual, comments are warmly welcome

Mark Drew's personal blog

September 26, 2011
CFCamp 2011! Be there or be a Pretzel!

 

Munich! City of Oktober fest and Pretzels! The big soft ones with butter inside. What could be more delicious than that? I tell you what is... CFCAMP 2011 is! 

That's right ladies and gentle-folks, after a three year hiatus, there is going to be a stomping and knowledge-infusing conference in Munich this year, filled to the gills with awesome presenters and me! 

For a measly €90  a ticket (going up to €119 in October, so get them whilst they are fresh!), your mind can be blown by the likes of Charlie Arehart (he of the inside secrets into ColdFusion 10!), Luis Majano (he of the mobile knowledge), Gary Gilbert exposing his JQuery to the public, Bilal Soylu will also be locking down your apps, and of course Andy Allan and myself, giving it all from our presenter's pulpit. 

Sure you can't miss this?!

Head over to http://www.cfcamp.org/anmeldung.cfm http://www.cfcamp.org/registration.cfm?ChangeLanguageTo=en to get your tickets (yep, it's in German, just use Chrome and translate it, you are a clever person right? This time in English! Don't say we don't spoil you!)

 

 

August 22, 2011
Checking the memory of your applications in Railo 3.3.0.026 rc

If you have ever wondered how your memory is being used in a Railo Server application, why not get the latest development release of Railo Server: 3.3.0.026 rc (you know that you can do this from the server administrator right?).

Just go to http://yourdomain/railo-context/admin/server.cfm and log in, then you can click on the "update" button, set the updates to "Development", update and then click the "execute button below to get the latest update.

Once you have done that, in the Railo Server Administrator screen, you will see info about your installation and scrolling down you will get a nice graphic on how your memory is being used, like the example below:

Yet another handy feature of Railo Server! Nice!

April 1, 2011
Denny Valliant Joins Railo!

It has been two years today that I have been working at Railo Technologies and it gives me great pleasure to announce that Denny Valliant (@denstar) has just joined the team!

Denny is a great addition as he has been working with various packagers for Railo, and of course, he is the Lead Developer for the CFEclipse project!
How about that for a great combination eh?!
Welcome on board Denny! Hold on tight! It's gonna be a hell of a ride!
Check out the official announcement over that the Railo Blog