<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1348013472843711523</id><updated>2011-08-11T12:23:22.243-05:00</updated><category term='consumer'/><category term='reflection'/><category term='uft-8'/><category term='coldfusion cfid cftoken jsessionid cflocation addtoken'/><category term='blank pane'/><category term='javascript'/><category term='coldfusion'/><category term='keepass'/><category term='keepassx'/><category term='cfinput'/><category term='cfcatch'/><category term='kununtu'/><category term='MemoryPercentUsage'/><category term='DOM'/><category term='socket write error'/><category term='validate telephone'/><category term='mailroot'/><category term='getValueWithoutChange'/><category term='J2eeSessionScopeStub'/><category term='blank window'/><category term='eclipse'/><category term='cf8'/><category term='cp1252'/><category term='fusebox'/><category term='session cleanup'/><category term='update'/><category term='broken'/><category term='MemoryLimit'/><category term='linux'/><category term='instantiation'/><category term='iis'/><category term='java'/><category term='operation aborted'/><category term='covenant eyes coldfusion double execution iis'/><category term='object'/><category term='ActiveMQ'/><category term='struct'/><category term='session management'/><category term='sql server'/><category term='channel was inactive for too long'/><category term='queue'/><category term='onsessionend'/><category term='regex'/><category term='spool to disk'/><category term='session'/><category term='search'/><category term='appendChild'/><category term='exception'/><category term='coldspring'/><category term='IE'/><category term='ubuntu'/><category term='ASToperator error'/><category term='jconsole'/><category term='java heap space'/><category term='default encoding'/><category term='cookies coldfusion bots'/><category term='cfmail'/><category term='java file encoding'/><title type='text'>CFTeeps</title><subtitle type='html'>Blogging the random coldfusion conundrums of life.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-79399184529327509</id><published>2011-05-17T10:06:00.002-05:00</published><updated>2011-05-17T10:08:09.972-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='ASToperator error'/><title type='text'>ASToperator error</title><content type='html'>I recently installed a developer version of CF9 along with the 9.0.1 update. &amp;nbsp;I noticed several things that didn't quite work right. &amp;nbsp;For instance in the CF administrator area I went to look at the log files and it bombed. &amp;nbsp;On the public side I loaded up a site for a recent gig I'm working on and got the following error:&lt;br /&gt;&lt;h1 id="textSection1" style="font-family: verdana; font: normal normal normal 13pt/15pt verdana;"&gt;&lt;span class="Apple-style-span" style="color: #073763; font-size: x-small;"&gt;Unable to find an operator implementation for coldfusion.compiler.ASToperator&lt;/span&gt;&lt;/h1&gt;&lt;div&gt;I didn't find too much in the blog world on this error. &amp;nbsp;I did find some things on the error message that I got when trying to look at the log files. &amp;nbsp;There was a bug recorded on the Adobe site. &amp;nbsp;The work around was to reinstall CF and reapply the update. &amp;nbsp;After proceeding with that, which only took a few minutes, all was right with the world again. &amp;nbsp;All errors disappeared.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Moral of the story? &amp;nbsp;Maybe the update didn't install properly. &amp;nbsp;I do remember getting an error message saying that the update didn't complete and that next time I should remember to shut down the CF services before applying the update. &amp;nbsp;That could have been it. &amp;nbsp;Either way... it works now.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-79399184529327509?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/79399184529327509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=79399184529327509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/79399184529327509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/79399184529327509'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2011/05/astoperator-error.html' title='ASToperator error'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-6779215628118648690</id><published>2009-11-03T11:04:00.013-06:00</published><updated>2009-11-03T14:29:07.537-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><category scheme='http://www.blogger.com/atom/ns#' term='channel was inactive for too long'/><title type='text'>ActiveMQ: Channel your energy</title><content type='html'>I started noticing an error when trying to fill my queue with a large number of messages.  The error was the following: &lt;span style="font-weight: bold;"&gt;Channel was inactive for too long&lt;/span&gt;.  This would happen anywhere from one minute after the producer and channel were created to as long as ten minutes.  It wasn't all that consistent.  After doing a little research, I found a solution to turn off the inactivity check.&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;&amp;lt;cfscript&amp;gt;&lt;br /&gt;connectionFactory = createobject(&lt;br /&gt;'java','org.apache.activemq.ActiveMQConnectionFactory'&lt;br /&gt;).init(&lt;br /&gt;  '',&lt;br /&gt;  '',&lt;br /&gt;  'tcp://{host}:{port}&lt;br /&gt;         ?jms.useAsyncSend=true&lt;br /&gt;         &lt;span style="color: rgb(0, 102, 0);"&gt;&amp;amp;wireFormat.maxInactivityDuration=0&lt;/span&gt;'&lt;br /&gt;  );&lt;br /&gt;connection = connectionFactory.createConnection();&lt;br /&gt;connection.start();&lt;br /&gt;&lt;br /&gt;....&lt;br /&gt;&lt;br /&gt;&amp;lt;/cfscript&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;By appending &lt;span style="font-weight: bold;"&gt;&amp;amp;wireFormat.maxInactivityDuration=0&lt;/span&gt;, it will turn off the inactivity check for the channel.  You should also do this on the AMQ server side by doing the following in your ActiveMQ.xml:&lt;br /&gt;&lt;pre class="code"&gt;&amp;lt;transportConnectors&amp;gt;&lt;br /&gt;&amp;lt;transportConnector name="openwire"&lt;br /&gt;uri="tcp://{host}:{port}/&lt;span style="color: rgb(0, 102, 0);"&gt;?wireFormat.maxInactivityDuration=0&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;"&lt;/span&gt;&lt;br /&gt;discoveryUri="multicast://default"/&amp;gt;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&amp;lt;/transportConnectors&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;If you are experiencing issues like this with your CF ActiveMQ gateways, you could likely add this to your gateway config file.  However, I have yet to see this error in connection with the CF ActiveMQ gateway.  For more info on connecting directly to ActiveMQ, see my post &lt;a href="http://cfteeps.blogspot.com/2009/09/straight-talk-with-activemq.html"&gt;Straight talk with ActiveMQ.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-6779215628118648690?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/6779215628118648690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=6779215628118648690' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/6779215628118648690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/6779215628118648690'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2009/11/activemq-channel-your-energy.html' title='ActiveMQ: Channel your energy'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-499614260385264740</id><published>2009-10-09T09:07:00.016-05:00</published><updated>2009-11-03T12:22:14.576-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='MemoryLimit'/><category scheme='http://www.blogger.com/atom/ns#' term='queue'/><category scheme='http://www.blogger.com/atom/ns#' term='MemoryPercentUsage'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><category scheme='http://www.blogger.com/atom/ns#' term='java heap space'/><category scheme='http://www.blogger.com/atom/ns#' term='consumer'/><category scheme='http://www.blogger.com/atom/ns#' term='jconsole'/><title type='text'>ActiveMQ: Ghost consumers just in time for Halloween</title><content type='html'>I have been noticing some issues with the communication between ActiveMQ and Coldfusion the higher our load gets.  We've got a large process that can cause a java heap space error in the environment.  If that happens when there is a coldfusion gateway consuming messages, it can cause the current consumer to go into ghost mode and a new consumer is created.  If this is allowed to persist, the communication between ActiveMQ and Coldfusion sometimes comes to a screeching halt.  The only way we have found to remedy this battle of digital wills is to restart the Coldfusion service.  This seems to properly reset the connections and things return to normal.&lt;br /&gt;&lt;br /&gt;So, what is causing this behavior?  It's a question I wrestled with for a few weeks.  I could not replicate this in my local environment at all.  It helped to &lt;a href="http://cfteeps.blogspot.com/2009/10/jconsole-has-consoled-me.html" target="_blank"&gt;get jconsole fired up&lt;/a&gt; so that I could see a little bit of what was going on behind the scenes beyond what the ActiveMQ web console shows.  One thing I noticed with the actual filling of the queue is that if the &lt;span style="font-weight: bold;"&gt;MemoryLimit&lt;/span&gt; is not set high enough, the &lt;span style="font-weight: bold;"&gt;MemoryPercentUsage&lt;/span&gt; will be maxed at 100% and you can only put so many messages in the queue.  A new message can only get added if one in the queue got consumed.  This can be a really long Coldfusion task if you are max'd at 4000 messages and you have to fill it with 500,000.  With jconsole you can edit some of the limits on the fly for the queue.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Qdamp1VhkKc/Ss9oZydNpoI/AAAAAAAAAEc/1VnLDL2GUcg/s1600-h/amq_jconsole_100percent.jpg"&gt;&lt;img style="cursor: pointer; width: 304px; height: 320px;" src="http://2.bp.blogspot.com/_Qdamp1VhkKc/Ss9oZydNpoI/AAAAAAAAAEc/1VnLDL2GUcg/s320/amq_jconsole_100percent.jpg" alt="" id="BLOGGER_PHOTO_ID_5390642071236093570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The queue size at the time was 5m.  I started bumping it up to see what effect it would have.  I went to 10m and the queue doubled in size, but still wasn't where I wanted it.  I bumped it to 20m and wooosh, the queue filled with all 500,000 messages.  There seems to be some threshold that needs to be hit in order for it to hold that many messages.  With 500,000 messages in the queue, the MemoryPercentUsage is only at 43% or so. I'm sure an ActiveMQ guru could explain what is going on there.  If you know, please leave a comment.  Now rather than the Coldfusion process taking 12 hrs to fill the queue, it fills in 10 minutes.&lt;br /&gt;&lt;br /&gt;So, let's make this MemoryLimit change permanent. Open up your &lt;span style="font-weight: bold;"&gt;activemx.xml&lt;/span&gt; in your &lt;span style="font-weight: bold;"&gt;/conf&lt;/span&gt; directory and adjust as needed:&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;&amp;lt;destinationPolicy&amp;gt;&lt;br /&gt;&amp;lt;policyMap&amp;gt;&lt;br /&gt;&amp;lt;policyEntries&amp;gt;&lt;br /&gt;&amp;lt;policyEntry queue="&amp;gt;" memoryLimit="20mb"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I think the default memory limit for ActiveMQ off the shelf is 5m.  If you are doing a higher quantity of messages over 5000, it seems that you will have to bump this number up.&lt;br /&gt;&lt;br /&gt;Now the cool thing about this is that our hanging consumer issue has disappeared.  This was an unexpected benefit.  I decided to test it on my local environment by dropping the MemoryLimit down to 48k.  This allowed a max of 42 messages in the queue.  I then wrote the following code to create a java heap space error:&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;cffunction name="javaheapspace" output="false" access="public" returntype="void"&amp;gt;&lt;br /&gt;   &amp;lt;cfset var myxml =  ''/&amp;gt;&lt;br /&gt;&amp;lt;cfset var parsedxml =  ''/&amp;gt;&lt;br /&gt;&amp;lt;cfset var i = 0 /&amp;gt;&lt;br /&gt;&amp;lt;cfset var j = 0 /&amp;gt;  &lt;br /&gt;&lt;br /&gt;&amp;lt;cfsavecontent variable="myxml"&amp;gt;&lt;br /&gt;   &amp;lt;rootnode&amp;gt;&lt;br /&gt;   &amp;lt;cfloop from="1" to ="299999" index="i"&amp;gt;&lt;br /&gt;        &amp;lt;subnode&amp;gt; &lt;br /&gt;             &amp;lt;textinfo&amp;gt;with text in here&amp;lt;/textinfo&amp;gt;&lt;br /&gt;                  &amp;lt;mynumber&amp;gt;#i#&amp;lt;/mynumber&amp;gt;&lt;br /&gt;        &amp;lt;/subnode&amp;gt;&lt;br /&gt;   &amp;lt;/cfloop&amp;gt;&lt;br /&gt;   &amp;lt;/rootnode&amp;gt;&lt;br /&gt;&amp;lt;/cfsavecontent&amp;gt;&lt;br /&gt;&amp;lt;cfset parsedxml = xmlparse(myxml) /&amp;gt; &lt;br /&gt;&amp;lt;/cffunction&amp;gt;&lt;br /&gt;&lt;/pre&gt;The loop count may have to be moved up or down depending on the amount of memory you have allocated to your JVM.  I think mine is up around 512m.  I wanted it just small enough to be able to finish the myxml variable creation and just big enough to die in the parse.&lt;br /&gt;&lt;br /&gt;So in order to replicate this issue, I put in motion the process that would begin filling the queue and make sure the consumption begins.  With jconsole open, I watched the MemoryPercentageUsage and waited until it hit 100%.  Then I fired off the javaheapspace() call in another script.  Once it bombed, I refreshed my jconsole view and, sure enough, the consumer count went from 1 to 2.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Qdamp1VhkKc/Ss9iOgcxi6I/AAAAAAAAAEM/4eUFo43S_O0/s1600-h/amq_jconsole.jpg"&gt;&lt;img style="cursor: pointer; width: 305px; height: 320px;" src="http://1.bp.blogspot.com/_Qdamp1VhkKc/Ss9iOgcxi6I/AAAAAAAAAEM/4eUFo43S_O0/s320/amq_jconsole.jpg" alt="" id="BLOGGER_PHOTO_ID_5390635280354085794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It doesn't work every time so you may have to try a few times.  The more time it sits at 100% usage, the better your chances.  I went into CFAdmin and shut off the gateway that was my consumer and the count went down to one.  So it left a connection that cannot be managed.  In fact if you try to kill that connection through jconsole, it will create another one it its place.  The only way to kill it that I have found, is to restart the CF instance.&lt;br /&gt;&lt;br /&gt;So the moral of the story is to keep your queue's &lt;span style="font-weight: bold;"&gt;MemoryLimit&lt;/span&gt; high enough so that your &lt;span style="font-weight: bold;"&gt;MemoryPercentUsage&lt;/span&gt; does not reach &lt;span style="font-weight: bold;"&gt;100%&lt;/span&gt;.  Otherwise you may be haunted by the "ghost of consumer past"&lt;br /&gt;&lt;br /&gt;Blessings,&lt;br /&gt;Terry&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-499614260385264740?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/499614260385264740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=499614260385264740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/499614260385264740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/499614260385264740'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2009/10/activemq-ghost-consumers-just-in-time.html' title='ActiveMQ: Ghost consumers just in time for Halloween'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Qdamp1VhkKc/Ss9oZydNpoI/AAAAAAAAAEc/1VnLDL2GUcg/s72-c/amq_jconsole_100percent.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-6157743565313590415</id><published>2009-10-05T07:00:00.007-05:00</published><updated>2009-11-03T12:27:07.005-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><category scheme='http://www.blogger.com/atom/ns#' term='jconsole'/><title type='text'>JConsole has consoled me</title><content type='html'>A long and hard battle was fought tonight and finally victory is mine!  I set out to get a little further down the road of my understanding of ActiveMQ.  I have read all over the place that you can monitor AMQ with jconsole.  It should be so easy right?&lt;br /&gt;Type &lt;span style="font-weight: bold;"&gt;jconsole&lt;/span&gt; at the command prompt and slap &lt;span style="font-weight: bold;"&gt;service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi &lt;/span&gt;in the remote process box and whamo.&lt;br /&gt;&lt;br /&gt;Well "no soup for me".  In the words of the Pirates who don't do anything, "nothing, zilch, nodda".  At first I was getting a connection timeout and would get absolutely nowhere.  After a flurry of changes, it would actually connect but I didn't see the org.apache.activeMQ in the list on the left.&lt;br /&gt;&lt;br /&gt;I was looking through my activemq.xml in my conf directory and noticed this:&lt;br /&gt;&lt;pre class="code"&gt;&amp;lt;managementcontext&amp;gt;&lt;br /&gt;&amp;lt;managementcontext createconnector="false"&amp;gt;&lt;br /&gt;&amp;lt;/managementcontext&amp;gt;&lt;/pre&gt;Ok... lets turn that puppy on.  Now I start seeing this in the startup output of ActiveMQ:&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(51, 51, 153); font-weight: bold;font-size:85%;" &gt;&lt;/span&gt;WARNING: Failed to start jmx connector:&lt;br /&gt;Cannot bind to URL[rmi://localhost:1099/jmxrmi]&lt;br /&gt;:javax.naming.NameAlreadyBoundException:&lt;br /&gt;jmxrmi [Rootexception is&lt;br /&gt; java.rmi.AlreadyBoundException: jmxrmi]   &lt;/pre&gt;So... at least I saw something remotely familiar to me that is supposed to go in the Remote Process box.  But it seems that something else is on that port.  I started thinking about what else on my system might be using jmx.  I am running Apache Solr.  Let's shut that down and see if it starts up.  Nope.  Nodda.  Oh wait, how about Jrun.  There was coldfusion and jrun stuff in the left pane of jconsole.  After I shut down jrun and restarted ActiveMQ, finally it magically appeared.  A thing of beauty.&lt;br /&gt;&lt;pre class="code"&gt;INFO  ManagementContext - JMX consoles can connect&lt;br /&gt;to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi&lt;/pre&gt; Now we still have an issue.  Obviously if I'm going to be using coldfusion and ActiveMQ together, they need to learn to get along.  All we have to do is add an attribute to the managementContext node in conf/activemq.xml:&lt;br /&gt;&lt;pre class="code"&gt;&amp;lt;managementcontext&amp;gt;&lt;br /&gt;&amp;lt;managementcontext createconnector="true" connectorport="1199"&amp;gt;&lt;br /&gt;&amp;lt;/managementcontext&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Now restart ActiveMQ and start coldfusion back up and you should be able to view ActiveMQ behind the scenes through jconsole.  Now were cookin with gas.&lt;br /&gt;&lt;br /&gt;Ultimately I'd like to be able to connect to JMX via java in CF to get things like queue count and connection status.  We've been seeing some strangeness when CF dies due to java heap space errors that CF and AMQ will just stop talking to each other after the instance comes back up.  If I cycle the CF instance, then consumer counts go back to normal and they start talking again.  Communication is key to any good relationship, especially when clients are riding on it.&lt;br /&gt;&lt;br /&gt;Speaking of communication, how has your's been with Jesus? Your eternity is riding on it.&lt;br /&gt;&lt;br /&gt;Blessings,&lt;br /&gt;Terry&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-6157743565313590415?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/6157743565313590415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=6157743565313590415' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/6157743565313590415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/6157743565313590415'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2009/10/jconsole-has-consoled-me.html' title='JConsole has consoled me'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-8691150613687566032</id><published>2009-09-29T11:23:00.007-05:00</published><updated>2009-11-03T12:28:47.467-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='object'/><category scheme='http://www.blogger.com/atom/ns#' term='struct'/><category scheme='http://www.blogger.com/atom/ns#' term='cfcatch'/><title type='text'>CFCatch me if you can</title><content type='html'>One thing that really annoys me with the cfcatch struct/object (or whatever its pretending to be) is trying to use one of the keys and have it not exist. There have been a few times where I simply want to log cfcatch.detail and it's undefined, throwing a hard error. To me, if it's documented that it is going to be available, it should at least be available as an empty string.  I set out this morning looking for a clean way of param'ing some of the keys in cfcatch.  Since it doesn't seem to be a true struct, you can't simply do:&lt;br /&gt;&lt;pre class="code"&gt;&amp;lt;cfparam name="cfcatch.detail" default="" /&amp;gt;&lt;/pre&gt;That would be way too easy.  I found a couple places that suggested using duplicate() to make it act like a struct.  I tried that too, and you still can't do a cfparam on it.  The key simply won't exist.&lt;br /&gt;&lt;br /&gt;After much googling, I came across this &lt;a href="http://www.opensubscriber.com/message/cf-talk@houseoffusion.com/9647417.html" target="_blank"&gt;post&lt;/a&gt; by Isaac Dealey.  So using that idea, I created the following function:&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;cffunction name="structifyCatch" returntype="struct"&amp;gt;&lt;br /&gt;   &amp;lt;cfargument name="catch" type="any" required="true"/&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;cfset var err = structnew() /&amp;gt; &lt;br /&gt;   &amp;lt;cfset structappend(err,arguments.catch,true) /&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;cfreturn err /&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/cffunction&amp;gt;&lt;br /&gt;&lt;/pre&gt;then to implement it, you call the following:&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&amp;lt;cftry&amp;gt;&lt;br /&gt;   ... some code ...&lt;br /&gt;   &amp;lt;cfcatch&amp;gt;&lt;br /&gt;     &amp;lt;cfset cfcatch = structifyCatch(cfcatch) /&amp;gt;&lt;br /&gt;     &amp;lt;cfparam name="cfcatch.message" default=""/&amp;gt;&lt;br /&gt;     &amp;lt;cfparam name="cfcatch.detail" default=""/&amp;gt;&lt;br /&gt;     &amp;lt;cflog text="There was an error in somecode().&lt;br /&gt;        Message: #cfcatch.message# Detail: #cfcatch.Detail#"&lt;br /&gt;       application="yes"&amp;gt;&lt;br /&gt;   &amp;lt;/cfcatch&amp;gt;&lt;br /&gt; &amp;lt;/cftry&amp;gt;&lt;br /&gt;&lt;/pre&gt;Hopefully this will save you a little bit of angst.&lt;br /&gt;There are some interesting behaviors documented here too:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://hjcotton.net/?p=116" rel="bookmark" title="Permanent Link to cfcatch was born a struct, then it wasn’t but now it’s back" target="_blank"&gt;cfcatch was born a struct, then it wasn’t but now it’s back&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Blessings,&lt;br /&gt;Terry&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-8691150613687566032?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/8691150613687566032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=8691150613687566032' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/8691150613687566032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/8691150613687566032'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2009/09/cfcatch-me-if-you-can.html' title='CFCatch me if you can'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-5121761540794445200</id><published>2009-09-23T11:54:00.007-05:00</published><updated>2009-11-03T12:31:09.492-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><title type='text'>Straight talk with ActiveMQ</title><content type='html'>I found that filling an ActiveMQ queue through a cfml gateway was extremely inefficient when sending a large number of messages at once.  Here is the code to send messages directly to the queue via java.  This was a little difficult to find this documented anywhere.  I had to pull in bits an pieces from different code examples.&lt;br /&gt;&lt;pre class="code"&gt;&amp;lt;cfset mess = structnew() /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfquery name="rs" datasource="dsn"&amp;gt;&lt;br /&gt;select id from mytable&lt;br /&gt;&amp;lt;/cfquery&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfscript&amp;gt;&lt;br /&gt; connectionFactory = createobject(&lt;br /&gt;           'java'&lt;br /&gt;           ,'org.apache.activemq.ActiveMQConnectionFactory'&lt;br /&gt; ).init('','', 'tcp://#amqServer#:#amqPort#?jms.useAsyncSend=true');&lt;br /&gt;&lt;br /&gt; connection = connectionFactory.createConnection();&lt;br /&gt; connection.start();&lt;br /&gt; // createSession(transacted, session.auto_acknowledge)&lt;br /&gt; javasession = connection.createSession(false, 1);&lt;br /&gt; destination = javasession.createQueue("queuename");&lt;br /&gt; producer = javasession.createProducer(destination);&lt;br /&gt;&amp;lt;/cfscript&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfloop query="rs"&amp;gt;&lt;br /&gt;&amp;lt;cfset mess.agentid = rs.id /&amp;gt;&lt;br /&gt; &amp;lt;cfwddx action="cfml2wddx" input="#mess#" output="strMess"&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;!--- Send message to activeMQ through our opened channel ---&amp;gt;&lt;br /&gt; &amp;lt;cfscript&amp;gt;&lt;br /&gt;    message = javasession.createTextMessage(strMess);&lt;br /&gt;    producer.send(destination,message);&lt;br /&gt; &amp;lt;/cfscript&amp;gt;&lt;br /&gt;&amp;lt;/cfloop&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--- close up connections with activeMQ now that we are done with the channel ---&amp;gt;&lt;br /&gt;&amp;lt;cfscript&amp;gt;&lt;br /&gt; producer.close(); &lt;br /&gt; javasession.close();&lt;br /&gt; connection.close();&lt;br /&gt;&amp;lt;/cfscript&amp;gt;&lt;span style="color: rgb(204, 0, 0);font-size:85%;" &gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Blessings,&lt;br /&gt;Terry&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-5121761540794445200?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/5121761540794445200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=5121761540794445200' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/5121761540794445200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/5121761540794445200'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2009/09/straight-talk-with-activemq.html' title='Straight talk with ActiveMQ'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-7846409683373089731</id><published>2009-09-23T10:57:00.014-05:00</published><updated>2009-11-03T12:33:05.906-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java file encoding'/><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='cfmail'/><category scheme='http://www.blogger.com/atom/ns#' term='spool to disk'/><category scheme='http://www.blogger.com/atom/ns#' term='default encoding'/><category scheme='http://www.blogger.com/atom/ns#' term='cp1252'/><category scheme='http://www.blogger.com/atom/ns#' term='uft-8'/><title type='text'>Lost in translation: The Encoding Experience</title><content type='html'>I had written an undelivr folder viewer about a month back.  We started testing some special chars through our mailing app recently and found that &lt;span style="font-weight: bold;"&gt;Programów&lt;/span&gt; was becoming &lt;span style="font-weight: bold;"&gt;ProgramÃ³w&lt;/span&gt;.  We figured it had something to do with encoding.  I checked the cfadmin setting for the default mail encoding and it was UTF-8.  That should have been ok.  I tried hardcoding charset="UTF-8" in the cfmail tag to see if that would help.  Same results.&lt;br /&gt;&lt;br /&gt;So then I switched gears to my local dev server and wrote up this quick script.&lt;br /&gt;&lt;pre class="code"&gt;&amp;lt;cfset str ="Programów"/&amp;gt;&lt;br /&gt;&amp;lt;cfmail from="a@b.com" to="a@c.com" subject="1.0" charset="utf-8"&amp;gt;&lt;br /&gt;#str#&lt;br /&gt;&amp;lt;/cfmail&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This works perfectly fine in my local dev.  When I threw this script on the server it still got mangled.  So now we're dealing with an environment issue.  I'm running Ubuntu locally and we are running windows on the server.  So I started digging into the settings in cfadmin.  I took the settings summary from both servers and threw it into Kompare.  One of the differences I saw right away was the &lt;span style="font-weight: bold;"&gt;Java File Encoding&lt;/span&gt;. On the server it was set to cp1252 and on my Linux it was UTF-8.  After much searching, I was able to track down how to change the JVM's default file encoding here: &lt;a href="http://yaojingguo.blogspot.com/2009/02/javas-fileencoding-property-on-windows.html" target="_blank"&gt;Java's file.encoding property on Windows platform&lt;/a&gt;.  After adding &lt;span style="font-weight: bold;"&gt;-Dfile.encoding=UTF-8&lt;/span&gt; to the jvm's server.args (typically found in jrun4/bin/jvm.conf), I restarted the instance and re-ran the test.  Bingo, the special chars were preserved.&lt;br /&gt;&lt;br /&gt;There must be an issue with some special chars moving from UTF-8 to cp1252 or vice versa.  I just ran a test and this does affect all emails if you are spooling to disk.  My assumption is that under the covers, java is writing the file using the default JVM file encoding, not the default coding set for the cfmail tag.  This makes the cfmail default setting a little misleading. At any rate, setting the JVM encoding to UTF-8 did the trick.&lt;br /&gt;&lt;br /&gt;Blessings,&lt;br /&gt;Terry&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-7846409683373089731?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/7846409683373089731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=7846409683373089731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/7846409683373089731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/7846409683373089731'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2009/09/lost-in-translation.html' title='Lost in translation: The Encoding Experience'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-4640054318679640828</id><published>2009-09-10T15:05:00.008-05:00</published><updated>2009-11-03T12:35:20.881-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='J2eeSessionScopeStub'/><title type='text'>Hot under the hotfix..</title><content type='html'>We ran into an error today on one of our dev servers.&lt;br /&gt;&lt;pre class="code"&gt;coldfusion.runtime.J2eeSessionScopeStub cannot&lt;br /&gt;be cast to coldfusion.runtime.J2eeSessionScopeStub&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We had recently patched that server with "&lt;a href="http://kb2.adobe.com/cps/511/cpsid_51180.html" target="_blank"&gt;&lt;span style="font-weight: bold;"&gt;Cumulative Hot Fix 3 for ColdFusion 8.0.1&lt;/span&gt;&lt;/a&gt;"  That was really the only thing that changed with the server before getting the error.  I went into JRun4\servers\{instancename}\cfusion.ear\cfusion.war\WEB-INF\cfusion\lib\updates and removed &lt;span style="font-weight: bold;"&gt;chf8010003.jar&lt;/span&gt;.  After restarting the instance, things came up normal.  I thought that maybe the file we downloaded was corrupt so I grabbed a fresh copy.  That file didn't work either.  The head scratcher in this is that we installed the patch on other instances with no problems.  Not sure what is so unique with this instance, but it just doesn't jive with the new hotfix.&lt;br /&gt;&lt;br /&gt;here is the stack:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;18840   java.lang.ClassCastException: coldfusion.runtime.J2eeSessionScopeStub cannot be cast to coldfusion.runtime.J2eeSessionScopeStub&lt;br /&gt;18841  at coldfusion.runtime.SessionTracker.getSession(SessionTracker.java:76)&lt;br /&gt;18842  at coldfusion.runtime.AppHelper.setupJ2eeSessionScope(AppHelper.java:528)&lt;br /&gt;18843  at coldfusion.runtime.AppHelper.setupSessionScope(AppHelper.java:592)&lt;br /&gt;18844  at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:235)&lt;br /&gt;18845  at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)&lt;br /&gt;18846  at coldfusion.filter.PathFilter.invoke(PathFilter.java:86)&lt;br /&gt;18847  at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)&lt;br /&gt;18848  at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:74)&lt;br /&gt;18849  at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)&lt;br /&gt;18850  at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)&lt;br /&gt;18851  at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)&lt;br /&gt;18852  at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)&lt;br /&gt;18853  at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)&lt;br /&gt;18854  at coldfusion.CfmServlet.service(CfmServlet.java:175)&lt;br /&gt;18855  at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)&lt;br /&gt;18856  at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)&lt;br /&gt;18857  at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)&lt;br /&gt;18858  at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)&lt;br /&gt;18859  at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)&lt;br /&gt;18860  at jrun.servlet.FilterChain.service(FilterChain.java:101)&lt;br /&gt;18861  at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)&lt;br /&gt;18862  at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)&lt;br /&gt;18863  at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286)&lt;br /&gt;18864  at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)&lt;br /&gt;18865  at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)&lt;br /&gt;18866  at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)&lt;br /&gt;18867  at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66) &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-4640054318679640828?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/4640054318679640828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=4640054318679640828' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/4640054318679640828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/4640054318679640828'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2009/09/hot-under-hotfix.html' title='Hot under the hotfix..'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-1816130756850282229</id><published>2009-09-08T10:12:00.007-05:00</published><updated>2009-09-08T14:38:33.301-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kununtu'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='broken'/><category scheme='http://www.blogger.com/atom/ns#' term='blank window'/><category scheme='http://www.blogger.com/atom/ns#' term='keepassx'/><category scheme='http://www.blogger.com/atom/ns#' term='keepass'/><category scheme='http://www.blogger.com/atom/ns#' term='blank pane'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Keepass Conundrum</title><content type='html'>I'm running Keepass on Kubuntu 8.10.  Somewhere along the way &lt;span style="font-weight: bold;"&gt;Keepass  stopped working&lt;/span&gt; for me.  I could open the program and log in successfully.  I could even see the groups on the left hand side of the window.  What I could NOT see were the entries with their logins and passwords on the right.  All I would get was a &lt;span style="font-weight: bold;"&gt;blank gray pane on the right&lt;/span&gt;. I tried a bunch of things including upgrading to KeepassX 0.4.0.  Nothing worked. Fortunately there is a very simple solution to this.  If you are experiencing the same thing, look very closely at the bottom of the right hand pane.  &lt;span style="font-weight: bold;"&gt;You will see three little dots.  Click that and drag upwards.&lt;/span&gt;  Voila! There are all of your entries that you missed so dearly.  Not sure if this was a bug with KDE and Keepass or what, but I sure was glad to find the fix on a blog somewhere.  Thought I'd share the love here too.&lt;br /&gt;&lt;br /&gt;Blessings,&lt;br /&gt;Teeps&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-1816130756850282229?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/1816130756850282229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=1816130756850282229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/1816130756850282229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/1816130756850282229'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2009/09/keepass-conundrum.html' title='Keepass Conundrum'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-3805886003160568641</id><published>2009-01-08T08:49:00.005-06:00</published><updated>2009-09-10T15:18:14.872-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='fusebox'/><title type='text'>Eclipse Annoyance</title><content type='html'>I truely appreciate eclipse as the ide for CF development.  I've had a slight annoyance with it though since recently moving to a linux dev environment.  In short, everytime I did a text search.... I would get an annoying little error box popping up saying:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Qdamp1VhkKc/SWYUl0J-IaI/AAAAAAAAADw/TKoxZlpOLno/s1600-h/eclipseError.jpg"&gt;&lt;img style="cursor: pointer; width: 303px; height: 121px;" src="http://2.bp.blogspot.com/_Qdamp1VhkKc/SWYUl0J-IaI/AAAAAAAAADw/TKoxZlpOLno/s400/eclipseError.jpg" alt="" id="BLOGGER_PHOTO_ID_5288937452281405858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Looking at the details of the error... I see the following:&lt;br /&gt;"resource is out of sync with the file system"&lt;br /&gt;&lt;br /&gt;After digging around a bit on google I found that this generally occurs when a file is changed/added outside of eclipse and it has, just as the error states, become out of sync with the file system.  The solution is to refresh the project so that it picks up the changed/new files.  If outside processes frequently change files outside of your eclipse, you can have eclipse automatically refresh the project by going to Window &gt; Preferences and in General &gt; Workspace.  Check the box that says "Refresh Automatically".  We use the fusebox framework which compiles the code into the parsed folder.  So in development mode, the parsed folder has changed/new files all the time.&lt;br /&gt;&lt;br /&gt;Well... I made this change and it still didn't work for me.  I don't know if its something unique with linux or just a bug or what, but refreshing the parsed folder and setting refresh automatically did absolutely nothing to resolve the issue.&lt;br /&gt;&lt;br /&gt;Then I had a duh moment.  For my text search, I have it search in a working set.  Why don't I just exclude the parsed folder from the working set.  I don't really need to look in the parsed folder anyway.  Sheesh, sometimes we can make things way harder than they need to be.  So... Search &gt; File... (or Cntrl-H for me)  Then on the "Working set:" line, click "Choose...".  I'm working with "Selected Working Sets".  I edited my working set and under the "Working set contents" area I drilled down to the parsed folder in the relavent resource and unchecked it.  Bingo... no more errors.&lt;br /&gt;&lt;br /&gt;Hope this helps...&lt;br /&gt;God Bless&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-3805886003160568641?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/3805886003160568641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=3805886003160568641' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/3805886003160568641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/3805886003160568641'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2009/01/eclipse-annoyance.html' title='Eclipse Annoyance'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Qdamp1VhkKc/SWYUl0J-IaI/AAAAAAAAADw/TKoxZlpOLno/s72-c/eclipseError.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-1118694839265160542</id><published>2008-09-26T11:48:00.006-05:00</published><updated>2009-11-03T12:38:53.155-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='instantiation'/><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='object'/><category scheme='http://www.blogger.com/atom/ns#' term='cf8'/><category scheme='http://www.blogger.com/atom/ns#' term='exception'/><category scheme='http://www.blogger.com/atom/ns#' term='update'/><category scheme='http://www.blogger.com/atom/ns#' term='coldspring'/><title type='text'>Coldspring stopped me cold..</title><content type='html'>We just recently upgraded to Coldspring 1.2 and it wasn't long before I came to a grinding halt the next time that I needed to restart my CF instance.  I got the following error:&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;Object Instantiation Exception&lt;br /&gt;An exception occurred when instantiating a Java object.&lt;br /&gt;The class must not be an interface or an abstract class. Error: ''.&lt;br /&gt;&lt;br /&gt;The error occurred in C:\websites\coldspring\beans\AbstractBeanFactory.cfc: line 253&lt;br /&gt;&lt;/pre&gt;Our beta system wasn't having the same issues, so I decided to look at what might be different in the two environments.  I found that I was still on 8.0.0 (doh!).  So I went to &lt;a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=kb403277&amp;amp;sliceId=1"&gt;http://kb.adobe.com/selfservice/viewContent.do?externalId=kb403277&amp;amp;sliceId=1&lt;/a&gt; and upgraded.&lt;br /&gt;&lt;br /&gt;That worked right?  Wrong!  Though it was good for me to get up to speed with the proper version, it did nothing in getting me back to productivity.  I browsed some more on some blogs with pieces of the error message and came across a blog that seemed to think this error happend when some nulls were being thrown around when it expected actual values.  I looked at this line in the &lt;span style="font-weight: bold;"&gt;loadFrameworkProperties &lt;/span&gt;method in &lt;span style="font-weight: bold;"&gt;Coldspring/beans/AbstractBeanFactory.cfc&lt;/span&gt;:&lt;br /&gt;&lt;pre class="code"&gt;&lt;br /&gt;&amp;lt;cfset local.fileStream = CreateObject('java', 'java.io.FileInputStream').init(arguments.propertiesFile) /&amp;gt;&lt;br /&gt;&lt;/pre&gt;... which caused me to look in the initial code or the &lt;span style="font-weight: bold;"&gt;AbstractBeanFactory.cfc&lt;/span&gt; file here:&lt;br /&gt;&lt;pre class="code"&gt;&amp;lt;!--- ColdSpring Framework Properties ---&amp;gt;&lt;br /&gt;&amp;lt;cfset variables.instanceData.frameworkPropertiesFile&lt;br /&gt;       = "/coldspring/frameworkProperties.properties" /&amp;gt;&lt;br /&gt;&amp;lt;cfset variables.instanceData.frameworkProperties&lt;br /&gt;       = loadFrameworkProperties(ExpandPath(variables.instanceData.frameworkPropertiesFile)) /&amp;gt;&lt;br /&gt;&lt;/pre&gt;So I looked for the .properties file in the /coldspring directory and found nodda.  I plugged an empty file into the coldspring directory by the name of &lt;span style="font-weight: bold;"&gt;frameworkProperties.properties&lt;/span&gt; and I was back in business.&lt;br /&gt;&lt;br /&gt;Hope this helps.&lt;br /&gt;&lt;br /&gt;Blessings...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-1118694839265160542?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/1118694839265160542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=1118694839265160542' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/1118694839265160542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/1118694839265160542'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2008/09/coldspring-stopped-me-cold.html' title='Coldspring stopped me cold..'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-4827504838098692771</id><published>2008-09-23T14:30:00.005-05:00</published><updated>2009-11-03T12:54:23.298-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='onsessionend'/><category scheme='http://www.blogger.com/atom/ns#' term='session cleanup'/><category scheme='http://www.blogger.com/atom/ns#' term='session management'/><title type='text'>I shot the session...</title><content type='html'>I was reading across a couple of old blogs recently about the need to kill a session immediately rather than waiting for it to timeout.  If you are using J2EE sessions, the session will be orphaned when the browser is closed but the session still lives on until it eventually times out according to the time set for your application.  There may be a need to clear out some of those sessions when you're sure they are orphans.  Maybe you have a user that is logging in from another workstation and would like to clear out the other session so that you don't have the same user logged in twice.  Whatever your reason, there is a way to immediately clear out the session and still have the onSessionEnd execute in your Application.cfc.  Try this little piece of code:&lt;br /&gt;&lt;pre class="code"&gt;&amp;lt;!--- get the session id by working with the session tracker ---&amp;gt;&lt;br /&gt;   &amp;lt;cfset _sessionid =  '74306b9b10b4c354a8db101f73246434611b'/&amp;gt;&lt;br /&gt;   &amp;lt;cfset  killSession(application.applicationname,_sessionid)/&amp;gt;&lt;br /&gt;  &lt;br /&gt;   &amp;lt;cffunction name="killSession" output="false"&lt;br /&gt;         access="public" returntype="void"&amp;gt;&lt;br /&gt;       &amp;lt;cfargument name="appName" required="true" type="string" /&amp;gt;&lt;br /&gt;       &amp;lt;cfargument name="sessionid" required="true" type="string" /&amp;gt;&lt;br /&gt;     &lt;br /&gt;       &amp;lt;cfset var st = &lt;br /&gt;        createobject("java","coldfusion.runtime.SessionTracker") /&amp;gt;  &lt;br /&gt;       &amp;lt;cfset st.cleanUp(arguments.appName,arguments.sessionid) /&amp;gt;&lt;br /&gt;         &lt;br /&gt;   &amp;lt;/cffunction&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;If you do not have J2EE sessions enabled, you can call &lt;span class="look"&gt;cleanUp(application.applicationName, _cfid, _cftoken)&lt;/span&gt;. &lt;span style="font-style: italic;"&gt;&lt;br /&gt;Note: I haven't tested this one yet.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This will successfully remove that session.  It will also execute any onSessionEnd code that you have to take care of any cleanup scripts that you have.  This is an undocumented method of sessionTracker so use with caution knowing that things could change.  I'm not sure if this works in versions before CF8.  I would be interested in knowing, if someone would be so kind as to test it.&lt;br /&gt;&lt;br /&gt;Blessings...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-4827504838098692771?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/4827504838098692771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=4827504838098692771' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/4827504838098692771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/4827504838098692771'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2008/09/i-shot-session.html' title='I shot the session...'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-4537419852552310380</id><published>2008-09-22T09:54:00.012-05:00</published><updated>2009-11-03T12:59:10.072-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='reflection'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='getValueWithoutChange'/><category scheme='http://www.blogger.com/atom/ns#' term='session'/><category scheme='http://www.blogger.com/atom/ns#' term='session management'/><title type='text'>Undocumented Goodness</title><content type='html'>In working on a project the other day, I needed to allow users to interact with data in such a way that they were not tripping over each other.  This led me down the path toward a proof of concept with monitoring sessions for a particular application.  The problem is that when you "touch" the sessionScope methods it will reset the session timeout and keep dead sessions alive.  This can be countered by calling the methods using reflection like so:&lt;br /&gt;&lt;pre class="code"&gt;&amp;lt;cfset tracker=createObject("java","coldfusion.runtime.SessionTracker")&amp;gt;&lt;br /&gt;&amp;lt;cfset sessions=tracker.getSessionCollection(application.applicationname)&amp;gt;&lt;br /&gt;&amp;lt;cfoutput&amp;gt;&lt;br /&gt;&amp;lt;cfloop item="loopSession" collection="#sessions#"&amp;gt;&lt;br /&gt;Idle Time:&lt;br /&gt;#getSessionProxy(sessions[loopsession],'getTimeSinceLastAccess')#&amp;lt;br/&amp;gt;&lt;br /&gt;&amp;lt;/cfloop&amp;gt;&lt;br /&gt;&amp;lt;/cfoutput&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cffunction name="getSessionProxy"&lt;br /&gt;output="false" access="public" returntype="string"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfargument name="session" required="true" type="struct" /&amp;gt;&lt;br /&gt;&amp;lt;cfargument name="method" required="true" type="string" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfset var _a = arrayNew(1)/&amp;gt;&lt;br /&gt;&amp;lt;cfset var _sessionClass =&lt;br /&gt;_a.getClass().forName("coldfusion.runtime.SessionScope") /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfset var _method = ''/&amp;gt;&lt;br /&gt;&amp;lt;cfset var _value = ''/&amp;gt;&lt;br /&gt;&amp;lt;cftry&amp;gt;&lt;br /&gt;&amp;lt;cfset _method =&lt;br /&gt; _sessionClass.getMethod(arguments.method, _a) /&amp;gt;&lt;br /&gt;&amp;lt;cfset _value = _method.invoke(arguments.session, _a)/&amp;gt;&lt;br /&gt;&amp;lt;cfcatch&amp;gt;&amp;lt;!--- Do Nothing ---&amp;gt;&amp;lt;/cfcatch&amp;gt;&lt;br /&gt;&amp;lt;/cftry&amp;gt;&lt;br /&gt;&amp;lt;cfreturn _value /&amp;gt;&lt;br /&gt;&amp;lt;/cffunction&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;That works great and is very valuable data, but what if you need to find out what the session.idofuser is on one of those sessions or another session variable that you need access too?  There really is no reflected function that gives you access to those variables without touching the session timeout.  You could do sessions[loopSession].idofuser but that would trip the session.  Even a cfdump of the sessions collection trips the session.  I couldn't find this documented on blogs or anywhere else, but there is a new sessionScope method going by the name of "getValueWIthoutChange".  This must be new in CF8.  I'm guessing one reason it was added is for the server monitor which gives you access to this info without touching the session timeout.   If you google this method, you get absolutely 0 results.  When I saw that in the dump of the sessionScope class, I knew there was hope.  Important to note too is that Java is very case sensitive.  Notice that the W and I are capped in "WIthout".  Typo that made it through?  Anywho, my next challange was finding the correct casting and such to be able to pass a var into the reflected getValueWIthoutChange method from CF.  I flailed on this for about a day before I took this to a co-worker that was a java guy in a past life.  He had it nailed down for me in a 1/2 hour or so.  Long story short, we ended up with a method that will allow you to get any session var without touching the sessions.  This is a beautiful thing and opens up all kinds of possibilities.&lt;br /&gt;&lt;pre class="code"&gt;&amp;lt;cfset tracker=createObject("java","coldfusion.runtime.SessionTracker")&amp;gt;&lt;br /&gt;&amp;lt;cfset sessions=tracker.getSessionCollection(application.applicationname)&amp;gt;&lt;br /&gt;&amp;lt;cfoutput&amp;gt;&lt;br /&gt;&amp;lt;cfloop item="loopSession" collection="#sessions#"&amp;gt;&lt;br /&gt;Idle Time:&lt;br /&gt;#getSessionProxy(sessions[loopsession],'getTimeSinceLastAccess')#&amp;lt;br/&amp;gt;&lt;br /&gt;User ID:&lt;br /&gt;#getSessionValue(sessions[loopsession],'idofuser')#&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;&amp;lt;/cfloop&amp;gt;&lt;br /&gt;&amp;lt;/cfoutput&amp;gt;&lt;/pre&gt;&lt;pre class="code"&gt;&amp;lt;cffunction name="getSessionValue"&lt;br /&gt;output="false" access="public" returntype="any"&amp;gt;&lt;br /&gt;&amp;lt;cfargument name="session" required="true" type="struct" /&amp;gt;&lt;br /&gt;&amp;lt;cfargument name="key" required="true" type="string" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfset var a = arrayNew(1)/&amp;gt;&lt;br /&gt;&amp;lt;cfset var valueMethod =  ''/&amp;gt;&lt;br /&gt;&amp;lt;cfset var value =  ''/&amp;gt;&lt;br /&gt;&amp;lt;cfset var sessionClass =&lt;br /&gt;a.getClass().forName("coldfusion.runtime.SessionScope") /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cftry&amp;gt;&lt;br /&gt;&amp;lt;cfset a[1] =&lt;br /&gt;CreateObject("java","java.lang.String").GetClass()/&amp;gt;&lt;br /&gt;&amp;lt;cfset valueMethod =&lt;br /&gt;sessionClass.getMethod("getValueWIthoutChange",a) /&amp;gt;&lt;br /&gt;&amp;lt;cfset a[1] =&lt;br /&gt;CreateObject("java","java.lang.String").Init(arguments.key)/&amp;gt;&lt;br /&gt;&amp;lt;cfif findnocase(arguments.key,structkeylist(arguments.session))&amp;gt;&lt;br /&gt;&amp;lt;cfset value = valueMethod.invoke(arguments.session, a)/&amp;gt;&lt;br /&gt;&amp;lt;cfelse&amp;gt;&lt;br /&gt;&amp;lt;cfset value = ''/&amp;gt;&lt;br /&gt;&amp;lt;/cfif&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfcatch&amp;gt;&amp;lt;!--- Do Nothing ---&amp;gt;&amp;lt;/cfcatch&amp;gt;&lt;br /&gt;&amp;lt;/cftry&amp;gt;&lt;br /&gt;&amp;lt;cfreturn value /&amp;gt;&lt;br /&gt;&amp;lt;/cffunction&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&amp;lt;cffunction name="getSessionProxy"&lt;br /&gt;output="false" access="public" returntype="string"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfargument name="session" required="true" type="struct" /&amp;gt;&lt;br /&gt;&amp;lt;cfargument name="method" required="true" type="string" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfset var _a = arrayNew(1)/&amp;gt;&lt;br /&gt;&amp;lt;cfset var _sessionClass =&lt;br /&gt;_a.getClass().forName("coldfusion.runtime.SessionScope") /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;cfset var _method = ''/&amp;gt;&lt;br /&gt;&amp;lt;cfset var _value = ''/&amp;gt;&lt;br /&gt;&amp;lt;cftry&amp;gt;&lt;br /&gt;&amp;lt;cfset _method =&lt;br /&gt; _sessionClass.getMethod(arguments.method, _a) /&amp;gt;&lt;br /&gt;&amp;lt;cfset _value = _method.invoke(arguments.session, _a)/&amp;gt;&lt;br /&gt;&amp;lt;cfcatch&amp;gt;&amp;lt;!--- Do Nothing ---&amp;gt;&amp;lt;/cfcatch&amp;gt;&lt;br /&gt;&amp;lt;/cftry&amp;gt;&lt;br /&gt;&amp;lt;cfreturn _value /&amp;gt;&lt;br /&gt;&amp;lt;/cffunction&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now, as an important note and as has been echoed on other blogs, this is an undocumented method and the farm should not be bet on it.  There is no guarantee that it will live on in other versions of CF so use wisely.&lt;br /&gt;&lt;br /&gt;With that said, praise God for technology and go change the world.&lt;br /&gt;&lt;br /&gt;Blessings...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-4537419852552310380?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/4537419852552310380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=4537419852552310380' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/4537419852552310380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/4537419852552310380'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2008/09/undocumented-goodness.html' title='Undocumented Goodness'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-8841729741820717195</id><published>2008-09-12T15:59:00.009-05:00</published><updated>2009-09-10T15:20:37.616-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><category scheme='http://www.blogger.com/atom/ns#' term='validate telephone'/><category scheme='http://www.blogger.com/atom/ns#' term='cfinput'/><title type='text'>RegEx broke my phone</title><content type='html'>We had a bug turned in on a form that was not accepting valid phone numbers, or so it seemed. The number used was something like 233-122-2323.  Looks like a valid phone number right?  I dug into the form field and found that it was a cfinput tag utilizing the validate="telephone".  We recently moved to CF8 and I was wondering if this was a CF8 issue that was somehow unique.  I looked at the generated source in order to evaluate the resulting js that is used to validate the form on submit.  That led me to this code:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);font-size:78%;" &gt;//form element phone 'TELEPHONE' validation checks&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);font-size:78%;" &gt;if (!_CF_checkphone(_CF_this['phone'].value, true))&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);font-size:78%;" &gt;{&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);font-size:78%;" &gt; alert(_CF_this['phone'].value)&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);font-size:78%;" &gt;  _CF_onError(_CF_this, "phone", _CF_this['phone'].value, "A valid phone number is required.");&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);font-size:78%;" &gt;  _CF_error_exists = true;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);font-size:78%;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;We can find the code for _CF_checkphone buried in this file, depending on your instance:&lt;br /&gt;&lt;blockquote style="color: rgb(204, 0, 0);"&gt;&lt;span style="font-size:85%;"&gt;\JRUN4\servers\[instance]\cfusion-ear\cfusion-war\CFIDE\scripts\cfform.js&lt;/span&gt;&lt;/blockquote&gt;Finding the function in this file revealed the regular expression that is being used to validate phone number.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;/^((&lt;/span&gt;&lt;span style="background: yellow none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-size:85%;" &gt;(1)&lt;/span&gt;&lt;span style="font-size:85%;"&gt;)?[,\-,\.]?([\\(]?(&lt;/span&gt;&lt;span style="background: lime none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-size:85%;" &gt;[1-9]&lt;/span&gt;&lt;span style="background: silver none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-size:85%;" &gt;[0-9]{2}&lt;/span&gt;&lt;span style="font-size:85%;"&gt;)[\\)]?))?[,\-,\.]?(&lt;/span&gt;&lt;span style="background: aqua none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-size:85%;" &gt;[^0-1]){1}&lt;/span&gt;&lt;span style="font-size:85%;"&gt;(&lt;/span&gt;&lt;span style="background: gray none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-size:85%;" &gt;[0-9]){2}&lt;/span&gt;&lt;span style="font-size:85%;"&gt;[ ,\-,\.]?(&lt;/span&gt;&lt;span style="background: fuchsia none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-size:85%;" &gt;[0-9]){4}&lt;/span&gt;&lt;span style="font-size:85%;"&gt;(()((x){0,1}([0-9]){1,5}){0,1})?$/&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="background: yellow none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-size:100%;" &gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="background: yellow none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-size:100%;" &gt;&lt;span style="font-size:85%;"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;-&lt;span style="background: lime none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;8&lt;/span&gt;&lt;span style="background: silver none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;00&lt;/span&gt;-&lt;span style="background: aqua none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;3&lt;/span&gt;&lt;span style="background: gray none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;22&lt;/span&gt;-&lt;span style="background: fuchsia none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;5544&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt; or &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="background: lime none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;2&lt;/span&gt;&lt;span style="background: silver none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;20&lt;/span&gt;-&lt;span style="background: aqua none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;1&lt;/span&gt;&lt;span style="background: gray none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;22&lt;/span&gt;-&lt;span style="background: fuchsia none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;2323&lt;/span&gt; (the number used on the form)&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Now I'm not a regex guru nor do I work with it every day, so color coding is a definite help for me. There are some nice tools out there that can help you test regex both pay and free.  I've been playing with &lt;a href="http://www.download.com/RegExBuilder/3000-10252_4-10630067.html?tag=mncol&amp;amp;cdlPid=10672266"&gt;RegExBuilder&lt;/a&gt; (free) lately.  It doesn't have all the bells and whistles like being able to switch the regex engine, but it works for what I need right now. Anywho, let's break this down:&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="background: yellow none repeat scroll 0% 0%; -moz-background-inline-policy: -moz-initial; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial;"&gt;**&lt;/span&gt;&lt;span style="font-size:100%;"&gt;- the ? makes the 1 optional&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="background: lime none repeat scroll 0% 0%; -moz-background-inline-policy: -moz-initial; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial;"&gt;**&lt;/span&gt;&lt;span style="font-size:100%;"&gt;- this has to be a digit between 1 and 9, never 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="background: silver none repeat scroll 0% 0%; -moz-background-inline-policy: -moz-initial; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial;"&gt;**&lt;/span&gt;&lt;span style="font-size:100%;"&gt;- two digits that are between 0 and 9&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="background: aqua none repeat scroll 0% 0%; -moz-background-inline-policy: -moz-initial; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial;"&gt;**&lt;/span&gt;&lt;span style="font-size:100%;"&gt;- &lt;span style="font-weight: bold; font-style: italic;"&gt;any character&lt;/span&gt; that is not 0 or 1.  Surprisingly, this allows non digits&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="background: gray none repeat scroll 0% 0%; -moz-background-inline-policy: -moz-initial; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial;"&gt;**&lt;/span&gt;&lt;span style="font-size:100%;"&gt;- two digits that are between 0 and 9&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="background: fuchsia none repeat scroll 0% 0%; -moz-background-inline-policy: -moz-initial; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial;"&gt;**&lt;/span&gt;&lt;span style="font-size:100%;"&gt;- four digits that are between 0 and 9&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;So according to the test number that was entered in the test, it violates rule &lt;span style="background: aqua none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;**&lt;/span&gt;.&lt;br /&gt;The funny thing is that we could have entered anything else besides 0 or 1.  I tested 701-B86-5566 and it worked.  But anywho… I think this form is performing as expected, unless of course there are valid phone &lt;span style="font-size:100%;"&gt;numbers with the &lt;span style="background: aqua none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"&gt;**&lt;/span&gt; being 0 or 1.  I wouldn’t know where to find that info and a brief google session didn’t turn anything up.  I gave up quickly because didn't feel like digging into that right now.  I'll leave that up to a more ambitious person.  But the question to be answered is whether or not this should be reported as a bug and request Adobe to fix that regex in CF8 to be more accurate on the [^0-1] test.  Why not [2-9]?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Blessings...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-8841729741820717195?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/8841729741820717195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=8841729741820717195' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/8841729741820717195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/8841729741820717195'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2008/09/regex-broke-my-phone.html' title='RegEx broke my phone'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-1210393855221262339</id><published>2008-09-12T14:52:00.006-05:00</published><updated>2008-09-15T16:30:25.346-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion cfid cftoken jsessionid cflocation addtoken'/><title type='text'>Token Broken...</title><content type='html'>We ran into an issue today with cflocation.  In our system we pass users off to an ATS where they can apply to a job that they found from us.  It was working great for quite some time on all sites but two. This came to our attention today.  After looking at our system we boiled it down to a difference between two urls:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(102, 102, 102);"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;URL from our admin – this url worked if copied and hit straight from the browser&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;http://www.xxxxxxxxxx.com/index.cfm?xxxxxx=somecircuit.someFuseAction&amp;amp;RID=4920&amp;amp;CurrentPage=6&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resulting URL after going through our system:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;http://www.xxxxxxxxxx.com/index.cfm?xxxxxx=somecircuit.someFuseAction&amp;amp;RID=4920&amp;amp;CurrentPage=6&amp;amp;sid=35&amp;amp;CFID=1328925&amp;amp;CFTOKEN=76318564&amp;amp;jsessionid=8c30c6b3e5ea1acfccbb5a53384541664b4b&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;As you can see, the only difference is the extra url vars of cfid,cftoken, and jsessionid. Sid was a valid addition prior to the cflocation tag. So how would this break their ATS.  It doesn't take long looking at it before you realize that the ATS is powered by CF and the extra information is really only meant for our system.  Their system gets it and they have no such session as identified by the extra tokens.  So, we have to stop sending these variables over.&lt;br /&gt;&lt;br /&gt;I tracked this down to the point of redirect in this cflocation tag:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&amp;lt;cflocation url="#obj.URL#"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;change to&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);font-size:85%;" &gt;&amp;lt;cflocation url="#obj.URL#" addtoken="false" &amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;This was a simple fix by just adding addToken="false".  This will keep the cfid, cftoken, and jsessionid from being appended to the url and thus not interfere with the hand off to an outside cf system.  This isn't rocket science.  This is just a friendly reminder to mind your tokens.&lt;br /&gt;&lt;br /&gt;Blessings....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-1210393855221262339?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/1210393855221262339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=1210393855221262339' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/1210393855221262339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/1210393855221262339'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2008/09/token-broken.html' title='Token Broken...'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-2499446033810744737</id><published>2008-08-27T10:14:00.012-05:00</published><updated>2008-09-15T16:31:41.712-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='covenant eyes coldfusion double execution iis'/><title type='text'>Double execution, my bad</title><content type='html'>Yesterday was a bug fighting day for me.  I might add, twas a frustrating one at that.  Here's the scenario:&lt;br /&gt;&lt;br /&gt;We have a simple subscribe box allowing users to receive email updates for certain categories if a new job appears in that category.  If there is a new user, it should prompt them for their user info.  If it is an existing user, it should prompt them for their pin.  The problem that I was seeing is that a new user was being prompted for a pin, indicating that this was not a new user at all.  The odd part was that it worked in my dev environment but not in our beta or prod environments, same exact code.&lt;br /&gt;&lt;br /&gt;So... digging in, I set several cfdumps throughout the application followed by a cfabort.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(Side note:  for a cool way to view a stack trace from several levels deep, see &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.bennadel.com/blog/406-Determining-Which-Function-Called-This-Function-Using-ColdFusion-.htm" target="_blank"&gt;Ben Nadel&lt;/a&gt;&lt;span style="font-style: italic;"&gt;).&lt;/span&gt;&lt;br /&gt;I didn't really see anything from that info.  All it told me is somehow the record for the user was being created before the code I was observing.  That was a head scratcher because I was at the beginning of the code execution.  I looked all over the relevant pages for a cflocation or a window.location thinking that somehow it was being recursive. Nothing.  I looked at the fusebox parsed file and there was nothing in there that told me it was circling back.  Now what?  Since this was in beta and we didn't want to turn RDS on, I couldn't do the step through.  That wouldn't have helped me anyway knowing now what the issue was.  I did turn on debugging and that didn't give me much.  I decided to set up a sql trace and found that there was indeed a double execution going on but it simply wasn't showing in my browser.&lt;br /&gt;&lt;br /&gt;After lunch I came back and searched on coldfusion and some play on the words "double exexution" and found a blogging from the cf4 days about how some code was causing double execution on an image tag that had a non cfoutputted variable as the src.  The explanation came back that the browsesr was seeing the # and going back to the page again for the image causing it to run twice.  That got me to thinking.  Maybe I should be looking in the iis logs.  Sure enough, there it was:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;2008-08-26 19:41:27 ******** GET ****** 80 - 69.41.14.80&lt;span style="font-weight: bold;"&gt; libcurl-agent&lt;/span&gt;/1.0 200 0 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;2008-08-26 19:41:31 ******** GET ****** 80 - ***.***.***.*** Mozilla/5.0+(Windows;+U;+Windows+NT+5.1;+en-US;+rv:1.9.0.1)+Gecko/2008070208+Firefox/3.0.1 200 0 0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One was my browser... but before that was a libcurl-agent.  What was that?  I was thinking it was some of our data gathering visit trackers but I came up empty googling libcurl in combo with their names.  Finally I researched the ip.  Using &lt;a href="http://www.blogger.com/arin.net"&gt;arin.net&lt;/a&gt;, I found that this "bot" belonged to&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Michigan Online Group MOG-69-41-0-0 (NET-69-41-0-0-1) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;69.41.0.0 - 69.41.15.255&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Covenant Eyes, Inc&lt;/span&gt;. MOG-69-41-14-0 (NET-69-41-14-0-1) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;                                 69.41.14.0 - 69.41.14.255&lt;/span&gt;&lt;/span&gt;                            &lt;br /&gt;&lt;br /&gt;Oh man... &lt;a href="http://www.covenanteyes.com/" target="_blank"&gt;&lt;span style="font-weight: bold;"&gt;Covenant Eyes&lt;/span&gt;&lt;/a&gt;.  That is my integrity software that I am running locally.  The filter service gets wind of the site that I want to visit, rushes out and see's it before I do in order to check its content, then flags my system to say that its ok to visit.  That was essentially creating the user before my browser could get to it.  By the time I got there, it was percieved as a return visit.  Man... I just wasted 7 hrs looking into it (I'm obsessive I know).  I'm all in favor of running integrity software because we're only as strong as our weakest moments.  I still like what Covenant Eyes does, but if you forget about how it works it can cause a few headaches and wasted hours.  The fix to this is to set the site url to permanent allow under the &lt;span style="font-weight: bold;"&gt;Filter History and Settings&lt;/span&gt; area.  That will stop the filter from "pre-visiting" the sites that you are trying to debug.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-2499446033810744737?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/2499446033810744737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=2499446033810744737' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/2499446033810744737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/2499446033810744737'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2008/08/double-execution-my-bad.html' title='Double execution, my bad'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-6943581857852786920</id><published>2008-07-31T08:43:00.012-05:00</published><updated>2008-11-06T21:55:43.319-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='DOM'/><category scheme='http://www.blogger.com/atom/ns#' term='operation aborted'/><category scheme='http://www.blogger.com/atom/ns#' term='appendChild'/><title type='text'>pickIE pickIE</title><content type='html'>I spent yesterday looking for a nice solution for drag selecting multiple items on a page.  After trying several keywords to try and find what I was actually looking for (drag and drop seemed to dominate the results), I finally stumbled across this solution: &lt;a href="http://drjavascript.com/drag-select/"&gt;http://drjavascript.com/drag-select/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I downloaded the script keeping the copyright intact, plugged it into my own demo page and it works perfectly.... in FF.  I happily pulled up an IE browser and got the ominous error message sound with an always helpful "&lt;span style="font-weight: bold;"&gt;Operation Aborted&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Qdamp1VhkKc/SJHFP736o1I/AAAAAAAAACc/U-O5rSDR81o/s1600-h/OperationAborted.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_Qdamp1VhkKc/SJHFP736o1I/AAAAAAAAACc/U-O5rSDR81o/s400/OperationAborted.jpg" alt="" id="BLOGGER_PHOTO_ID_5229177519914787666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks IE for the specific error message.  I'll be sure to track that down.&lt;br /&gt;&lt;br /&gt;I noticed that it worked fine on the originating site, but it was dying on my test site.  That had me scratching my head.  So I proceeded to cut and paste function by function back into the script tags to see exactly what syntax it was bombing on.  It finally bombed on a certain function in the script.  But when I left that function in and cut out a previous function, it wouldn't bomb.  So again I was back to scratching my head.&lt;br /&gt;&lt;br /&gt;Well, after flailing for a while, I decided to leave that rabbit trail and focus more on the ambiguous "operation aborted".  After varied search results I came across a statement saying that IE doesn't like you changing the DOM before it is done writing it completely.  I went back to my script and looked for things that were changing the DOM.  There were two sections of code where it was doing a &lt;span style="font-weight: bold;"&gt;document.body.appendChild( obj )&lt;/span&gt;.  When I commented those lines out, all was fine.&lt;br /&gt;&lt;br /&gt;Ok... so that was it... now how to fix it.&lt;br /&gt;&lt;br /&gt;Now that I could google with a more accurate sense of the problem, I found that you can add a defer attribute to the script tag like so:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;     &lt;span style="color: rgb(255, 0, 0); font-style: italic;"&gt;&amp;lt;script type="text/javascript" language="javascript" &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0); font-style: italic;"&gt;defer="true"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-style: italic;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This allowed the entire DOM to load before running the drag select init code.  One more question remained however.  Why did the originating site work and my test site not work.  On out test framework, the test template that I am using doesn't have the final word as to what the DOM looks like.  We do some post execution code after the core content is generated.  So since the drag-select code was initialized in the core content, the DOM was still being worked on after my test. That would explain the difference between the two sites.&lt;br /&gt;&lt;br /&gt;Hope this helps...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-6943581857852786920?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/6943581857852786920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=6943581857852786920' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/6943581857852786920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/6943581857852786920'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2008/07/pickie-pickie.html' title='pickIE pickIE'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Qdamp1VhkKc/SJHFP736o1I/AAAAAAAAACc/U-O5rSDR81o/s72-c/OperationAborted.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-9137261093947527322</id><published>2008-06-16T16:31:00.008-05:00</published><updated>2008-07-07T10:52:09.300-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cookies coldfusion bots'/><title type='text'>No Cookie for You!!</title><content type='html'>&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 153);"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;UPDATE&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 0, 153);"&gt; &lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;A better explanation has surfaced.  See this post for more info &lt;/span&gt;&lt;/span&gt;&lt;a style="color: rgb(51, 51, 255); font-weight: bold;" href="http://jochem.vandieten.net/2008/07/03/reserved-names-for-cookies/"&gt;http://jochem.vandieten.net/2008/07/03/reserved-names-for-cookies/&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;I am leaving this entry as is as it still solved our issue.  Call it a "work around"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So we've been noticing a lot of entries in one of our logs that look like this:&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);font-size:78%;" &gt;06/16 16:27:08 error Cannot create cookie: expires = Wed 09-Jun-2038 16:17:42 GMT&lt;br /&gt;06/16 16:27:08 error Cannot create cookie: expires = Wed 09-Jun-2038 16:17:42 GMT&lt;br /&gt;06/16 16:27:54 error Cannot create cookie: expires = Wed 09-Jun-2038 16:17:42 GMT&lt;br /&gt;06/16 16:27:54 error Cannot create cookie: expires = Wed 09-Jun-2038 16:17:42 GMT&lt;br /&gt;06/16 16:28:34 error Cannot create cookie: expires = Wed 09-Jun-2038 16:17:42 GMT&lt;br /&gt;06/16 16:28:34 error Cannot create cookie: expires = Wed 09-Jun-2038 16:17:42 GMT&lt;br /&gt;06/16 16:29:22 error Cannot create cookie: expires = Wed 09-Jun-2038 16:17:42 GMT&lt;br /&gt;06/16 16:29:22 error Cannot create cookie: expires = Wed 09-Jun-2038 16:17:42 GMT&lt;br /&gt;06/16 16:30:13 error Cannot create cookie: expires = Wed 09-Jun-2038 16:17:42 GMT&lt;br /&gt;06/16 16:30:13 error Cannot create cookie: expires = Wed 09-Jun-2038 16:17:42 GMT&lt;br /&gt;06/16 16:31:11 error Cannot create cookie: expires = Wed 09-Jun-2038 16:17:42 GMT&lt;br /&gt;06/16 16:31:11 error Cannot create cookie: expires = Wed 09-Jun-2038 16:17:42 GMT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I kept seeing postings from a couple of years ago that people would run into this issue as a result of a memory shortage in the JVM.  This was not the case with us however as we have 400+ megs of memory free on average.&lt;br /&gt;&lt;br /&gt;I decided to try and pair up the times of these errors with our IIS logs to see what I could find.  I did find a matching entry that looked like this:&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);font-size:78%;" &gt;2008-06-16 00:00:01 W3SVC762671395 xxx.xxx.xxx.xxx GET /xxx/ xxx=5773E359497D4F1B 80 - 12.129.9.198 HTTP/1.1 Botster.LinkChecker/v.1.0 CFID=xxxxxxxx;+expires=Tue+08-Jun-2038+16:28:07+GMT;+CFTOKEN=xxxxxxx;+expires=Tue+08-Jun-2038+16:28:07+GMT;+JSESSIONID=xxxxxxx - www.xxxxxxxx.com 200 0 0 526 356 453&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Not sure what to do about it yet.  We could block Botster.LinkChecker at the IIS level as we have an ISAPI tool in place.  But I'm wondering if there is something we can do at the code level too.  The section of the log entry with +CFID, +expires, etc.. is part of the cs(Cookie) area.  I'm assuming this is the area that reveals which cookies were requested to get set.  Is it possible to check the user-agent for Botster and then redirect at the code level?  I don't remember the order of operations there.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The rest of the story...&lt;/span&gt;&lt;br /&gt;After looking at this for another day I finally realized what was going on.  The key to this all lies within CF's client management.  When the bot is hitting our site, cf wants to establish a session so it tries to write two permanent cookies, &lt;span style="font-weight: bold;"&gt;cfid&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;cftoken&lt;/span&gt;, to the visiting client.  The problem comes in when &lt;span style="font-weight: bold;"&gt;bots don't allow the setting of permanent cookies&lt;/span&gt;.  CF was noticing this and writing an error entry a couple times every minute, as often as the bot was hitting us.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);font-size:78%;" &gt;CFID=7857398;&lt;br /&gt;+expires=Thu+10-Jun-2038+13:51:18+GMT;&lt;br /&gt;+CFTOKEN=1959af634c5b6ec3-96CB3B7F-17A4-A7F4-705CBC2B0F9052AA;&lt;br /&gt;+expires=Thu+10-Jun-2038+13:51:18+GMT;&lt;br /&gt;+JSESSIONID=2e3040ee771260d33446&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt; The light turned on for me when I broke down the iis log entry cs(Cookie) area like this.  It looks like the first item in the ';' delimited list is the cookie that was requested.  If it is followed by an expires, that is a modifier to the previous item in the list.  So when I saw this I realized that it was CF that was trying to set the cookie, not some renegade bot code.  Notice that JSESSIONID doesn't have the expires modifier because it is always set as a session cookie and goes away when the browser is shut down (hence, not an issue for bots). I think its helpful to break the info down to simple lines, otherwise you get lost in the horizontal scrolling.&lt;br /&gt;&lt;br /&gt;There are two solutions for this that I looked at.  The first I mentioned before was filtering the bot at the ISAPI level.  The second was using &lt;span style="font-weight: bold;"&gt;j2ee session management&lt;/span&gt;.  We already had this turned on but we must have forgotten about the fact that the setclientcookies in the cfapplication tag defaults to true.  Jsessionid replaces the need for cfid/cftoken though cf still seems to put cf still seems to append cfid/cftoken to the urls.  Cflocation will append these variables if you have addtoken=true.  We can solve our problem by simply adding the &lt;span style="font-weight: bold;"&gt;setclientcookies=false&lt;/span&gt; in the cfapplication tag for the app.&lt;br /&gt;&lt;br /&gt;FYI: if you are using cfloginuser, cfid/cftoken perm cookies will still be set if in your cfapplication tag you have loginmanagement set to cookie.  This seems to override the setclientcookie setting.  I haven't tested it yet, but I bet if you set loginmanagement="session", you would not see the perm cookies being set.  This is not a concern for us at the moment since the bot is not trying to log in, its simply hitting publically accessible data.&lt;br /&gt;&lt;br /&gt;Additional info on J2EE session management can be found here:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How to write CFID and CFTOKEN as per-session cookies&lt;/span&gt;&lt;br /&gt;&lt;a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_17915"&gt;http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_17915&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Hiding / Encrypting ColdFusion CFID And CFTOKEN Values&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.bennadel.com/blog/785-Ask-Ben-Hiding-Encrypting-ColdFusion-CFID-And-CFTOKEN-Values.htm"&gt;http://www.bennadel.com/blog/785-Ask-Ben-Hiding-Encrypting-ColdFusion-CFID-And-CFTOKEN-Values.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-9137261093947527322?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/9137261093947527322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=9137261093947527322' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/9137261093947527322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/9137261093947527322'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2008/06/no-cookie-for-you.html' title='No Cookie for You!!'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-6149561951613129930</id><published>2008-06-06T16:39:00.005-05:00</published><updated>2008-06-10T08:53:34.610-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='socket write error'/><title type='text'>16 thread pile-up...</title><content type='html'>&lt;span style=""&gt;We have been having issues with one of our servers going down.  The offending action seemed to be happening in the middle of the night some time.  One of the symptoms was a sql table that was locked and the site would just spin when trying to access it.  It was either that or the cf service was plain dead in the morning.  After further review in the logs, I found these scattered throughout:&lt;br /&gt;&lt;blockquote style="color: rgb(255, 102, 102);"&gt;&lt;span style="font-size:85%;"&gt;06/05 23:49:53 Error [jrpp-57] - Error Executing Database Query.[Macromedia][SQLServer JDBC Driver]Connection reset by peer: socket write error The specific sequence of files included or processed is: X:\xxx\xxx\xxx.xxx, line: 348&lt;br /&gt;removeOnExceptions is true for xxx. Closed the physical connection.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;followed by a bunch of &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;java.lang.RuntimeException: Request timed out waiting for an available thread to run. You may want to consider increasing the number of active threads in the thread pool.&lt;br /&gt;  at jrunx.scheduler.ThreadPool$Throttle.enter(ThreadPool.java:116)&lt;br /&gt;  at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:425)&lt;br /&gt;  at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;Notice that the connection to sql was being reset when CF was attempting a sql execution.  It didn’t look like the same line of code every time, but there is one line that is showing up more often.    While researching the error in google, I came across a couple of possible causes.  One was a possible flaky network that was dropping the attempted sql.  While I was checking on the sql server box for a record of possible network issues in the sql log, I found that there were some sql errors that were occurring at the exact same time as our CF woes.  Here they are:&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote style="color: rgb(255, 102, 102);"&gt;&lt;span style="font-size:85%;"&gt;Event Type:     Error&lt;br /&gt;Event Source:     MSSQLSERVER&lt;br /&gt;Event Category:     (2)&lt;br /&gt;Event ID:     17066&lt;br /&gt;Date:          6/5/2008&lt;br /&gt;Time:          11:49:50 PM&lt;br /&gt;User:          N/A&lt;br /&gt;Computer:     xxxxxx&lt;br /&gt;Description:&lt;br /&gt;SQL Server Assertion: File: &lt;lckmgr.cpp&gt;, line=9421 Failed Assertion = 'NULL == m_lockList.Head ()'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.&lt;br /&gt;&lt;br /&gt;Event Type:     Error&lt;br /&gt;Event Source:     MSSQLSERVER&lt;br /&gt;Event Category:     (2)&lt;br /&gt;Event ID:     3624&lt;br /&gt;Date:          6/5/2008&lt;br /&gt;Time:          11:49:50 PM&lt;br /&gt;User:          N/A&lt;br /&gt;Computer:     xxxxxx&lt;br /&gt;Description:&lt;br /&gt;A system assertion check has failed. Check the SQL Server error log for details&lt;br /&gt;&lt;br /&gt;Event Type:     Error&lt;br /&gt;Event Source:     SQLSERVERAGENT&lt;br /&gt;Event Category:     Alert Engine&lt;br /&gt;Event ID:     318&lt;br /&gt;Date:          6/5/2008&lt;br /&gt;Time:          11:49:55 PM&lt;br /&gt;User:          N/A&lt;br /&gt;Computer:     xxxxxx&lt;br /&gt;Description:&lt;br /&gt;Unable to read local eventlog (reason: The parameter is incorrect).&lt;br /&gt;(Link: http://go.microsoft.com/fwlink/events.asp.&lt;br /&gt;)&lt;/lckmgr.cpp&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=""&gt;&lt;/span&gt;After looking at a couple of these errors on google, I saw one instance where it was solved by moving to SP1 for SQL2k5.  We recently upgraded to SQL 2K5 and are still on SP0.    There may be an issue with sp0 where it doesn’t handle locks correctly and it may be dumping there.  Notice this line… &lt;span style="font-weight: bold;"&gt;SQL Server Assertion: File: &lt;&lt;span style="color: rgb(255, 102, 102);"&gt;lckmgr&lt;/span&gt;.cpp&gt;, line=9421 Failed Assertion = 'NULL == m_&lt;span style="color: rgb(255, 102, 102);"&gt;lockList&lt;/span&gt;.Head ()'&lt;/span&gt;.  The lock isn’t being handled correctly for some reason. &lt;br /&gt;&lt;br /&gt;We have opted to try to up to SP1.  Think we can trust it?  Its only been out since 2006 ;).  We'll see what happens.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UPDATE (6/10/08): &lt;/span&gt;our server has been up for 2 straight week days with no issues at all.  In fact, the site has been reported to be responding much faster.  A lot of SP1's updates were efficiency related so things should naturally respond better after upgrading.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-6149561951613129930?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/6149561951613129930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=6149561951613129930' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/6149561951613129930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/6149561951613129930'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2008/06/16-thread-pile-up.html' title='16 thread pile-up...'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1348013472843711523.post-7888563711528603840</id><published>2008-06-05T14:34:00.004-05:00</published><updated>2008-06-06T17:15:50.751-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coldfusion'/><category scheme='http://www.blogger.com/atom/ns#' term='mailroot'/><category scheme='http://www.blogger.com/atom/ns#' term='iis'/><title type='text'>CF Mail Spooler Woes...</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;We have been having some issues with our mail server recently.  Mail hasn't been going out and this is what we noticed in the logs:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);font-size:78%;" &gt;&lt;blockquote&gt;"Error","scheduler-4","06/03/08","10:33:24",,"Could not connect to SMTP host: xxx.xxx.xxx.xxx, port: 25;   nested exception is:      java.net.ConnectException: Connection refused: connect"&lt;br /&gt;javax.mail.MessagingException: Could not connect to SMTP host: xxx.xxx.xxx.xxx, port: 25;&lt;br /&gt;nested exception is:&lt;br /&gt;  java.net.ConnectException: Connection refused: connect &lt;/blockquote&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;and&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);font-size:78%;" &gt;&lt;blockquote&gt;"Error","scheduler-1","04/02/08","03:30:56",,"A problem occurred when attempting to deliver mail. This exception was caused by: coldfusion.mail.MailSpooler$SpoolLockTimeoutException: A timeout occurred while waiting for the lock on the mail spool directory.."&lt;/blockquote&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;From what I found, this occurs for two reasons:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Bombage from sending a huge email&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Insufficient disk space&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-weight: bold;"&gt;Reference&lt;/span&gt;: &lt;a href="http://www.talkingtree.com/blog/index.cfm?mode=entry&amp;amp;entry=67FD4A34-50DA-0559-A042BCA588B4C15B"&gt;http://www.talkingtree.com/blog/index.cfm?mode=entry&amp;amp;entry=67FD4A34-50DA-0559-A042BCA588B4C15B&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;We did notice a message the other day claiming that we were running low on disk space.&lt;br /&gt;There is a recent hotfix from Adobe that supposedly helps this that was released in April '08 that supersedes a previous hotfix in this area.  That &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;hotfix&lt;/span&gt;&lt;span style="font-size:100%;"&gt; can be found here: &lt;a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=kb402001&amp;amp;sliceId=1"&gt;&lt;span style="font-weight: bold;"&gt;http://kb.adobe.com/selfservice/viewContent.do?externalId=kb402001&amp;amp;sliceId=1&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;We applied the hotfix today and cleared some disk space so we'll see happens.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;:  after getting our hands dirty today, KP found that there was a backup of 10,000+ emails in the inetpub/mailroot/queue directory.  Something is getting hosed at that level.  He found this by telnet'ing to the server's port 25 and sending a message.  It told him that the message had been queued for delivery.  He never did get the message which told us that the bottleneck was at the queue.  We've got a ticket opened up to check it out.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1348013472843711523-7888563711528603840?l=cfteeps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cfteeps.blogspot.com/feeds/7888563711528603840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1348013472843711523&amp;postID=7888563711528603840' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/7888563711528603840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1348013472843711523/posts/default/7888563711528603840'/><link rel='alternate' type='text/html' href='http://cfteeps.blogspot.com/2008/06/cf-mail-spooler-woes.html' title='CF Mail Spooler Woes...'/><author><name>Teeps (Terry Palmer)</name><uri>http://www.blogger.com/profile/09045091666961974550</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp3.blogger.com/_Qdamp1VhkKc/SEg-VVuMGoI/AAAAAAAAAAQ/xkFm1hFNBpI/S220/Teeps_Mug.jpg'/></author><thr:total>2</thr:total></entry></feed>
