<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
			<channel>
			<title>Charlie Arehart&apos;s Blog - admin</title>
			<link>http://www.carehart.org/blog/client/index.cfm</link>
			<atom:link href="http://www.carehart.org/blog/client/rss.cfm" rel="self" type="application/rss+xml" />
			<description>Charlie Arehart&apos;s Blog</description>
			<language>en-us</language>
			<lastBuildDate>Fri, 12 Mar 2010 14:18:00 -0400</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>blogmaster@carehart.org (Charlie Arehart)</managingEditor>
			<webMaster>blogmaster@carehart.org (Charlie Arehart)</webMaster>
			
			<item>
				<title>Ultimate list of CF debugging output template alternatives</title>
				<link>http://www.carehart.org/blog/client/index.cfm/2010/3/12/ultimate_cf_debugging_output_template_alternatives</link>
				<description>
				
				Following on the heels of my &quot;&lt;a href=&quot;http://www.carehart.org/blog/client/index.cfm/2010/3/4/resources_on_the_var_scope_problem&quot;&gt;Ultimate Var Scope Resource list&lt;/a&gt;&quot; last week, here now I present what I think is the ultimate list of CF debugging output template alternatives.

&lt;h3&gt;Yes, you CAN modify the debugging output. Some have even done it for you&lt;/h3&gt;
Many may not realize that the CF debugging output (optionally displayed at the bottom of the page, as enabled in the CF Admin) is actually created by a CFML template that can be modified ([cf]\wwwroot\WEB-INF\debug\classic.cfm). 

Fortunately, several people have offered various resources that explain how to work with this file and offer packaged alternatives with specific features to resolve particular problems (where people wish the debugging output did more, or could be seen differently than at the bottom of the page). &lt;img src=&quot;http://www.carehart.org/images/starfish_small.jpg&quot; align=&quot;right&quot;/&gt;

&lt;h3&gt;Just drop and reload&lt;/h3&gt;
You can just drop any of these files into the debug file directory to add to or replace the default file. If it&apos;s a new file you then need to select it as an alternative in the CF Admin Debugging Output page which offers a choice for &quot;Select Debugging Output Format&quot;, which points to the classic.cfm by default. 

Of course, since it&apos;s CFML source code, all the options mentioned here are free and open source.

&lt;h3&gt;The alternatives, discussed and downloadable&lt;/h3&gt;

The alternatives include:

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.coldfusionjedi.com/index.cfm/2008/11/26/Another-Hack-Job--Update-to-classiccfm-debug-template&quot;&gt;&quot;Another hack job&quot;&lt;/a&gt;, from Ray Camden, adding total query time, improved number formatting for individual query times, and highlighting queries that a given duration&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://coldfire.riaforge.org/&quot;&gt;ColdFire&lt;/a&gt;, open source from Nathan Mische et al, a Firefox/Firebug extension to aid in viewing CFML debugging output by way of a new alternative debugging output template, coldfire.cfm&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://debug.riaforge.org/&quot;&gt;ColdFusion Debug Templates&lt;/a&gt;, &quot;in case you want to try something different than the default template&quot;, from Josh Knutson&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.fusion-reactor.com/community/developers/debug2reactor/index.cfm&quot;&gt;Debug2FusionReactor&lt;/a&gt;, from Intergral, for showing CF debugging output in FR Marker tab&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://cfzen.instantspot.com/blog/2007/03/26/Improved-Classic-CF-debugging-template&quot;&gt;Improved Classic CF debugging template&lt;/a&gt;, from Aaron Longnion. Changes list of templates executed to show in order executed, rather than by order of duration. Also adds cfqueryparam variable values for queries shown.&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.coldfusionjedi.com/projects/starfish/&quot;&gt;StarFish&lt;/a&gt;, from Ray Camden, a profiling tool built on the CF debugger. Stores debugging output in server scope, and adds an Admin customization interface to view reports based on gathered information.&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://stiletto.riaforge.org/&quot;&gt;Stiletto&lt;/a&gt;, from John Mason, for logging CF debugging output to a file (inspired by a &lt;a href=&quot;http://boncode.blogspot.com/2008/09/cf-silent-server-side-debugging.html&quot;&gt;blog entry&lt;/a&gt; by Bilal Soylu&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.coldfusionjedi.com/index.cfm/2006/7/3/Debug-template-information-in-the-order-of-process&quot;&gt;Zoid&lt;/a&gt;, from Ray Camden. Changes the table of templates executed from a summary for each (even if called multiple times) to in individual display of each, in order.&lt;/li&gt;
	&lt;li&gt;Note as well that another alternative to showing debugging output at the bottom of the page is a built-in option in CF. Note the available &quot;dockable&quot; option in the choice for &quot;Select Debugging Output Format&quot;. While the aforementioned classic.cfm is the default, the dockable.cfm instead shows the debugging output as dockable/movable/floatable pane instead.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Also listed on my CF411 site&lt;/h3&gt;
Note as well that I have just created a section in my CF411 site, called &quot;&lt;a href=&quot;http://www.cf411.com/#debugoutput&quot;&gt;CFML Debugging Output Template Alternatives/Mods&lt;/a&gt;&quot;. If anyone offers me additions or corrections as a comment below, I&apos;ll be sure to update the list in the CF411 page as well.

Finally, as I mention at the bottom of the list on that page, note that I have yet another section (following that one) on the site, called &lt;a href=&quot;http://www.cf411.com/#debug&quot;&gt;CFML Debugging Tools&lt;/a&gt;, which lists still other kinds of CFML debugging tools. 
				</description>
				
				<category>cf411</category>
				
				<category>admin</category>
				
				<category>debugging</category>
				
				<category>resource lists</category>
				
				<pubDate>Fri, 12 Mar 2010 14:18:00 -0400</pubDate>
				<guid>http://www.carehart.org/blog/client/index.cfm/2010/3/12/ultimate_cf_debugging_output_template_alternatives</guid>
				
			</item>
			
			<item>
				<title>You may have mistakenly applied an 8.0 CHF on a 8.0.1 CF server, and not realize it!</title>
				<link>http://www.carehart.org/blog/client/index.cfm/2009/9/23/are_you_sure_you_applied_801_hotfix</link>
				<description>
				
				I just helped a customer today solve a problem where he swore he had applied the latest Cumulative Hotfix (CHF) for CF 8.0.1, but I showed him that instead he had &lt;b&gt;mistakenly applied the CHF for 8.0&lt;/b&gt;. I know how it happened, and showed him. I hope how you can avoid the same mistake.

&lt;blockquote&gt;
Update: David Collie of Adobe has informed us (via comments below) that he has now fixed the two pages with the problems reported here. We thank him so much! Even so, since some may have suffered the problem of getting the wrong hitfixes while the problem was in place, I&apos;ll leave this entry as is to help them.
&lt;/blockquote&gt;

&lt;h4&gt;The problem: you may have applied CHFs for 8.0 by mistake&lt;/h4&gt;

When checking to confirm if an 8.0.1 server has applied the CF 8.0.1 cumulative hotfixes, make sure that the file in the [cf_root]/lib/updates directory has a jar file name with &quot;801&quot; in its name, like chf8010003.jar. The problem is that it could easily, mistakenly be an 8.0 CHF instead, such as chf8000003.jar (note the &quot;800&quot; reference).

How could that happen? More in a moment. But the problem is that CF wouldn&apos;t complain about this (while applying the fix in the CF Admin or if you just dropped it into the lib/updates and restarted CF.) It would just be ignored, and the CHF would not do anything--and you would NOT get the updates you expected in the 8.0.1 CHF.

&lt;h4&gt;The root cause of the mistake&lt;/h4&gt;

So how does this happen? I know at least one source of the confusion. I&apos;ve complained over and over about this: there&apos;s an &lt;a href=&quot;http://www.adobe.com/support/coldfusion/downloads_updates.html&quot;&gt;updates&lt;/a&gt; page at the Adobe site which starts out offering a link to the 8.0.1 update (itself). There are no CHFs for it. Rather, the problem is that right after its shown, the page lists the 8.0.0 CHFs! See the screenshot below.

&lt;img src=&quot;http://www.carehart.org/images/chf_confusion.jpg&quot;&gt;

The problem is simply that &lt;b&gt;no one has gone back and updates this page to put the links to the 8.0.1 CHFs&lt;/b&gt;. They&apos;re just not there.

So many people may easily miss that those are in fact the CHFs for 8.0, not 8.0.1. Worse, since there 3 of them (just as some may know there are 3 for 8.0.1, currently), it&apos;s even easier for someone to make this mistake and think they&apos;re getting the 8.0.1 CHFs. 

Again, since applying them gives no error, I would bet that many are in this situation and don&apos;t even realize it (and are not getting the benefits of the hotfixes.) So follow those instructions above and check to ensure that you really do have a jar with 801 in the name (in either [ColdFusion8]\lib\updates in Server mode, or in [JRun4]\servers\[instancename]\cfusion-ear\cfusion-war\WEB-INF\cfusion\lib\updates in Multiserver mode.)

&lt;h4&gt;Is the customer to blame for being careless?&lt;/h4&gt;

Some may sneer that those who make this mistake &quot;get what they deserve&quot;, and that it&apos;s about &quot;thinning the herd&quot;, if people are &quot;so careless&quot;. Sorry, I don&apos;t agree. 

This is a very easy mistake to make, especially for folks who by and large don&apos;t spend their days doing this sort of stuff, who might easily assume that what followed the 8.0.1 update on that page was its hotfixes.

And since this &quot;updates&quot; page I pointed to is what&apos;s offered on the right of the &lt;a href=&quot;http://www.adobe.com/products/coldfusion/&quot;&gt;CF product page&lt;/a&gt;, it&apos;s just all the more easy to be found--and unfortunate that this problem has been allowed to linger.

