Upgrading the ColdFusion JVM - on Linux and Windows
Unless you’ve been living on a desert island for the last year, you’ve probably heard that you’ll need to upgrade ColdFusion’s JVM (java virtual machine) before March 11th 2007. Thats when daylight savings time takes effect this year. Since the dates have shifted in 2007, anything that is aware of daylight savings time will require an update. This includes your operating system (Windows, Linux, OSX, etc.), and Java since it has its own internal timezone tables.
And if you use NTP (network time protocol) to set the time on your servers from an internet time server, don’t think you’re immune. NTP simply syncs your internal UTC (universal time) clock with a UTC clock on the internet. Your timezone tables then determine your actual local time, based on your UTC offset, which changes during daylight savings time.
Updating ColdFusion’s JVM is very easy. The version of java that ColdFusion ships with is 1.4.2_09. You can see this if you login to your CF Administrator, then click on SYSTEM INFORMATION at the top of the page.

Also note the Java Home setting, we’ll be changing that soon.
Adobe is recommending moving to version 1.4.2_11 of the java runtime. ColdFusion is certified to run on that version, although I have heard reports of it running just fine on later versions. But if you want to be able to use Adobe support - better stick to the _11 version.
You can download the necessary java runtime from http://java.sun.com/products/archive/index.html. Go down to the J2SDK/J2RE - 1.4 section, and choose the 1.4.2_11 version from the drop down box next to it. On the next page, click the Download J2SDK link. Accept the license agreement, then click on either the Windows or Linux download link.
For Windows, download the installer and run it, following the usual windows installer prompts. By default the new JRE will be installed in C:\j2sdk1.4.2_11
On Linux (RedHat, CentOS, Fedora or similar), download the rpm.bin file, then run the bin file - that is, at command shell, type ./j2sdk-1_4_2_11-linux-i586-rpm.bin in the directory you downloaded the file in. You may need to add execute permissions, if so you can do that with chmod 700 j2sdk-1_4_2_11-linux-i586-rpm.bin. After you page through and agree to the license, you will be left with the actual rpm file in the local directory. Install it like rpm -ivh j2sdk-1_4_2_11-linux-i586-rpm. Your new JRE will be installed in /usr/java/j2sdk1.4.2_11.
Now that the new java is installed, we just need to point ColdFusion to it. It is possible to change the java path in the CF administrator, but I don’t recommend it. First of all if you’ve made any hand edits to the jvm.config file, changing the java path through the administrator will wipe them out. Secondly, if something goes wrong you’ll need to put the old setting back, which you won’t be able to do through the administrator since ColdFusion won’t be running anymore.
So its best to just edit the jvm.config file directly. On Linux this is usually located at /opt/coldfusionmx7/runtime/bin/jvm.config. On Windows, look for C:\CFusionMX7\runtime\bin\jvm.config.
Near the top of the file you’ll see the java.home= line. Comment that out by placing a pound sign in front of it. Add a new line below it pointing java.home to our new JVM. The section of the file should look like this -
On Linux:
#java.home=/opt/coldfusionmx7/runtime/jre
java.home=/usr/java/j2sdk1.4.2_11/jre
On Windows:
#java.home=C:/CFusionMX7/runtime/jre
java.home=C:/j2sdk1.4.2_11/jre
Save the file, then restart ColdFusion. If you have problems getting ColdFusion to start up, go back into the file and remove your new line, and uncomment the old line. ColdFusion should then be able to start.
To verify you are running on the new version, log into the administrator again and look at the system information page.

