JRUN Servlet Error: coldfusion.runtime.CfJspPage.bindImportPath

Posted June 25, 2010 at 12:19 PM by Ben Nadel

Tags: ColdFusion

A while back, Jamie Krug helped me set up my local ColdFusion multiserver development environment in which I could run ColdFusion 8 and ColdFusion 9 instances on the same code base. Jamie was a super fantastic help and everything was running perfectly fine until, seemingly out of nowhere, my ColdFusion 9 instance died. ColdFusion 8 was working properly; but, whenever I tried to run code through my ColdFusion 9 instance, I got the following JRUN error:

ROOT CAUSE:
java.lang.NoSuchMethodError: coldfusion.runtime.CfJspPage.bindImportPath

This morning, after weeks of not being able to fix the problem, I finally uninstalled everything (JRUN and ColdFusion) and started again from scratch. After installing JRUN and deploying my ColdFusion 9 and ColdFusion 8 EAR files, things appeared to be on the up-and-up. Once again, I had both servers running successfully in parallel.

That is, until I broke it.... again.

This time, however, I know exactly what I did wrong: I ran the ColdFusion 8.0.1 Updater. I was only intending to target the ColdFusion 8 instance; but, apparently, the updater alters the underlying JRUN installation which, at the time, was the ColdFusion 9 multiserver compatible version. As such, it looks like JRUN is no longer able to work with ColdFusion 9 code.

Oh well, at least I know never to do that again. An hour wasted, but much wisdom gained.




Reader Comments

Jun 25, 2010 at 2:17 PM // reply »
29 Comments

Bummer! To think of the code you could have been writing instead :) But I'm so glad you identified the cause. I assume you confirmed that you needed the 8.01 update? You can download a current developer edition of CF8, which already has the 8.01 update applied, and create an EAR from that installer. Not cool that it somehow ruins JRun for any other apps running under it :(


Jun 25, 2010 at 2:25 PM // reply »
11,238 Comments

@Jamie,