&lt;h4&gt;So where does one find the 8.0.1 CHFs? and CFH 3?&lt;/h4&gt;

I wish I could point you to one page that lists links all the the 8.0.1 CHFs, but sadly, that&apos;s still another point  of annoyance. Some will know that there is this page, &lt;a href=&quot;http://kb2.adobe.com/cps/402/kb402604.html#CF801&quot;&gt;ColdFusion Hot Fixes (ColdFusion 8 and later)&lt;/a&gt;. 

But guess what, even IT does not have the CHF 3 listed! :-(

Please, Adobe, fix these things.

You can find CHF 3 for CF 8.01 &lt;a href=&quot;http://kb2.adobe.com/cps/511/cpsid_51180.html&quot;&gt;here&lt;/a&gt;.

Anyway, do bookmark that updates page. We can only hope that in the future it will be the place to keep an eye on the latest CHFs for each release of CF going forward. 
				</description>
				
				<category>cf8</category>
				
				<category>admin</category>
				
				<category>cf911</category>
				
				<pubDate>Wed, 23 Sep 2009 21:06:00 -0400</pubDate>
				<guid>http://www.carehart.org/blog/client/index.cfm/2009/9/23/are_you_sure_you_applied_801_hotfix</guid>
				
			</item>
			
			<item>
				<title>I&apos;m speaking on the CFMeetup this week: &quot;Getting Started with Multiple Instances in CF&quot;</title>
				<link>http://www.carehart.org/blog/client/index.cfm/2009/7/22/Getting_started_with_multiple_instances_in_CF</link>
				<description>
				
				If you didn&apos;t notice in my regular announcement of who&apos;s on the &lt;a href=&quot;http://www.coldfusionmeetup.com&quot;&gt;Online ColdFusion Meetup&lt;/a&gt; this week, I am in fact presenting in the noon (EDT) slot, this Thursday, on &quot;Getting Started with Multiple Instances in CF&quot;. 

You may think, &quot;what&apos;s new about that?&quot; Well, nothing. I&apos;ve just had people ask for more beginner/intermediate and more admin-related talks. This seemed to fit the bill for both. Here&apos;s the (detailed) description (to make sure the right audience shows up).

&lt;blockquote&gt;
&lt;h4&gt;Introducing the Adobe ColdFusion Extensions for Eclipse&lt;/h4&gt;
Have you wondered about using or trying out the &quot;multiple instance&quot; feature of CF (technically the &quot;multiserver&quot; installation option). Available in its current form since CF 7, many developers and shops still have not adopted it, perhaps because they don&apos;t understand its benefits, or maybe they tried it and got confused about the options during installation/configuration. Or maybe they assume it&apos;s only about creating clusters/load balancing and/or replication: it&apos;s not and can be valuable for many other reasons.

In this talk, veteran CF troubleshooter Charlie Arehart will introduce the topic, presuming you have no prior experience with it. (Note that while it&apos;s a feature of CF Enterprise, you can also use it with the free Developer edition, and he&apos;ll explain why you may want to.)

&lt;b&gt;What we will (and will not) cover:&lt;/b&gt;

We&apos;ll address things from the ground up, starting with what the feature is, how it&apos;s evolved, and why you should use it in development and/or production. Charlie will demonstrate an installation from scratch, talking about the various choices presented, and proceeding to add another instance and how to demonstrate successful setup. He&apos;ll also show connecting the new instance(s) to an external web server and share tips about that.

Along the way Charlie will address such other practical concerns as how to share admin settings among the instances, whether and how to share jvm.config settings, how to find the various logs for each instance, why to be careful about scheduled tasks, how you can monitor the instances, and more. He&apos;ll also offer some recommendations that could vary depending on your setup, such why you might want to use the cfusion instance only for creating instances, when/why you may be able to stop and disable the cfusion and admin instances, why you may/may not want to consider sandbox security, and more.

We will not have time to discuss or demonstrate clustering, load balancing, and replication, but can mention it only briefly. If that may be what you&apos;d want to hear more about, please know this is not the talk for that. Perhaps a later talk.

But you will be pointed to many resources available for you to further investigate more on all the things we discuss (with a warning to be careful about older resources which describe an older but still-supported approach to multiple instances, from the CF 6.1 timeframe.) 
&lt;/blockquote&gt;

So were you surprised that the &quot;simple&quot; subject actually has a lot more nuance than meets the eye? You can RSVP for the event, as well as get a link to create an entry in your calendar and more, at the &lt;a href=&quot;http://www.meetup.com/coldfusionmeetup/calendar/10900266/&quot;&gt;Meetup event page&lt;/a&gt;. 

Note that you can also certainly just show up on the day at &lt;a href=&quot;http://experts.acrobat.com/cfmeetup&quot;&gt;the Connect room&lt;/a&gt;.

Finally, again, there will be a 6pm (EDT) talk as well, Mike Henke on &quot;Leveraging Eclipse for ColdFusion Development&quot;. For more on these, and all CF Meetups, see my &lt;a href=&quot;http://www.carehart.org/blog/client/index.cfm/coldfusion-meetup-events&quot;&gt;blog category of CFMeetup  announcements&lt;/a&gt; about them.

Hope to see some of you Thursday at noon.

PS Speaking of CFML development via Eclipse, I&apos;ll have yet another announcement about something that may interest many, separately. 
				</description>
				
				<category>admin</category>
				
				<category>coldfusion meetup events</category>
				
				<category>basics</category>
				
				<category>speaking</category>
				
				<pubDate>Wed, 22 Jul 2009 19:44:00 -0400</pubDate>
				<guid>http://www.carehart.org/blog/client/index.cfm/2009/7/22/Getting_started_with_multiple_instances_in_CF</guid>
				
			</item>
			
			<item>
				<title>Adobe announcement: ColdFusion 6, 7, and the end of life of Java 1.4</title>
				<link>http://www.carehart.org/blog/client/index.cfm/2008/9/17/cf6_7_and_endoflife_of_Java14</link>
				<description>
				
				Some folks may have missed that Adobe released a technote yesterday that may interest some folks. The good news is that there&apos;s no bad news--but you should be aware of the news so that when rumors start running rampant, you&apos;ll have information from the source.

&lt;h4&gt;Old News, coming to fruition next month: Sun EOL of J2SE 1.4. Adobe&apos;s response&lt;/h4&gt;

Sun has previously announced (in 2006) that J2SE 1.4 (the JVM that happens to underlie CF 6 and 7) would &lt;a href=&quot;http://java.sun.com/j2se/1.4.2/&quot;&gt;reach end of life in October 2008&lt;/a&gt;. 

Well that&apos;s next month, and Adobe has offered &lt;a href=&quot;http://kb.adobe.com/selfservice/viewContent.do?externalId=kb406094&amp;sliceId=1&quot;&gt;a technote&lt;/a&gt; to explain how this affects CFers on 6 and 7 (they don&apos;t mention 6, as it&apos;s no longer formally supported).

&lt;ul&gt;
&lt;li&gt;Adobe will continue to provide support for configurations requiring this version of the J2SE on a best-effort basis
&lt;li&gt;Folks can of course upgrade to CF8, which runs on Java 1.6 (and supports 1.5)
&lt;li&gt;FWIW,folks running JRun can also upgrade to later versions of it that support later versions of the J2SE
&lt;/ul&gt;

All that&apos;s good news, really, so nothing to get excited about.

&lt;h4&gt;Java SE for Business&lt;/h4&gt;

Sun themselves have also addressed the problem by releasing something called &lt;a href=&quot;http://www.sun.com/software/javaseforbusiness/index.jsp&quot;&gt;Java SE for Business&lt;/a&gt;, which extends the life considerably (up to 15 years), which an organization can license. Adobe has said in the technote that they will be supporting that as well.

&lt;h4&gt;So the sky is not falling&lt;/h4&gt;

All this means that if you hear anyone start some rumor that the EOL of Java 1.4 spells some doom for CF 6 or 7, nip it in the bug. Point them at this technote.

As further testament to why this is not a significant issue, Adobe also makes note there that &quot;Servers running ColdFusion MX 6.x with J2SE 1.3.1 or JRun 4 with J2SE 1.3.1 have historically run without problems long after Sun Microsystems had End of Lifed that J2SE version.&quot;

&lt;h4&gt;More questions&lt;/h4&gt;
I imagine some reading this will have questions. I&apos;ll say right now that I know nothing more than what I read in the technote. I have no inside information. I just thought we ought to call out the technote so folks knew of it.

But ask your questions, and perhaps another reader (or later, I) will have an answer.

PS I&apos;ll grant too that maybe this isn&apos;t new information (the Adobe response, and this technote). I only caught it today because I get the feed (as I &lt;a href=&quot;http://carehart.org/blog/client/index.cfm/2008/7/16/cf_technote_hotfix_security_article_feeds&quot;&gt;discussed previously&lt;/a&gt;) of new/updated technotes. The technote says it was updated yesterday. They don&apos;t say when they&apos;re created, so it&apos;s possible the technote came out in the past. I just don&apos;t recall seeing it. (I wish they would put dates on them for this reason.) 
				</description>
				
				<category>general</category>
				
				<category>admin</category>
				
				<pubDate>Wed, 17 Sep 2008 00:05:00 -0400</pubDate>
				<guid>http://www.carehart.org/blog/client/index.cfm/2008/9/17/cf6_7_and_endoflife_of_Java14</guid>
				
			</item>
			
			<item>
				<title>Understanding the various XML files in CF and JRun</title>
				<link>http://www.carehart.org/blog/client/index.cfm/2008/7/16/Understanding-the-various-XML-files-in-CF-and-JRun</link>
				<description>
				
				Ever wondered about the various XML files you may find in CF, such as all the neo-&lt;i&gt;xxx&lt;/i&gt;.xml files? Or the JRun-based ones such as jrun-xml, web.xml, jrun-web.xml, default-web.xml, application.xml, and so on? 

While tooling through the ColdFusion technotes, I came across this interesting one: &lt;a href=&quot;http://kb.adobe.com/selfservice/viewContent.do?externalId=94a16ba6&quot;&gt;Purpose and location of XML configuration files used in ColdFusion MX&lt;/a&gt;. While it&apos;s not especially new, it shows having been updated in 2008, and the info offered seems to apply to CF8 just as readily as CF 6 and 7.

It also happens to point to a document with brief descriptions of the &lt;a href=&quot;http://livedocs.adobe.com/jrun/4/Programmers_Guide/servletxml3.htm&quot;&gt;JRun XML files&lt;/a&gt; as well. 
				</description>
				
				<category>admin</category>
				
				<pubDate>Wed, 16 Jul 2008 22:21:00 -0400</pubDate>
				<guid>http://www.carehart.org/blog/client/index.cfm/2008/7/16/Understanding-the-various-XML-files-in-CF-and-JRun</guid>
				
			</item>
			
			<item>
				<title>Speaking at CFUnited Express Chicago, and I&apos;ll see you at Max</title>
				<link>http://www.carehart.org/blog/client/index.cfm/2007/9/7/speaking_at_cfunited_express_chicago</link>
				<description>
				
				&lt;A href=&quot;http://express.cfunited.com/go/chicago/2007/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/images/chicago_speaker.gif&quot; align=&quot;right&quot;&gt;&lt;/A&gt;For those going to Max, or who will be in the Chicago area but not going to Max, note that there&apos;s the &lt;a href=&quot;http://express.cfunited.com/go/chicago/2007/&quot;&gt;CFUnited Express&lt;/a&gt; event going on also in Chicago the day before Max, Sunday Sept 30th. It&apos;s a day-long conference (9-5) with several speakers, including myself, Ray Camden, Shlomy Gantz, and others. These Express events are much more intimate than CFUnited (or certainly Max), so it&apos;s a great way to meet other CF developers. 

I&apos;ll be presenting two talks, both of which I&apos;ve presented before (so well-practiced): 
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://express.cfunited.com/go/chicago/2007/topics#topic-1435&quot;&gt;Hidden Gems in CF 8&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;http://express.cfunited.com/go/chicago/2007/topics#topic-1442&quot;&gt;Introduction to the CF Administrator&lt;/a&gt;
&lt;/ul&gt;

After that, of course, we&apos;ll enjoy the rest of the week at Max, and I&apos;ll hope to see you there! :-) 
				</description>
				
				<category>cf8</category>
				
				<category>admin</category>
				
				<category>speaking</category>
				
				<category>cfunited</category>
				
				<pubDate>Fri, 07 Sep 2007 00:39:00 -0400</pubDate>
				<guid>http://www.carehart.org/blog/client/index.cfm/2007/9/7/speaking_at_cfunited_express_chicago</guid>
				
			</item>
			
			<item>
				<title>How would you run code against multiple CF versions at once using IIS on XP?</title>
				<link>http://www.carehart.org/blog/client/index.cfm/2007/8/21/multiple_cf_versions_on_IIS_XP</link>
				<description>
				
				If you use IIS on XP, have you ever wished you could put your code in one directory and run it against different versions of CF, easily. In this note, I show you how.

Someone asserted on a list that some code failed as of CF8, but I tested it against 8, 7, 6, and 5, and it worked the same in all. Hearing that, someone else asked, &quot;Charlie, are you running all those on the same machine or on vmware?&quot;

I assume that the reader, like many, is using IIS on XP, which doesn&apos;t let you have more than one web site, which might seem to make it impossible, though some may know the tricks I&apos;ll mention.

Of course, folks running on Apache, or IIS on Win2k3 or Win2k Server, would just say, &quot;create different web sites, and install each CF version into a different web site&quot;.

Fair enough, but how do you solve this using IIS on XP (or Wink2 workstation), if you can&apos;t have multiple sites? That&apos;s what I explain below.

Before I go on, though, let me make an important for those who may not be aware: you certainly can run multiple versions of CF on a single machine. They each get installed in their own directories, with their own JVM (as of CF6). The challenge is just to avoid port conflicts and external web server conflicts.

&lt;h4&gt;But why not just use the built-in web server?&lt;/h4&gt;

Sure, if you use the built-in web server available in CFMX since 6, then you can indeed run multiple CF versions each with their own web docroot without conflict. 

But that&apos;s not the point here. That would cause each CF instance to have its own wwwroot, and you&apos;d have to put your code there to run it on that version.

And I have even explained in a &lt;a href=&quot;http://carehart.org/blog/client/index.cfm/2007/8/3/testing_code_in_multiple_releases&quot;&gt;recent blog entry&lt;/a&gt; that you can get around that using virtual mappings in the JRun web server,  pointing to the shared document directory. But sometimes you really want to use IIS for some reason, or you just don&apos;t want to have to remember to use the right port and virtual directory name configured for the built-in web server.

&lt;h4&gt;But you can have multiple web sites in XP, if you know how...&lt;/h4&gt;

Yep, some will want to note that you can indeed create multiple web sites in XP, if you use the right tools. I&apos;ve &lt;a href=&quot;http://bluedragon.blog-city.com/multisitesoniis.htm&quot;&gt;written about such tools before&lt;/a&gt;. It&apos;s just that you can&apos;t run them at once, so you have to enable/disable each time you want to run the test. To me, that more of a hassle than just doing the one-time configuration which I discuss below. 

&lt;h4&gt;So how do you configure things using IIS on XP?&lt;/h4&gt;

OK, I hope I&apos;ve headed off complaints some may have. Oh, well, I should add one more: what I&apos;m about to show you is definitely &lt;u&gt;not&lt;/u&gt; supported by Adobe. Some might even argue against doing it. Certainly, if you have problems with things while trying to work this way, they&apos;re going to tell you to use a vanilla setup.

Still, it&apos;s worked for me for years. In fact, I first wrote about it in &lt;a href=&quot;http://cfdj.sys-con.com/read/42069.htm&quot;&gt;a CFDJ article&lt;/a&gt; back in Sep 03 (co-authored with Jeff Houser). That was written in the timeframe of people moving from CF5 to CFMX and wanting to set things up this way, but the concept still applies even for those moving from 7 to 8, or 6 to 7. It also mentioned using the same approach for running against BD as well, which means it would apply also to Railo and Smith, etc.

Finally, since writing that article, I&apos;ve also realized a few things I could have added to the article, which further motivates me writing this entry. 

&lt;h4&gt;How I set things up&lt;/h4&gt;

&lt;img src=&quot;http://www.carehart.org/images/iis_cf_vds.jpg&quot; align=&quot;right&quot;&gt;So, as explained in the article (which shows you the actual steps in IIS), I configure different IIS virtual directories called _cf5, _cf6, _cf7, and _cf8. I set each to points their CFM extension (and related CF ones) to the appropriate web server extension that would be used if I&apos;d configured each server to work with IIS (like C:\CFusion\BIN\ISCF.DLL for 5, C:\CFusionMX\runtime\lib\wsconfig\1\jrun.dll for 6, and so on).

More important, I have them all point at the same, single document root (in my case, c:\inetpub\wwwroot). That allows me to then run code in that single directory against different editions, using a url like http://localhost/_cf5/somefile.cfm, or http://localhost/_cf7/somefile.cfm, or the default http://localhost/somefile.cfm goes against CF8.

Note that you must run the web server connector for each CF edition from CFMX and above, since it only builds those jrun.dlls (I mentioned above) if you do that. See the CF docs (&quot;Installing and Configuring ColdFusion&quot; to learn how to run that, even after CF is installed, if you installed it using the built-in web server instead.

Before you do, though, as explained in the article, be sure to save off the path to the DLL for .cfm file extensions, as running the configuration tool will wipe over the previous path.

&lt;h4&gt;Some concerns using the CF Admin in this setup&lt;/h4&gt;

There&apos;s something else to take note of about using the CF Admin (/cfide/administrator/index.cfm) when you set things up this way.

It has to do with whether, when you install each version, you tell CF to install using the built-in web server or using IIS.

In the former case, CF will put that version&apos;s CFIDE directory (and all its related files) into the wwwroot for that built-in CF server, such as c:\coldfusion8\wwwroot\ for CF8, or c:\cfusionmx7\wwwroot\ for CF7.

In the latter case (if you tell CF during installation to use IIS), then CF will place those files into the IIS docroot you name. Assuming you would always choose that c:\inetpub\wwwroot directory, that means that its CFIDE directory will be replaced with whatever is the last CF version you install.

And that means that even if using the virtual directories above, they&apos;ll all point to the last CFIDE version, which won&apos;t work (the CF Admin can only run in the version for which it&apos;s created).

Either way, you can solve this by creating yet another virtual directory, for CFIDE, inside the version-specific virtual directories above.

So if during the installation of 6, 7, or 8 you told CF to use the built-in web server, you&apos;d point the new CFIDE virtual directory to the builtin web server&apos;s CFIDE. For my _CF6, for instance, I&apos;d create a CFIDE virtual directory within that to point at c:\cfusionmx\wwwroot\CFIDE.

If instead you choose to install each version using IIS, then just as you needed to save off the file extension&apos;s path to the web server DLL, you would similarly need to remember before each install to save off a copy the CFIDE directory for the previous release. This is especially key for CF5, since there is no concept of a built-in web server for that. 

Back when I installed CFMX 6, before doing so, I copied the CFIDE directory to call it CFIDE5 instead. (Sure, you could do a rename, but only JUST before you installed, in case you need it.) Then I created the CFIDE VD within the _CF5 VD to point to that.

It may be worth noting here that if you do install CF 6/7/8 using the built-in web server initially, and then use the web server configurator tool to then connect them to IIS, that does not move the CFIDE from the built-in web server root to the IIS docroot. So again you will need to point your CFIDE virtual directory to that CFIDE in the built-in web server. 

&lt;h4&gt;Why not just use the built-in web server for the CF Admin?&lt;/h4&gt;
Of course, you could just use the built-in web server to access the Admin instead, even if you are otherwise running code via IIS. 

And going back to the original writer, you could indeed also do this using VMWARE. (I&apos;ve written about how versions of it and Virtual PC are &lt;a href=&quot;http://carehart.org/blog/client/index.cfm/2006/7/15/virtualpc_free&quot;&gt;now free&lt;/a&gt;.) It might be overkill, though. Again, you don&apos;t need to worry about running multiple versions of CF on a single server. It&apos;s all just about avoiding port conflicts and potential external web server conflicts.

That&apos;s what this has been about all about: how to run all your code via IIS against multiple version of CF, all from a single directory.

&lt;h4&gt;Conclusion&lt;/h4&gt;
Did this help you? Let me know. Did I forget something? Got a complaint? (People seem to love that opportunity. Go for it.) I hope it has helped some of you. It&apos;s certainly helped me, and others who I&apos;ve shown it to. 
				</description>
				
				<category>cf8</category>
				
				<category>admin</category>
				
				<category>tips</category>
				
				<pubDate>Tue, 21 Aug 2007 22:27:00 -0400</pubDate>
				<guid>http://www.carehart.org/blog/client/index.cfm/2007/8/21/multiple_cf_versions_on_IIS_XP</guid>
				
			</item>
			
			<item>
				<title>Testing code in CF8 and earlier releases--in the same code directory</title>
				<link>http://www.carehart.org/blog/client/index.cfm/2007/8/3/testing_code_in_multiple_releases</link>
				<description>
				
				As folks contemplate moving to CF8 from 6 or 7, they may know that they can run these releases alongside each other--as long as you use a separate web server (or web site in servers that support it) configured to hand CFML requests to each CF server. Since CF6, CF has included a built-in web server to help with this very issue, especially on servers (like IIS on XP) where you can&apos;t have more than one site.

But what if you want to test some code in a single directory against one or more editions? Is that possible? I mean, let&apos;s say you have CF7 setup against IIS, and your code is in the c:\inetpub\wwwroot? And you&apos;ve installed CF 8 for testing using its built-in web server, which runs on port 8500 (or whatever you chose) and finds its code in, for instance, c:\coldfusion8\wwwroot. 

How would you have CF8 look at the code you&apos;ve long had running in the IIS root? (or Apache, or a virtual directory you&apos;ve setup for use by either external web server). Do you have to move the code around among these directories to test it on different versions of CF? No, you don&apos;t.

The trick is in the jrun-web.xml, which you can find in cfusionmx_home]\wwwroot\WEB-INF\jrun-web.xml . You can add a new &quot;virtual-mapping&quot; entry there, naming a new &quot;alias&quot; which points to files outside the normal CF-based wwwroot:

&lt;code&gt;
&lt;virtual-mapping&gt; 
&lt;resource-path&gt;/inet/*&lt;/resource-path&gt; 
&lt;system-path&gt;C:/inetpub/wwwroot/&lt;/system-path&gt; 
&lt;/virtual-mapping&gt; 
&lt;/code&gt;

So now a request for http://localhost:8500/inet/ will look instead in the inetpub/wwwroot, or wherever you point it.

Update: Note that when you use the resource-path, &lt;u&gt;it&apos;s case-sensitive&lt;/u&gt;, even on Windows, so http://localhost:8500/INET/ would not be the same.

Of course, this works also if you set up CF8 to run via your built-in web server, but setup CF 7 or 6 to run on its own built-in web server. And of course, if you&apos;re savvy enough you may figure out how to run things so that you can run all 3 using an external web server. 

There are a couple of potential challenges with this technique. For one thing, if your code has hard-coded references (such as hyperlinks, images, CFLOCATIONS, etc.) to either run on a particular host (without the port) or at a particular root-relative path, then this introduction of a new port or the /inet/ alias may hamper it working. That&apos;s not a &quot;CF&quot; problem but rather a coding one. Your stuck then.

But it certainly works well for testing individual files. I do it all the time and have for years. Indeed, I&apos;ll share, for the sake of posterity, that this modifying of the jrun-web.xml is something I &lt;a href=&quot;http://cfmxplus.blogspot.com/2002/08/running-cfmx-code-outside-default.html&quot;&gt;first wrote about&lt;/a&gt; back in 2002, but many may have missed when such info was being shared. 

I&apos;m going to go back and reprise a lot of those &quot;oldies but goodies&quot;, spread across a few different blogs I&apos;ve had over the past several years. I think I&apos;ll call them &quot;carehart classics&quot;. 
				</description>
				
				<category>carehart classics</category>
				
				<category>cf8</category>
				
				<category>admin</category>
				
				<pubDate>Fri, 03 Aug 2007 11:46:00 -0400</pubDate>
				<guid>http://www.carehart.org/blog/client/index.cfm/2007/8/3/testing_code_in_multiple_releases</guid>
				
			</item>
			
			<item>
				<title>Resources for getting into the Multiserver (multiple instance) implementation of CF</title>
				<link>http://www.carehart.org/blog/client/index.cfm/2007/7/5/getting_into_multi_instance_implmentation_of_CF</link>
				<description>
				
				You may have heard of the new Multiserver deployment option that was introduced in CFMX 6.1, also known as &quot;multiple instances&quot;. It can bring tremendous performance and reliability improvements, allowing you to segregate apps on a single server either by function, or reliability, and so on. It can also help you manage memory more effectively.

Since many people may only be considering the feature now (either only now moving to 6.1 or 7, or 8), I want to share some resources if you&apos;re new to it. (The question came up on a list, and I offered the info there, so thought I&apos;d pass it along here.)

First, there are a couple of articles from that time 6.1 frame:

&lt;a href=&quot;http://www.adobe.com/devnet/coldfusion/articles/multiple_61.html&quot;&gt;&quot;Introducing Multiple Server Instances in ColdFusion MX 6.1&quot;&lt;/a&gt;, by Tim Buntel

&lt;strike&gt;
&lt;a href=&quot;http://www.adobe.com/products/coldfusionmx61/productinfo/features/multiple_instances/&quot;&gt;&quot;Using Multiple Instances with ColdFusion MX Enterprise 6.1&quot; video&lt;/a&gt;&lt;/strike&gt; (sadly, seems no longer available)

Now, CF7 did introduce the new Instance Manager within the Admin, and that (and instances in general) is covered in the CF manual: 

Configuring and Administering ColdFusion MX (Chapter 7, &quot;Using Multiple Server Instances&quot;)

Finally, there is also a new Adobe article as of CF7:

&lt;a href=&quot;http://www.adobe.com/products/coldfusion/whitepapers/pdf/cfmx7_mulitpleinstances.pdf&quot;&gt;Multiple Server Instances using ColdFusion MX 7
Enterprise Edition&lt;/a&gt;

(&lt;strong&gt;Update:&lt;/strong&gt; There&apos;s also now a CF8 version of that: &lt;a href=&quot;http://www.adobe.com/products/coldfusion/pdfs/cf8_multiple_instances_wp.pdf&quot;&gt;Multiple server instances using Adobe&#xae; ColdFusion&#xae; 8
Enterprise Edition&lt;/a&gt;. The technical content seems identical, but it appears to have had considerable editorial updating.)

There are certainly other articles folks have done in the CFDJ or at &lt;a href=&quot;http://www.communitymx.com&quot;&gt;CommunityMX.com&lt;/a&gt;, but these should get you started.

Even though it&apos;s old news to some, it does seem that like many things, use of instances is something that may have been missed by folks. I&apos;ve been contemplating a new user group presentation on the topic. Nothing new for CF8, but it seems people are considering things now that they may have ignored when 6, 6.1, or 7 came out (which is why I did my daylong class at CFUnited on what was new in 6 and 7 that folks may have missed).

One last point, if those don&apos;t make it: if you&apos;re running on Windows, don&apos;t try to create an instance with a JVM heap greater than about 1.3 GB. Though Windows should allow 2GB per app, this is just a number many found that beyond which CF won&apos;t start. Hope that all helps. 
				</description>
				
				<category>performance</category>
				
				<category>admin</category>
				
				<category>cfmx</category>
				
				<category>tips</category>
				
				<pubDate>Thu, 05 Jul 2007 20:38:00 -0400</pubDate>
				<guid>http://www.carehart.org/blog/client/index.cfm/2007/7/5/getting_into_multi_instance_implmentation_of_CF</guid>
				
			</item>
			
			<item>
				<title>CF8 Admin Changes: A compendium of new/changed features since 7.02</title>
				<link>http://www.carehart.org/blog/client/index.cfm/2007/7/3/cf8_admin_changes</link>
				<description>
				
				&lt;img src=&quot;/images/Banner_CFAdministrator.gif&quot;&gt;

Are you aware of all the changes that have been made in the CF Admin as of CF8? You may have seen mentions of little changes in CF8 (indeed, I&apos;ve done a full hour user group talk on &lt;a href=&quot;http://www.carehart.org/presentations/#scorpiogems&quot;&gt;hidden gems&lt;/a&gt;), and while I mention some changes in the CF8 Admin (as I or others have noticed them), I&apos;ve not seen any definitive list (from Adobe or the community) of all the changes (small and large) that might have occurred in the CF Admin interface. I figured I&apos;d take up that challenge. 

I&apos;ve gone through and compared the CF Admin between 7.02 admin 8, and found changes that reflect:

&lt;ul&gt;
&lt;li&gt;new major features you&apos;ve probably heard about (whether to enable &quot;per app settings&quot;; limits on the number of cfthread threads; options to enable/control the new interactive step debugger; support of the new Server monitor; support of per-user access to the Admin and RDS)
&lt;li&gt;new minor features you may have missed (options to &quot;disable CFC type check&quot; and &quot;disable access to internal CF java components&quot;; options to limit the number of simultaneous requests from Flash Remoting and web services clients and CFC methods called from a URL; options to set request queue timeouts and set jrun request limits; new options to control mail server authentication; new db drivers; new option to log activity on enterprise databases; new option to perform a validation query when a connection from the pool is first used/reused; new ajax debugger window; ability to pause a scheduled task; 3 new flex-based gateways; minor additions in CAR file creation)
&lt;li&gt;realignment of related settings (request tuning settings)
&lt;li&gt;renaming of various pages and settings
&lt;/ul&gt;

Here are all the changes I could find, discussed per page:

&lt;h2&gt;A. Server Settings Section&lt;/h2&gt;
&lt;blockquote&gt;
&lt;h4&gt;Settings Page&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&quot;Maximum number of simultaneous requests&quot;, &quot;Maximum number of report threads&quot;, moved to new &lt;a href=&quot;#rtuning&quot;&gt;Request Tuning Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&quot;Maximum size of post data&quot; moved to bottom of this same page&lt;/li&gt;
&lt;li&gt;&lt;u&gt;New&lt;/u&gt; &quot;Enable Per App Settings&quot;, &lt;b&gt;&quot;Disable CFC Type Check&quot;, &quot;Disable access to internal ColdFusion Java components&quot;&lt;/b&gt;, and &quot;Watch configuration files for changes&quot; (latter for WebSphere ND)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;u&gt;New&lt;/u&gt; &lt;a name=&quot;rtuning&quot;&gt;&lt;/a&gt;Request Tuning Page&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;(Enterprise only) Besides holding the &quot;Maximum number of simultaneous requests&quot; setting (renamed here in CF8 as &quot;Template&quot; requests) moved from the old Settings page, this page now &lt;b&gt;permits setting limits on number of simultaneous requests from flash remoting and web service clients, as well as CFC function requests (not calls to CFC methods from CFML but those made via a URL, such as from a browser or Ajax client, etc, when not using ?wsdl)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Besides holding the &quot;Maximum number of simultaneous report threads&quot; setting (renamed here in CF8 to add &quot;simultaneous&quot;) moved from the old Settings page, this page also permits setting &lt;b&gt;limits on number of simultaneous CFTHREAD threads&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;(Enterprise only) Page adds 2 new &lt;b&gt;&quot;Queue Timeout&quot; settings&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;(Enterprise only) Page adds 2 new &lt;b&gt;&quot;JRun Master Request&quot; limits&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Mail Page&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;u&gt;New&lt;/u&gt; Username and password fields to hold SMTP server authentication info (previously, had to know how to add it to the mail server name using username@password:servername in the mail server field). Use of password field offers protection of password from someone watching over your shoulder.&lt;/li&gt;
&lt;li&gt;&lt;u&gt;New&lt;/u&gt; &lt;b&gt;&quot;Connection Timeout&quot; and &quot;Enable SSL Socket connections to mail server&quot; and &quot;Enable TLS connection to mail server&quot; options&lt;/b&gt;, each permitting greater security and control over authentication to SMTP servers (particularly Google mail servers)&lt;/li&gt;
 &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;B. Data &amp; Services Section&lt;/h2&gt;
&lt;blockquote&gt;
&lt;h4&gt;Data Sources Page&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;u&gt;New&lt;/u&gt; driver types: &quot;Apache Derby Client&quot;, &quot;Apache Derby Embedded&quot;, to support the newly available Apache Derby database, and &quot;MySQL 4/5&quot; (in addition to existing MySQL 3) and &quot;PostgreSQL&quot;&lt;/li&gt;
&lt;li&gt;In &quot;Advanced Settings&quot;, &lt;u&gt;new&lt;/u&gt; &quot;Log Activity&quot; option (to log database activity to DB) for Enterprise drivers (SQL Server, Oracle, Informix, Sybase, and DB2). &lt;/li&gt;
&lt;li&gt;In &quot;Advanced Settings&quot;, &lt;u&gt;new&lt;/u&gt; &quot;Validation Query&quot; option (called when a connection from the pool is reused), available for use with all driver types&lt;/li&gt;
 &lt;/ul&gt;

&lt;h4&gt;Verity K2 Server Page&lt;/h4&gt;
In &quot;Advanced Settings&quot;, new option to enter K2 Admin Username and Password.
&lt;/blockquote&gt;

&lt;h2&gt;C. Debugging &amp; Logging Section&lt;/h2&gt;
&lt;blockquote&gt;
&lt;h4&gt;Debugging Output Page&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Page name changed from just &quot;Debugging Settings&quot; (due to addition of new &quot;Debugger Settings&quot; page listed below).&lt;/li&gt;
&lt;li&gt;&lt;u&gt;New&lt;/u&gt; &lt;b&gt;&quot;Enable AJAX Debug Log Window&quot; option, which allows display of the AJAX debug log window when the cfdebug flag is passed in the URL&lt;/b&gt; (also relies on IP address settings to control who sees this)&lt;/li&gt;
&lt;li&gt;&quot;Enable Debugging&quot; option renamed to &quot;Enable Request Debugging Output&quot;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;u&gt;New&lt;/u&gt; Debugger Settings Page&lt;/h4&gt;
Enable, configure, and control interactive step debugger in Eclipse.

&lt;h4&gt;Scheduled Tasks Page&lt;/h4&gt;
&lt;u&gt;New&lt;/u&gt; option to &lt;b&gt;pause a given scheduled task&lt;/b&gt; (new button in list of buttons to left of each scheduled task)

&lt;h4&gt;Systems Probes Page&lt;/h4&gt;
Field for &quot;Notifications Sent From&quot; renamed to simply &quot;E-mail&quot;.

&lt;h4&gt;Code Analyzer Page&lt;/h4&gt;
Changed to list CF8 tags and functions in &quot;Advanced Options&quot; page.
&lt;/blockquote&gt;

&lt;h2&gt;D. &lt;u&gt;New&lt;/u&gt; Server Monitoring Section&lt;/h2&gt;
&lt;blockquote&gt;
(Enterprise only) Offers links to the new Server Monitor and Multiserver Monitor.
&lt;/blockquote&gt;

&lt;h2&gt;E. Event Gateways Section (used to be Enterprise-only)&lt;/h2&gt;
&lt;blockquote&gt;
&lt;h4&gt;Gateway Types Page&lt;/h4&gt;

New Flex-based gateways: &quot;DataManagement&quot;, &quot;DataServicesMessaging&quot;, &quot;FMS&quot;
&lt;/blockquote&gt;

&lt;h2&gt;F. Security Section&lt;/h2&gt;
&lt;blockquote&gt;
&lt;h4&gt;Administrator Page (renamed from &quot;CF Admin Password&quot; page)&lt;/h4&gt;

(Enterprise ony) Offers new interface to use either a single Admin password (as before), or separate username/password (per authorized admin user, as enabled in new &quot;User Manager&quot; page listed below), or no password required at all

&lt;h4&gt;RDS Page (renamed from &quot;RDS Password&quot; page)&lt;/h4&gt;

(Enterprise only) Offers new interface to use either a single RDS password (as before), or separate username/password (per authorized RDS user, as enabled in new &quot;User Manager&quot; page listed below), or no password required at all

&lt;h4&gt;Security Sandbox/Resource Security Page&lt;/h4&gt;
&quot;CF Tags&quot; and &quot;CF Functions&quot; tabs for adding/editing a sandbox have been changed to list CF8 tags and functions.

&lt;h4&gt;&lt;u&gt;New&lt;/u&gt; User Manager Page&lt;/h4&gt;
(Enterprise only) Enables adding users who should be given access to either RDS, CF Admin, or Admin API functionality.
&lt;/blockquote&gt;

&lt;h2&gt;G. (Enterprise only) Packaging &amp; Deployment Section&lt;/h2&gt;
&lt;blockquote&gt;
&lt;h4&gt;ColdFusion Archives Page&lt;/h4&gt;
When adding/editing an archive, the popup window that is shown offers several sections, and the following changes have been observed:
&lt;ul&gt;
&lt;li&gt;Server Settings: &quot;Locking&quot; section has been removed, while &quot;Watcher Settings&quot;, &quot;Server Monitor Settings&quot;, and &quot;System Probes&quot; have been added&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New&lt;/strong&gt; &quot;Web Services&quot; settings page, with provided &quot;pre-restore&quot; and &quot;post-restore&quot; lists&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;(Enterprise only) J2EE Archives Page&lt;/h4&gt;
When adding/editing an archive, there is a new &quot;Previous Serial Number (if upgrade)&quot; option.
&lt;/blockquote&gt;

&lt;h2&gt;Where to learn more&lt;/h2&gt;

To find out more about these changes, see the online help available in the CF Admin, available on each admin page. 

Or see the ColdFusion documentation manual, &quot;Administering and Configuring ColdFusion 8&quot;, available at &lt;a href=&quot;http://www.adobe.com/support/documentation/en/coldfusion/&quot;&gt;CF docs page&lt;/a&gt;.

I realize that some reading this will be moving from CF 6, 6.1, 7, or 7.01. I&apos;m afraid I can&apos;t detail here all the changes between those releases. I have, however, got a day-long class I offered at CFUnited on &quot;New in CFMX 6/7: What you may have missed&quot;, where I do outline changes in each of those releases (and intervening updaters). If you&apos;re interested in taking that class, drop me a note or leave a comment here. I am thinking of offering it as an online class (and plan to do the same regarding all changes in CF8--outside of the Admin). Hope all this helps others. 
				</description>
				
				<category>cf8</category>
				
				<category>admin</category>
				
				<category>tips</category>
				
				<pubDate>Tue, 03 Jul 2007 17:06:00 -0400</pubDate>
				<guid>http://www.carehart.org/blog/client/index.cfm/2007/7/3/cf8_admin_changes</guid>
				
			</item>
			
			<item>
				<title>Charlie Arehart offers new per-minute phone-based support service</title>
				<link>http://www.carehart.org/blog/client/index.cfm/2007/2/13/Charlie-Arehart-offers-new-perminute-phonebased-support-service</link>
				<description>
				
				Ever felt stumped trying to solve a CF problem? You&apos;ve tried everything? Searched the web? Asked on forums and lists, and you&apos;re still stuck? Or maybe you&apos;re just pressed for time. 

Maybe you&apos;ve wished you could hire someone with more experience but can&apos;t justify a high hourly rate. Of course, with so many web tools available to share a desktop, travel need no longer be a significant issue. Sometimes, it could help to simply have someone &quot;look over your shoulder&quot; via the web to resolve a problem.

Recognizing all those challenges, I&apos;ve created a new service that I&apos;m tentatively calling &quot;AskCharlie&quot;, to be able to offer just such assistance. 

Via buttons on my site or an 888 number you call, you can arrange to speak with me by phone (and optionally join me in a shared desktop session) to solve some knotty problem.

Best of all, it&apos;s very low cost and at a per minute rate (first-time callers can use a 10 minutes free option, and everyone gets a money-back guarantee). That and more are explained on my site:

&lt;a href=&quot;http://www.carehart.org/askcharlie/&quot;&gt;http://www.carehart.org/askcharlie/&lt;/a&gt;

There you can learn more about why I did it, how it works, how the remote desktop sharing assistance works (no problem with firewalls, for instance), and more.

I&apos;d welcome your thoughts on what you think of the idea. 
				</description>
				
				<category>performance</category>
				
				<category>contributions</category>
				
				<category>admin</category>
				
				<category>tuning</category>
				
				<category>news</category>
				
				<category>basics</category>
				
				<pubDate>Tue, 13 Feb 2007 21:00:00 -0400</pubDate>
				<guid>http://www.carehart.org/blog/client/index.cfm/2007/2/13/Charlie-Arehart-offers-new-perminute-phonebased-support-service</guid>
				
			</item>
			
			<item>
				<title>Reloading CF web services programmatically, using the CF7 Admin API</title>
				<link>http://www.carehart.org/blog/client/index.cfm/2006/12/12/refreshing_web_services_programmatically</link>
				<description>
				
				I&apos;m surprised to not see much out there about how to reload or refresh CF&apos;s cached WSDL proxy for calling a web service, at least programmatically using the new &lt;strong&gt;CF 7 Admin API&lt;/strong&gt;. Perhaps it&apos;s because people have been tripped up, or simply haven&apos;t explored it. Either way, I&apos;d like to offer here the code you need, and also point out some tips and traps.

&lt;b&gt;Update for CF8:&lt;/b&gt; As an update to this entry from 2006, which is focused on CF7, I&apos;ll note that there was yet another approach that was added in CF8. Both still work and have their own value. More on the CF8 feature in &lt;a href=&quot;http://www.carehart.org/blog/client/index.cfm/2007/9/3/cf8_hiddengem_refreshwsdl&quot;&gt;my later blog entry&lt;/a&gt;. Still, the feature added in CF7 is important to understand, too, so please read on.

&lt;h3&gt;Introduction: Why You Would Want to&lt;/h3&gt;

As background, someone reported having a problem calling a web service from CFML, and a solution suggested was that the person reload or refresh the web service using the CFMX Admin console (in the &quot;Data &amp; Services&quot; &gt; &quot;Web Services&quot; nav bar tab. There, you&apos;ll find any web services that have been called from CF (which is often a surprise to folks that they&apos;re tracked there). For each listed web service, there are 3 buttons and the middle one does a refresh (which means it goes and grabs the WSDL and builds a local java proxy stub, which is used when you then invoke the web service).

But one may then wonder how to do that programmatically, without having to open the Admin console. In CFMX 6.1, you could use the undocumented &lt;strong&gt;ServiceFactory&lt;/strong&gt;, as I&apos;ll show &lt;A href=&quot;#cf6&quot;&gt;below&lt;/A&gt; to those still using that. But since that&apos;s being deprecated, you really ought to learn the new CF7 approach.

&lt;h3&gt;The CF 7 Admin API Approach&lt;/h3&gt;

As of CFMX 7, we are expected to use the new &lt;strong&gt;Admin API&lt;/strong&gt;, a set of CFCs provided with CFMX 7, which offer a formal, secured API for accessing functionality otherwise offered in the Admin console.

So how would one do that to refresh a web service? Well, there is an &lt;strong&gt;extensions.cfc&lt;/strong&gt; in the Admin API (a set of CFCs in the webroot&apos;s &lt;strong&gt;/CFIDE/adminapi/&lt;/strong&gt; directory), and it has a &lt;strong&gt;reloadWebService&lt;/strong&gt; method that&apos;s just the trick. How did I know that? You can call the built-in CFC documentor by browsing the CFC directly:

&lt;code&gt;
http://&lt;em&gt;[servername]&lt;/em&gt;/cfide/adminapi/extensions.cfc
&lt;/code&gt;

Before you can call that, though, note that you do need to &quot;login&quot; to the Admin API by calling the &lt;strong&gt;login&lt;/strong&gt; method of the &lt;strong&gt;administrator.cfc&lt;/strong&gt; first. (Check out its docs to learn more.)

But to save you that effort, here&apos;s some code. (As always there are several ways to call a CFC and its methods (using CFINVOKE or CFOBJECT, or createObject either within CFSCRIPT or not), but here&apos;s at least one approach.):

&lt;code&gt;
&lt;cfset createObject(&quot;component&quot;,&quot;cfide.adminapi.administrator&quot;).login(&quot;youradminpw&quot;)&gt;
&lt;cfset ws = createobject(&quot;component&quot;,&quot;CFIDE.adminapi.extensions&quot;)&gt;
&lt;cfset ws.reloadWebService(name=&quot;&lt;em&gt;webservicename&lt;/em&gt;&quot;,path=&quot;&lt;em&gt;WSDLurl&lt;/em&gt;&quot;)&gt;
&lt;/code&gt;

Note that you need to specify your own &lt;strong&gt;admin password&lt;/strong&gt; in the first line, and in the last line you need to specify a &lt;strong&gt;web service name&lt;/strong&gt; and its &lt;strong&gt;WSDL URL&lt;/strong&gt;. 

&lt;h4&gt;What&apos;s with this notion of passing in a web service &quot;name&quot;?&lt;/h4&gt;

As you contemplate that code, you will certainly know what the WSDL URL is, since it&apos;s the same one you&apos;d use in a CFINVOKE or CFOBJECT/createobject call of the web service itself. But what&apos;s the &quot;&lt;strong&gt;name&lt;/strong&gt;&quot; requested here? Well, that can trip you up and it deserves further discussion, as it has several ramifications as I&apos;ll explain here.

The &lt;strong&gt;name&lt;/strong&gt; is the name shown in the Admin console for the given web service. The trick/trap is that if you never open and change the Admin console entry for this web service, then the name will simply be the same value as the WSDL URL. But there&apos;s more to understand.

First, if you didn&apos;t know it, one can edit that &quot;name&quot; in the Admin console, and then one can even use that &quot;name&quot; as an alternative (or &quot;alias&quot;) to the web service WSDL URL when invoking the web service from CFML. That&apos;s a whole separate subject which I&apos;ve covered in &lt;a href=&quot;http://www.carehart.org/presentations.cfm#websvctips&quot;&gt;user group talks&lt;/a&gt; in the past.

But assuming that no one has modified the web service name (or for reasons I&apos;ll explain in a moment, if you are not using such an alias name when you invoke the web service), then you can presume the name and WSDL URL to be the same. As an example, one could change the last line above to:

&lt;code&gt;
&lt;cfset ws.reloadWebService(name=&quot;http://ws.invesbot.com/stockquotes.asmx?WSDL&quot;,path=&quot;http://ws.invesbot.com/stockquotes.asmx?WSDL&quot;)&gt;
&lt;/code&gt;

&lt;h4&gt;Getting Web Service Names Programmatically&lt;/h4&gt;

Now may wonder, &quot;can I get the web service name programmatically?&quot; You can. But here&apos;s where it gets a little confusing. There is an available &lt;strong&gt;getwebservices&lt;/strong&gt; method of the extensions.cfc. And according to the docs, you can either pass in the &quot;&lt;strong&gt;name&lt;/strong&gt;&quot; of the webservice, or leave it off to get all web services. If we don&apos;t know the name, then we may think we&apos;d want to use the latter approach. But I find that it doesn&apos;t quite work as straightforwardly as it seems.

First, I tried calling getwebservices() without a name:

&lt;Code&gt;
&lt;cfset createObject(&quot;component&quot;,&quot;cfide.adminapi.administrator&quot;).login(&quot;youradminpw&quot;)&gt;
&lt;cfset ws = createobject(&quot;component&quot;,&quot;CFIDE.adminapi.extensions&quot;)&gt;
&lt;cfdump var=&quot;#ws.getwebservices()#&quot;&gt;
&lt;/CODE&gt;

Sadly, it returned an empty dump as a result. Yet I had several web services listed in my admin console. Here&apos;s the thing: none had a name. I then renamed one of them (to &quot;test&quot;), and tried it again, and suddenly the call did return an array of structures (1, in my case) with the name and WSDL URL.

Hmm. So it seems instead that the getwebservices() ought perhaps instead be named getnamedwebservices(), since it only returns web services whose names have been changed (been given an alias).

Still, though, if I do pass in a name, as the docs suggest, then I do indeed get the same result:

&lt;Code&gt;
&lt;cfset createObject(&quot;component&quot;,&quot;cfide.adminapi.administrator&quot;).login(&quot;youradminpw&quot;)&gt;
&lt;cfset ws = createobject(&quot;component&quot;,&quot;CFIDE.adminapi.extensions&quot;)&gt;
&lt;cfdump var=&quot;#ws.getwebservices(&quot;test&quot;)#&quot;&gt;
&lt;/CODE&gt;

Now, you may wonder: &quot;if I can&apos;t a listing unless I know the name, or can only get a list of &apos;all&apos; of them if they are named, then how might I get the info for ones that have no name or whose name I don&apos;t know?&quot;

Good question. And guess what I&apos;ve found? A couple of important things.

First, I&apos;ve found that you can also pass in the WSDL URL, even for a web service that&apos;s been renamed with an alias like &quot;test&quot;, such that this works:

&lt;Code&gt;
&lt;cfset createObject(&quot;component&quot;,&quot;cfide.adminapi.administrator&quot;).login(&quot;youradminpw&quot;)&gt;
&lt;cfset ws = createobject(&quot;component&quot;,&quot;CFIDE.adminapi.extensions&quot;)&gt;
&lt;cfdump var=&quot;#ws.getwebservices(&quot;http://ws.invesbot.com/stockquotes.asmx?WSDL&quot;)#&quot;&gt;
&lt;/CODE&gt;

Again, that&apos;s not the web service name but the WSDL URL. And the resulting dump shows the name and that URL. So the API docs on this are a little misleading.

&lt;h4&gt;Be sure to refresh the &quot;right&quot; webservice: the one you&apos;d really try calling&lt;/h4&gt;

But perhaps a more important thing is that I found that you can have a web service entry for the SAME WSDL URL but with different names/aliases. Why is this important? Because you want to make sure you refresh whichever one &lt;strong&gt;you&apos;re&lt;/strong&gt; using.

This goes back to my point above when I introduced the refreshWebService method: you need to give it the name as YOU call the web service, otherwise you&apos;ll be refreshing a different proxy stub and won&apos;t see the benefit you expect. 

If you use the WSDL URL when you invoke the web service, then that will create a proxy stub with that &quot;name&quot;, and therefore you want to use that as the &quot;name&quot; when you refresh it. 

If you rename a web service in the Admin console, and then use &lt;strong&gt;that&lt;/strong&gt; when you invoke the web service, then you want to use &lt;strong&gt;that&lt;/strong&gt; as the &quot;name&quot; when you refresh it.

&lt;a name=&quot;cf6&quot;&gt;&lt;/a&gt;
&lt;h3&gt;Refreshing Web Services Using the ServiceFactory&lt;/h3&gt;

Since some folks reading this may not have moved to CF 7, let me show how you could do the same using CFMX 6/6.1 (or indeed 7, since it still works there). It&apos;s important to note, however, that using the ServiceFactory is not only not documented but it&apos;s also &lt;strong&gt;not supported&lt;/strong&gt;. It has security problems (since there&apos;s no need to provide the admin password as you must in the Admin API). Also, it may eventually be obsoleted or otherwise restricted. 

Still, since it&apos;s been documented by others in the past and is readily available on the web, I&apos;ll offer it here:

&lt;code&gt;
&lt;cfobject action=&quot;CREATE&quot; type=&quot;JAVA&quot; class=&quot;coldfusion.server.ServiceFactory&quot; name=&quot;ServiceFactory&quot;&gt;
&lt;cfset ServiceFactory.getXMLRPCService().refreshWebService(&quot;&lt;em&gt;webservicename&lt;/em&gt;&quot;)&gt;
&lt;/code&gt;

Now, you&apos;ll notice that I&apos;ve indicated that the value passed into the &lt;strong&gt;refreshWebService&lt;/strong&gt; method is the &lt;strong&gt;webservicename&lt;/strong&gt;. That&apos;s because it works just like the Admin API &lt;strong&gt;reloadWebService&lt;/strong&gt; discussed at the top here. Be sure to specify the name as you would use it in the invocation of the web service (whether an alias or the full URL). 

&lt;h3&gt;How to Confirm That Refreshing is Working&lt;/h3&gt;

As you try these three approaches (Admin button, Admin API, and ServiceFactory), you will probably benefit greatly from being able to see for sure that the refresh/reload is updating the java proxy/stub class files. Where do you find them? They&apos;re stored in a &quot;&lt;strong&gt;stubs&lt;/strong&gt;&quot; directory under your CFMX install directory, such as C:\CFusionMX\stubs or C:\CFusionMX7\stubs. 

Then, under that, you will find directory names such as WS141836989, or a name that&apos;s the same as the alias/name you give to a web service in the Admin console. Inside those directories you will find other subdirectories, eventually finding some that hold the .class files representing the objects available in the web service. It&apos;s those .class files whose date/time stamp you want to see changing when you do a refresh/reload.

I&apos;ll note that there&apos;s no mapping or indication of that &lt;em&gt;WSnnnn&lt;/em&gt; directory name, to know which one holds the web service you&apos;re interested in. I guess you just have to find the right one by looking for one whose class names map to the web service object you&apos;re calling. (If anyone knows a better connection, please do share it.)

Finally, I think it may be worth clarifying that when you do a refresh/reload of a web service using the approaches above, you need to have first made a call to that web service from CFML (or entered it manually in the admin console).

Hope all that&apos;s helpful.

&lt;h3&gt;Summary of Notes for Adobe Folks&lt;/h3&gt;

Before I end, in case any Adobe folks are listening, here is a restatement (and expansion) of the couple of observations I made about wrong or undocumented functionality. This is for both the docs group and the engineers, since this is also about internal API documentation returned by the CFCs and their functionality:

&lt;ul&gt;
&lt;li&gt;getwebservices() only returns web services that have a name that was changed, whereas the API doc says it returns &quot;all web services&quot;, so it either is working incorrectly or ought to be called getnamedwebservices instead&lt;/li&gt;
&lt;li&gt;though not documented, getwebservices(&quot;wsdlurl&quot;) works also. The API docs say that it should only take a name (and I tested this against a web service where I had renamed it, so it was not getting it &quot;by name&quot;)&lt;/li&gt;
&lt;li&gt;if you do consider renaming the getwebservices() method to be called getnamedwebservices(), you might then also want to rename getwebservices(name) to getwebservice (singular), since it just gets one webservice&lt;/li&gt;
&lt;li&gt;it would be nice to be able to refresh ALL webservices that use a given WSDL URL at once, perhaps by new method that accepts URL rather than name (and works for all occurrences of that URL in the cache, whether named with an alias or not)&lt;/li&gt;
&lt;/ul&gt; 
				</description>
				
				<category>admin</category>
				
				<category>cfmx</category>
				
				<category>web services</category>
				
				<category>cfml</category>
				
				<pubDate>Tue, 12 Dec 2006 13:07:00 -0400</pubDate>
				<guid>http://www.carehart.org/blog/client/index.cfm/2006/12/12/refreshing_web_services_programmatically</guid>
				
			</item>
			
			<item>
				<title>Understanding (and monitoring) the CF template cache</title>
				<link>http://www.carehart.org/blog/client/index.cfm/2006/7/12/template_cache_pops</link>
				<description>
				
				Adobe CF team member Ashwin has posted an &lt;a href=&quot;http://blogs.sanmathi.org/ashwin/2006/07/12/tangling-with-the-template-cache/&quot;&gt;entry&lt;/a&gt; offering some useful insights into the inner workings of the CF template cache. More detail from Adobe folks is of course always welcome. Thanks, Aswin.

I&apos;ve posted a comment there about how to measure and report on whether and when template cache misses occur. (Again, read his post for more on what a means.) 

I would have posted it as a trackback from here, but I don&apos;t see how to do that in BlogCFC. So instead, I&apos;m pointing you to it this way. :-)


To save you the trouble, if you just want to know how to measure it, here&apos;s what I wrote:

&lt;blockquote&gt;
Thanks, Ashwin. More detail from Adobe folks is of course always welcome. 

But I do think it&apos;s useful to point out also how one can measure and report on whether and when template cache misses occur. There are at least two.

First, it&apos;s reported in the command-line CFSTAT tool as CP/Sec (for cache pops per second), and reports both a current and highwater mark. (Of course, you must enable CFSTAT support in the CF Admin, and the cfstat is in the cfusion/bin or cfusionmx/bin.)

It&apos;s also reported in the Windows Performance Monitor, by way of the ColdFusion/ColdFusion MX &quot;performance object&quot; counter called &quot;Cache Pops/Sec&quot; (again, assuming that you&apos;ve enabled Perfmon support in the CF Admin). 

With perfmon&apos;s ability to create logs and alerts, it should be easy for someone to create a mechanism to track if you ever have a non-zero value, which would suggest increasing the template cache size.
&lt;/blockquote&gt;

I meant also to mention that there is an old but still useful  &lt;a href=&quot;http://www.adobe.com/devnet/server_archive/articles/server_caching_cf.html#templatecache&quot;&gt;Allaire technote&lt;/a&gt; offering some more insight into caching, including using CFSTAT and more. 
				</description>
				
				<category>admin</category>
				
				<pubDate>Wed, 12 Jul 2006 16:45:00 -0400</pubDate>
				<guid>http://www.carehart.org/blog/client/index.cfm/2006/7/12/template_cache_pops</guid>
				
			</item>
			
			<item>
				<title>Solving error connecting to SQL Server 2005 from CFMX 6.1/7 on Localhost</title>
				<link>http://www.carehart.org/blog/client/index.cfm/2006/7/8/sql2k5_Error_establishing_socket</link>
				<description>
				
				Are you getting the error, &quot;Connection refused&quot; or &quot;Error establishing socket to host and port&quot;, trying to connect to a SQL Server 2005 database in CFMX 6.1 or 7? Or the error, &quot;SQL Server does not exist or access denied&quot;, in CF5 using OLEDB? I have a solution.  

No, I&apos;m not just going to recommend creating an ODBC datasource, as many others have. :-) There is a real solution. &lt;strong&gt;The short answer is to open the &quot;SQL Server Configuration Manager&quot; in SQL Server 2005, and ensure that TCP/IP is enabled as a protocol.&lt;/strong&gt; 

The rest of this entry explains additional details, such as how to find and make that change, what specific errors you get, and how I found the information, in case any of it helps others.

I should add that I don&apos;t have SQL 2000 against which to test how things are similar or different, but I do point to some CFMX docs that may apply to that version. In any case, hope this will serve all those CFML developers making the move to SQL Server 2005.

&lt;h2&gt;The Errors You May See&lt;/h2&gt;

To help ensure that future readers can find this entry more readily when doing web searching, let me offer details on the error. The problem I&apos;m referring to is if you get any of the following errors. 

In the CFMX 7 admin, when adding, editing, or verifying a SQL Server 2005 datasource, you get the following error:

&lt;blockquote&gt;
Connection verification failed for data source: blogcfcsql
java.sql.SQLException: [Macromedia][SQLServer JDBC Driver]Error establishing socket. Connection refused: connect
The root cause was that: java.sql.SQLException: [Macromedia][SQLServer JDBC Driver]Error establishing socket. Connection refused: connect
&lt;/blockquote&gt;

Or if you run code on CFMX 7 that tries to use such a datasource and get:

&lt;blockquote&gt;
Error Executing Database Query.
Macromedia][SQLServer JDBC Driver]Error establishing socket. Connection refused: connect 
&lt;/blockquote&gt;

In CFMX 6.1 you get this slightly different error when adding or editing the DSN in the admin:

&lt;blockquote&gt;
Connection verification failed for data source: blogcfcsql
[]java.sql.SQLException: [Macromedia][SQLServer JDBC Driver]Error establishing socket. Connection refused: connect
The root cause was that: java.sql.SQLException: [Macromedia][SQLServer JDBC Driver]Error establishing socket. Connection refused: connect
&lt;/blockquote&gt;

When you simply verify the DSN in CFMX 6.1, it only says &quot;error&quot; in the status column. You need to edit and submit the DSN to see the error above.

And if you run code trying to use such a datasource in CFMX 6.1, you get:

&lt;blockquote&gt;
[Macromedia][SQLServer JDBC Driver]Error establishing socket. Connection refused: connect 
&lt;/blockquote&gt;

I don&apos;t have CFMX 6.0 installed to see what happens there. 

Lastly, in CF5, while most use ODBC datasources there, if you did try to create an OLEDB datasource using the SQLOLEDB provider, in the circumstance I&apos;m describing it would just say &quot;failed&quot; if you try to verify it, and &quot;The connection to the data source failed&quot; if you edit the DSN and submit it. 

In code using the DSN you would get:

&lt;blockquote&gt;
OLEDB Error Code = 17
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.
&lt;/blockquote&gt;

&lt;h4&gt;Update for CF8&lt;/h4&gt;
Here&apos;s what the error is in CF8 might look like:

&lt;blockquote&gt;
Connection verification failed for data source: blogcfcsql
java.sql.SQLException: [Macromedia][SQLServer JDBC Driver]Error establishing socket to host and port: [server]:[port]. Reason: Connection refused: connect
The root cause was that: java.sql.SQLException: [Macromedia][SQLServer JDBC Driver]Error establishing socket to host and port: [server]:[port]. Reason: Connection refused: connect
&lt;/blockquote&gt;

So, those are the errors. What&apos;s the solution? :-)

&lt;h2&gt;Finding the Solution&lt;/h2&gt;

After some digging around, where folks offered all sorts of remedies (including recommending you just punt and create an ODBC datasource instead), I finally found the CFMX docs, &lt;i&gt;Configuring and Administering ColdFusion MX&lt;/i&gt;, in its section, &quot;Connecting to Microsoft SQL Server&quot;: 

&lt;a href=&quot;http://livedocs.macromedia.com/coldfusion/7/htmldocs/00001743.htm#1278307&quot;&gt;http://livedocs.macromedia.com/coldfusion/7/htmldocs/00001743.htm#1278307&lt;/a&gt;

There it offered a few recommendations where &quot;the following situations can cause a Connection Refused error&quot;. The one that caught my attention was:

&lt;blockquote&gt;
SQL Server does not enable the TCP/IP protocol. This problem can happen when SQL Server is on the same computer as ColdFusion MX.
&lt;/blockquote&gt;

Well I &lt;strong&gt;am&lt;/strong&gt; running both CFMX and SQL Server on my laptop (development mode for each), so this sounded encouraging. It would also explain why different folks experience different things, if they have SQL running elsewhere and/or in non-development mode.  Indeed, further reading (discussed later) shows that there are differences in implementations of SQL 2005 that would influence whether you&apos;d get this error.

Anyway, the CFMX docs go on to say you should make sure that TCP/IP is not listed as a &quot;disabled protocol&quot;, which it indicated can happen in a local (development) mode installation of SQL Server. 

Unfortunately, the steps they show to check and correct that are not appropriate for SQL Server 2005. (I will add a comment there pointing back to this blog entry.)

But in searching the SQL 2k5 books online, I found an entry that does explain this issue (following is a local link if you have BOL installed yourself):

ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/udb9/html/ad98873f-8478-4bce-8abf-c24f5d111144.htm

It explains how things will be set for different versions of SQL Server 2005 (Enterprise, Standard, Workgroup, Developer, Evaluation, Express) and whether you have a previous SQL Server version that you are or are not upgrading. Each of these has different defaults for if TCP/IP is enabled.

&lt;h2&gt;The Solution in SQL Server 2005&lt;/h2&gt;

BOL goes on to indicate that we need to go into the SQL Server Configuration Manager to configure the network protocols. There are 2 ways to do this: either right-click on the server in Mgt Studio and choose &quot;SQL Server Configuration Manager&quot; or use Start&gt;Programs&gt;Microsoft SQL Server 2005&gt;Configuration Tools&gt;SQL Server Configuration Manager. 

From the window that opens, select the &quot;SQL Server 2005 Network Configuration&quot; node, and its &quot;Protocols For [yourserver]&quot;. That lists the various protocols (including TCP/IP and named pipes), and sure enough, for me it showed &lt;strong&gt;disabled&lt;/strong&gt;. 

I right-clicked the TCP/IP protocol name and andose &quot;enable&quot;, which reminded that I needed to restart the SQL Server for the change to take effect (right-click on the server in SQL Management Studio and choose &quot;restart&quot;). I did that, and then reran my code and all was well (and the datasource would now verify in the Admin console.)

Phew! Hope this helps someone else.

&lt;h4&gt;Update&lt;/h4&gt;
I was working on another machine where I had this error, and this time, I had to take one more step in enabling the port, as the step above just wasn&apos;t enough.

On that TCP/IP protocol, where I right-clicked to enable, that right-click also offers a Properties option (which is another way you could choose to enable/disable the protocol). But the window that pops up also has a IP Addresses tab. Choosing that, I saw several various indications of IP addresses, with settings to both make them active and enabled, as well as indicate the port they should use. I tried changing various ones, but in the end found that the only solution was to change the last one, IPAll, and add my SQL Server port (1433) in its TCP Port field. After doing that, and restarting, all was well.

There may be (indeed, likely are) important security considerations that should go into enabling that option. Since this is just my local development box, in a firewall, I won&apos;t bother to investigate the, but others here should.

&lt;h2&gt;Some Closing Additional Thoughts&lt;/h2&gt;

Again, some posts I&apos;d found suggested that the solution was to use an ODBC connection instead. That surely works, but most regard an ODBC connection as less performant, and involving more communications overhead per transaction. Also, I have seen code that failed using an ODBC connection that worked fine with a SQL Server connection.

I should also note that you can change this another way, using the new SQL 2005 &quot;Surface Area Configuration&quot; wizard, and choosing &quot;Configure Surface Area for [your server]&quot;, then choose &quot;Surface Area Configuration for Services and connections&quot; and then in its window choose &quot;[your server]&gt;Database Engine&gt;Remote Connections and changing to &quot;Local and Remote Connections&quot; to enable TCP/IP.

I&apos;ll note that for some reason, BlueDragon&apos;s SQL Server driver (based on New Atlanta&apos;s JTurbo Type 4 JDBC driver for SQL Server) didn&apos;t have this problem. Perhaps someone with more experience in the underlying implementation can explain why the two are so different. 

Finally, one other comment: if the error you&apos;re getting is instead:

Error Executing Database Query.  
[Macromedia][SQLServefr JDBC Driver]Error establishing socket. Unknown host: (local)  

That is a different problem. The online help in the CFMX Admin suggests that you can name the server as &quot;(local)&quot;, but I find I get the aforementioned error. Changing it to the server name or IP, such as 127.0.0.1 for my localhost, solved the problem.  (The help also indicates this an option, so I&apos;m just speaking to those who try the &quot;(local)&quot; value.)

One other thing: another problem could be that SQL Server is listening on a port other than what you think. Don&apos;t presume it&apos;s the standard 1433. Someone could have changed it on install, for security reasons, or some other config feature could have changed it. You can see what the port is by using that same SQL Server Configuration Manager, but rather than use the &quot;SQL Server 2005 Network Configuration&quot; option in the left tree, choose the &quot;Client Protocols&quot;, then right-click on TCP, and choose Properties. It will list the &quot;Default Port&quot;. Hope all that&apos;s helpful to some. 
				</description>
				
				<category>admin</category>
				
				<category>cfmx</category>
				
				<category>sql server</category>
				
				<pubDate>Sat, 08 Jul 2006 15:19:00 -0400</pubDate>
				<guid>http://www.carehart.org/blog/client/index.cfm/2006/7/8/sql2k5_Error_establishing_socket</guid>
				
			</item>
			</channel></rss>