Note that Java Home now references your new JRE installation. IMPORTANT NOTE - if you’ve imported any certificates into your java keystore, you’ll need to reimport them into your new Java installation. Importing a cert into the keystore usually happens as a result of needing to cfhttp to a self-signed-certificate SSL webserver.
Don’t forget to patch your OS, too. You can tell if your Linux machine has been updated by running zdump -v /etc/localtime | grep 2007. If you see some lines referencing March 11, you are good to go. If not, you can update your timezone tables by running the command yum update tzdata.
For Windows users - if you use Windows Update regularly I imagine you have the necessary update installed. If not, you can download the necessary update from http://support.microsoft.com/gp/cp_dst.
MySQL may or may not need to be updated, it can depend on the version and when it was installed. An easy way to check is to run this query:
SELECT UNIX_TIMESTAMP('2007-03-11 02:00:00'),
UNIX_TIMESTAMP('2007-03-11 03:00:00')
You should get back the same timestamp for both results, even though you are specifying different times - 2:00am and 3:00am. This is because the 1hr time change occurs at 2:00am.
If you get back different values, your MySQL timezone tables may need reloaded. You can do that with this command:
mysql_tzinfo_to_sql /usr/share/zoneinfo|mysql mysql -p
February 24th, 2007 at 9:51 pm
Excellent!!!!!!!!!!!
I can’t believe it’s that easy to update. I’ve been meaning to do this (nothing like waiting till the 11th hour), but I couldn’t find easy to follow instructions on how to do it. Thank you once again.
March 1st, 2007 at 6:55 pm
I am running 1.6.0 with no issues at all.
March 5th, 2007 at 10:48 am
You mentioned:
> Go down to the J2SDK/J2RE - 1.4 section, and choose
> the 1.4.2_11 version from the drop down box next to
> it. On the next page, click the Download J2SDK link.
Would there be any issues with just downloading the JRE version and installing that, or do I need the entire SDK package? Are there resources in the SDK required by ColdFusion MX server?
March 5th, 2007 at 11:27 am
Good question Will. The official Adobe technote says to use the SDK, and I’ve also read elsewhere that the JRE does NOT contain everything needed to run CF. So I would stick with the full SDK.
March 5th, 2007 at 11:30 am
@ Ryan:
Thanks for the response. Between you and several other people I’ve asked, it’s starting to sound like a consensus that the whole SDK should be installed, not just the smaller JRE package.
March 6th, 2007 at 8:43 am
Thank a bunch, I tried this with just the JRE yesterday and my CF bombed. Thanks again.
March 7th, 2007 at 8:23 am
Thanks for this information, it saved me a lot of work!
March 8th, 2007 at 11:40 pm
What about for people using CFMX 6? Same steps?
Thanks
March 9th, 2007 at 8:30 am
Yes, CFMX 6.1 Updater 1 is certified to run on the same Java version as CFMX 7 (Java 1.4.2_11). The steps for installing it will be the same.
As far as editing the jvm.config file, I believe that step should be similar also.
March 11th, 2007 at 3:26 am
Thank you so much. I couldn’t find any easy instructions to do this and this saved me a lot of time and headache.
March 11th, 2007 at 9:41 pm
This was the best info on the subject I’ve found — worked like a charm on all 5 servers I had to address. Adobe should have this posted on their site, front and center (shame, shame, Adobe!)! !
March 11th, 2007 at 10:58 pm
Great stuff, but whats the deal for a CF7 Multiserver Installation on JRun? Is it too late now that we’re going into March 12th?
March 12th, 2007 at 10:24 am
Ryan, thanks for the advice. It should be expanded, however, to note that a chief reason for the CF service not restarting after making the JVM.Config file change is the type of slash you are using in the path. The path uses forward slashses (”/”) as opposed to backslashes (”\”). This is VERY important.
March 12th, 2007 at 5:18 pm
Thanks for the pointing out the way to get the correct JVM file. Couldn’t find it from Adobe or Sun sites directly.
Only thing was for my Windows CF7 Multiserver environment I had to use “java.home=C:/j2sdk1.4.2_11″ if I had the “/jre” CF services wouldn’t restart. That was the only useful piece of info from Adobe’s tech note: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=2d547983
March 13th, 2007 at 7:13 am
From what I had read originally CF5 did not require the Java update. Is this not the case?
We are still having problems where the time on CF has not updated by the OS has.
March 15th, 2007 at 10:43 am
Bump! Worked like a champ. Adobe’s site wasn’t near as simple to follow as your simple instructions. Thanks.
June 13th, 2007 at 9:38 pm
Thanks Alot!!!! This was very easy. Can you make performance tuning this easy?
July 29th, 2007 at 12:13 pm
Thanks for this. Very clear, concise, and cross-platform to boot. Excellently written, anonymous sir.
September 8th, 2007 at 8:47 pm
Very thanks.
It is very clear for us.
It saved me a lot of work!
October 31st, 2007 at 4:02 am
This is GREAT! Your a life saver!
March 11th, 2008 at 1:49 pm
This update worked great for a problem I was having when I got into work today. Java still thought it was DST when it really wasn’t. Thanks!
March 17th, 2008 at 1:14 pm
Sweet pootie pie, it works! Toit loik a toigah!
March 21st, 2008 at 9:55 am
Would like to throw out that we just updated CFMX 7.0.2’s JRE to 1.6.0_05. We had to do this because the version of Linux we are using wouldn’t even let us open up and install JRE 1.42_11. So far everything seems to be running fine. *knocks on wood*
March 24th, 2008 at 3:16 am
I have a big problem on upgrade JVM from 1.4.2 to 1.6.
Initially, we used CF7 and default JVM1.4. It works well.
Then as some reason, we upgraded JVM to 1.6. It works well also. But somehow web service can not work any more. It works when using JVM1.4.
So, my question is: what should I do to let web service work with CF7 and JVM1.6?
Thanks in advance.
March 27th, 2008 at 11:24 am
Thankk you, Thank you, Thank you.
April 1st, 2008 at 5:12 pm
Do you know of any issues using 1.4.2_16 with CFMX 6.1 as I have heard it may fix cfhttp issues with SSL?
April 3rd, 2008 at 9:53 am
Just let you know we have 1.4.2_16 running on a production site for the last couple of days and all seems well. It did indeed fix at least one connection failure issue we were having with cfhttp over SSL.
Thanks for the article.