Entries Tagged as 'web application development'

Many a time, ColdFusion application code is deployed on a network path when your ColdFusion deployments are of large-scale and mandated to use network paths.

After setting up the server for the first time, if there is any performance hit, as the first thing you would want to cross-check few things. One of the things to determine is if there is any network latency.

Though you would have got same network within your organization same as earlier, your OS version also would have changed.


Follow the steps below to see if the performance hit is due to network latency-

When the server is under moderate or full load(with at least 8-10 requests under process), take 2 or 3 thread dumps with 30 seconds interval.

It is not appropriate to take thread dump when the server has negligible load and anlyze that as there may not be any in-process requests.

If you are not sure how to take thread dump, you can simply follow the following blog.

( Taking Thread Dumps From ColdFusion Server Programmatically )

Open the thread dump file:

Under moderate or full load server conditions, if you see more than 5-8% of running ColdFusion threads containing “WinNTFileSystem” in the thread’s stack trace --> It means that there is lot of time being spent in trying to resolve the application file paths.

Following are the sample threads having WinNTFileSystem in its dump.

"ajp-bio-8014-exec-6861" Id=13898 in RUNNABLE
 java.lang.Thread.State: RUNNABLE
 prio=5 blockedtime=28963 blockedcount=6819 waitedtime=421762 waitedcount=115
    at java.io.WinNTFileSystem.getBooleanAttributes(Native Method)
    at java.io.File.isFile(File.java:876)

"ajp-bio-8014-exec-6861" Id=13898 in RUNNABLE (running in native)
 java.lang.Thread.State: RUNNABLE
 prio=5 blockedtime=28961 blockedcount=6814 waitedtime=421762 waitedcount=115
    at java.io.WinNTFileSystem.canonicalize0(Native Method)
    at java.io.Win32FileSystem.canonicalize(Win32FileSystem.java:414)
    at java.io.File.getCanonicalPath(File.java:618)

(Note: ColdFusion threads can be identified by the name starting with "ajp-" )

For Example, if there are 50 threads with thread name starting "ajp-bio-" in the thread dump, if you see WinNTFileSystem in more than 2-3 threads, it is the time you start looking at minimizing the network latency.


Once you know there is latency, you would want to know how much is the latency when compared to the application existing locally.

Created a very basic network latency test program to validate this.

You can take the jar from here.

And run it from command prompt as follows:

> C:\ColdFusion11\jre\bin\java -jar <Path of NetworkPathsTest.jar> <Network or Local Directory Path >

If the network path (Ex:- \\orgserver\d$) is accessible only to the ColdFusion service user, open command prompt as that user ( runas /user:<cfserviceaccount domainname>\cfserviceusername CMD )


Path Arguments can be one or more. More Path arguments is a good measure to see the difference clearly.

C:\ColdFusion11\jre\bin\java -jar C:\ColdFusion11\NetworkPathTest.jar \\orgserver\d$\deploy\cfm\

C:\ColdFusion11\jre\bin\java -jar C:\ColdFusion11\NetworkPathTest.jar \\orgserver\d$\deploy\cfm\ \\orgserver\d$\deploy\cfm\api\

Try the same paths keeping the content same on the local machine and see the time differences.

For the same paths on local and remote, the difference in time should not be exponential.

These tests are to be performed on your ColdFusion server machine.

Once you have validations and found any latencies, it is the time to call for network optimization expertise.


First, some background.

dbvarname is an attribute for cfprocparam to specify named parameters while calling a stored procedure. For details refer https://wikidocs.adobe.com/wiki/display/coldfusionen/cfprocparam

Versions prior to ColdFusion5 had support for dbvarname. This was deprecated in ColdFusion MX, brought back in 7.0.1 and deprecated again in 7.0.2. The reason was the lack of proper support from multiple jdbc drivers. Since then, this was a major ask among ColdFusion users.

ColdFusion 11 brought this attribute back from the dead. It was disabled by default with a flag to enable it. ColdFusion 11 update 3 enabled it by default. Databases need a variable prefix for named parameters. (eg:- ":" for Oracle and "@" for SQLServer). If the database is SQLServer, it should be dbvarname = "@param1". This will break applications which were using this attribute without the prefix because this attribute was being completely ignored in prior versions. So to give some time for customers who don't want to change their code, in update 4 we introduced a flag to disable dbvarname.

-Dcoldfusion.ignoredbvarname=true jvm flag can be used to disable dbvarname attribute. This flag is only for CF11 and not for later versions.

Having to change lot of code is not pleasant but we believe that is the way forward.