I finally got everything up and running. I messed up the second time when configuring the web service connector (oops) and had to start over (as I didn't know what was going wrong).

Apparently, 3rd time is the charm. Although, on the 3rd time around, for some reason, the dotnet integration stuff did not install even though I had selected it for EAR creation. I did, however, unselected ALL extra installs for the instance manager (standalone version). Perhaps if the core one doesn't have the services, it doesn't install them in the EAR?

Who knows. Those are stand alone projects anyway so I was able to install dotnet integration afterward (though figuring out where the CF8 root was took a lot of trial an error):

C:\JRun4\servers\cf8-main\cfusion.ear\cfusion.war\WEB-INF\cfusion

... Finally got it up and running, even tested dotnet integration.


Jun 25, 2010 at 2:38 PM // reply »
29 Comments

@Ben, great to hear!


Jun 25, 2010 at 4:08 PM // reply »
28 Comments

Don't know whether this will help, but my colleague Mike Henke has been exploring having multiple cf flavours running on JRun. His blog may help:
http://www.henke.ws/post.cfm/multiple-coldfusion-version-and-engines-on-adobe-coldfusion-with-jrun

That said you may want to dump JRun entirely and use TomCat or JBoss. They're more recent J2EE engines and are faster than Jrun.

regards,
larry


Jun 25, 2010 at 4:37 PM // reply »
2 Comments

I forgot to mention that deployment is much easier on Tomcat and JBoss than on JRun. Its much simpler deploying a war archive or an exploded war file than the ear deployment that JRun uses.

Moreover using the Eclipse Webtools or MyEclipse, you have very fine grained control over the servers.

regards,

larry


Jun 25, 2010 at 4:52 PM // reply »
29 Comments

@Larry,

As much as I love the lightweight servlet containers like Tomcat and Jetty, and also prefer JBoss to JRun, there is still one little trick that only JRun provides (AFAIK). The JRun connector does a slick trick by which it somehow passes along the document root from a fronted Web server (Apache or IIS). This means you need only specify an application's Web root in one place, the virtual host of your Web server.

To the best of my knowledge no other setup allows you to do this. You generally need to configure each virtual host on both the Web server (e.g., Apache) and the Java application server (e.g., JBoss).

In the world of Java Web apps, it's very common to configure a virtual host in your Java app server, and to deploy a full EAR or WAR for each app. But many ColdFusion developers are very accustomed to all that "magic" happening whereby one Java Web application (one ColdFusion EAR/WAR) can power many virtual hosts without duplicating virtual hosts or littering Web roots with WEB-INF folders.

I'm fairly certain that one might be able to, for example, place the ColdFusion 9 jars in a common class path of JBoss and configure the necessary CF descriptor in the global/common Web descriptor file (web.xml) of JBoss, but I've yet to spend the time fighting through it myself. It's fairly well documented on how to do this with Railo and Open BlueDragon. But for ACF, outside of using JRun, you're expected to run one CF application (Web root, virtual host, etc.) per EAR/WAR deployment of ColdFusion.

The options are seemingly endless, and there are lots of pros and cons and potential confusion, but it's powerful stuff!


Jun 25, 2010 at 5:02 PM // reply »
11,238 Comments

@Larry,

Thanks - I'll check out Mike's post. I'm very new to this stuff, so it's sort of all greek to me. Although, slowly, after my 3rd install this morning, it's starting to sink in :)


Jun 25, 2010 at 7:43 PM // reply »
2 Comments

Something else that may help if you go for the jBoss route (its more easier to put multiple different instances on jBoss) is to use exploded War files. Steve Brownlee has an excellent tutorial on running CF on Jboss,
http://www.fusioncube.net/index.php/coldfusion-on-jboss-standalone-primer

regards,
larry


Post A Comment

Comment Etiquette: Please do not post spam. Please keep the comments on-topic. Please do not post unrelated questions or large chunks of code. And, above all, please be nice to each other - we're trying to have a good conversation here.

Please review the following issues:

Author Name:


Author Email:

Author Website:

Comment:

Supported HTML tags for formatting: <strong>bold</strong>   <em>italic</em>   <code>code</code>







  • Help Wanted - Find Your Next ColdFusion Job
Ben Nadel's Company - Epicenter Consulting Recent Blog Comments
May 20, 2013 at 4:38 PM
Using A Dynamic Column Name With ValueList() In ColdFusion
@Dana, Your confusion is well founded, since this is a very confusing features. In fact, it ONLY works if you use array notation. Meaning, that this: arrayToList( query[ "columnName" ] ) ... read »
May 20, 2013 at 4:34 PM
Using A Dynamic Column Name With ValueList() In ColdFusion
I was thinking chicken and the egg, I wouldn't have expected it to work in the valuelist going in I guess. Maybe I just need a beer, long day :) ... read »
May 20, 2013 at 4:29 PM
Using A Dynamic Column Name With ValueList() In ColdFusion
@Dana, That's if you're trying to reference a specific row. In this case, we're trying to reference the entire query column as one cohesive value. So, you are correct that if you wanted to output a ... read »
May 20, 2013 at 4:24 PM
Using A Dynamic Column Name With ValueList() In ColdFusion
I thought when you used array notation to reference queries you always had to have the row or it would throw a similar error as well? ... read »
May 20, 2013 at 11:45 AM
Using jQuery's Animate() Step Callback Function To Create Custom Animations
This is really useful. I found out that you don't actually have to use a dummy css property (surprisingly). To animate a property in a linear-gradient for instance I did this this.css('someLinearGra ... read »
May 20, 2013 at 10:51 AM
Using A Dynamic Column Name With ValueList() In ColdFusion
@Josh, Oh snap! You're totally right! I'm not sure I've ever tried that. I did know that you can call a number of other array-methods on ColdFusion query columns: http://www.bennadel.com/blog/167 ... read »
May 20, 2013 at 10:45 AM
Using A Dynamic Column Name With ValueList() In ColdFusion
@Ben - I believe you can achieve the same functionality with ColdFusion's built in ArrayToList() function. ArrayToList( users[ "id" ] ); ... read »
May 20, 2013 at 10:21 AM
My Experience With AngularJS - The Super-heroic JavaScript MVW Framework
Is there any error logging and handling framework in angularjs, if not then in what way I can do this. ... read »
InVision App - Prototyping Made Beautiful With Prototyping Tools