You might want to set up ColdFusion in a distributed environment where ColdFusion is running on one machine and Web server is running on a different machine.

Following are the set of steps that have to be performed to achieve this (less error-prone):

This applies to both ColdFusion 10 and ColdFusion 11.

1) Have ColdFusion server installed in a machine.

2) Next thing is to download and install VC Runtime.

             - The version of VC Runtime that you have to install depends on the version of ColdFusion.

                Say, ColdFusion 11 needs VC Runtime 2012

                 (32-bit VC Runtime for 32-bit Web server and 64-bit VC Runtime for 64-bit Web server.

                  If you are not sure, you can install both)


                and ColdFusion 10 needs VC Runtime 2010


3) Copy the following contents from the machine where ColdFusion is running to the machine where Web server is running at the same location.





4) Open a Command prompt and run wsconfig tool

   C:\ColdFusion11>jre\bin\java -jar cfusion\runtime\lib\wsconfig.jar

    It will open a configuration window where you have to provide AppServer Host as the ColdFusion Server IP.

    Configure the connector.

Distributed environment is ready for use. Send requests to the Web server's URL with cfm files under web server root and same files under ColdFusion's Web root.

Web server would redirect these to ColdFusion, which is on some other machine.



I wish everyone a very happy and prosperous new year. Here comes the first blog post for the year 2015 for ColdFusion Buider 3. One of the user came across Mobile Application Development Contest blog and was further trying to develop an application using ColdFusion Builder 3. He wasn’t able to setup a connection between ColdFusion 11 and ColdFusion Builder 3.  They were trying to create a “Remote Server” connection between ColdFusion Builder 3 and ColdFusion 11, installed on separate servers (distributed setup). 

Here are the steps that will help you setup a remote host with ColdFusion Builder:-

1.     Launch ColdFusion Builder 3 and choose your workspace.

2.     Right-click on the “CF Servers” view and select Add Server

3.    Select “New server configuration” and click “OK”. You can choose “Import configurations from RDS server”, in case you have RDS server setup already and want to use existing server information.

CF Server

4.     If you can’t locate the CF Servers, then, follow the screenshot below, to enable it.

CF Server alternate

Refer to Add a remote server and fill in the details for your server.

5.     General Settings

a)     Server Name: ColdFusion server name.

b)     Description: (optional) Description of the server.

c)     Application Server: Select the drop-down list and select CF+ Tomcat Bundle (for CF10/CF11)

d)     Host Name: Name of the remote server host.

e)     Select: Is Remote.

Note: When you enter a Host Name other than localhost or, Is Remote is automatically selected.

f)     Webserver Port: Specify the port number of the remote ColdFusion server instance you are configuring. You can refer server.xml for the same at \ColdFusion11\cfusion\runtime\conf\.

g)     RDS User Name: (optional) if you are using RDS, specify the RDS user name.

h)      RDS Password: (optional) Specify the RDS password.

General Settings

Click Next to move to the next screen.

6.     Remote Server Settings

a)     User Name: Specify the CF Admin username.

b)     Password: Specify the CF Admin password.

Remote Server Settings

Click Next to move to the next screen.

7.     Install Extensions

Select Install Extensions to install the extensions that are packaged with ColdFusion Builder.

a)     Browse and select the ColdFusion web root location.

b)     Browse and select the ColdFusion web root location on the remote ColdFusion server.

c)     Browse to a location within the web root to install the extensions. The extensions are installed in the Extensions directory within the selected location.

Install Extensions

8.    Click Finish to add the remote ColdFusion server instance. You can right-click on the remote server and access the ColdFusion Administrator of the remote server.

Launch CF Admin

This blog post talks about, the minimal settings required to setup a remote server for CF Builder. You can skip the Install Extensions section as well.

Note: - While configuring the remote server in CF Builder, ensure that, you are able to access/ping the remote ColdFusion server outside builder. You can probably, access the remote CF Admin in the browser, for e.g. http://ip:port/CFIDE/Administrator/index.cfm and ensure connectivity.



In case you haven't already noticed,the public beta for the major version of ColdFusion codenamed Splendor and for the next major version of ColdFusion Builder Thunder is now available.

Here is where you can get access to the public beta for both the products on Adobe Labs - http://labs.adobe.com/technologies/coldfusion/

You can quickly go over what's new in ColdFusion Splendor here. There are also a couple of videos on the video tab that gives you a quick introduction to what's new in ColdFusion. The link for the documentation home page is at - https://wikidocs.adobe.com/wiki/display/coldfusionen/Home

There are lots of new features and enhancements in Splendor and in Thunder. We look forward to hearing your feedback during the public beta.