Getting Coldfusion working with Helicon APE

ColdFusion 2 Comments »

I recently tried to do some rewrite rules on my ColdFusion site using Helicon APE and could not get them to work for love nor money. It worked fine when rewriting to a non .cfm page, but when rewriting to a .cfm page The result was either a "server error" or a "404.3" error as per the below screenshot

image

The cause of this is due to the wildcard handler that ColdFusion uses, when you hit a url that gets intercepted by APE due to a rewrite rule which then attempts to rewrite to another CFM page this does not get processed by the wildcard handler, instead APE tries to process the request with a standard script map, the result of which will be different depending on how you have your server setup.

If you have a standard non modified CF install then in addition to the woldcard (*) handler you also have a bunch of regular script map handlers for each extension that ColdFusion handles (*,cfm, *.cfc, *.cfswf etc), these will be named "AboMapperCustom-xxxxxxxx".

Each of these script map handlers points to the file "jrun_iis6.dll" which actually doesn't work at all on IIS 6 or IIS 7 and thus these handlers seem to serve no purpose. Why these handlers are even created I cannot say, my best guess is that they are a leftover legacy setting from IIS 5.
the only handler that is able to process Coldfusion files is the wildcard handler which points to the following connector.

jrun_iis6_wildcard.dll

So in order for APE to be able to work with CFM files or any of the other CF related extensions then you need to update all those script map handlers to point to "jrun_iis6_wildcard.dll" instead of "jrun_iis6.dll".

If you are on a shared host and do not have access to the IIS manager, then you can fix this in your web.config file if you are running on IIS 7, if you are on IIS 6 then you will need to speak with your host as IIS 6 does not have a web.config.

Below is an example of the changes you need to make to your web.config.
If Coldfusion is enabled globally on the server then the <remove> statements disable the original handlers (you must use the original/actual names of the handlers), if Coldfusion is not enabled server wide then you don't need these.

The <add> statements creates a new set of handlers with the correct connector, these can be named anything you like as they are specific to your site. If Coldfusion is already enabled on your site (IIS 7 only) rather than globally then you will already have a bunch of entries like this in your web.config, in which case simply update the "ScriptProcesstor" path as below to point to "jrun_iis6_wildcard.dll" instead of "jrun_iis6.dll".



<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="AboMapperCustom-xxxxxxxx" />
<remove name="AboMapperCustom-xxxxxxxx" />
<remove name="AboMapperCustom-xxxxxxxx" />
<remove name="AboMapperCustom-xxxxxxxx" />
<remove name="AboMapperCustom-xxxxxxxx" />
<add name="AboMapperCustom-xxxxxxxx" path="*.cfm" verb="*" modules="IsapiModule"
scriptProcessor="C:\ColdFusion9\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll"
resourceType="Unspecified" requireAccess="Script" responseBufferLimit="0" />
<add name="AboMapperCustom-xxxxxxxx" path="*.cfc" verb="*" modules="IsapiModule"
scriptProcessor="C:\ColdFusion9\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll"
resourceType="Unspecified" requireAccess="Script" responseBufferLimit="0" />
<add name="AboMapperCustom-xxxxxxxx" path="*.cfml" verb="*" modules="IsapiModule"
scriptProcessor="C:\ColdFusion9\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll"
resourceType="Unspecified" requireAccess="Script" responseBufferLimit="0" />
<add name="AboMapperCustom-xxxxxxxx" path="*.cfr" verb="*" modules="IsapiModule"
scriptProcessor="C:\ColdFusion9\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll"
resourceType="Unspecified" requireAccess="Script" responseBufferLimit="0" />
<add name="AboMapperCustom-xxxxxxxx" path="*.cfswf" verb="*" modules="IsapiModule"
scriptProcessor="C:\ColdFusion9\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll"
resourceType="Unspecified" requireAccess="Script" responseBufferLimit="0" />
</handlers>
</system.webServer>
</configuration>

 

Railo on IIS 7 - Object reference not set to an instance of an object

Railo No Comments »

I have recently discovered some issues when running Railo on IIS 7 along with ASP.net and/or custom modules. In certain situations you will get a "Object reference not set to an instance of an object" error on your CFM pages even though they were working fine previously.

image

In particular my issue was being caused when using custom modules were installed for password protected folder, such as the WebsitePanel module or Helicon APE, which then broke CFM pages.

The solution is actually really simple, you just need to convert your "jakarta" virtual directory into an application. Obviously this only applies if you are using the Tomcat or similar distro which requires such a virtual directory. If you are using the Helicon Zoo module then you will have no such issue.

image

I am not absolute sure why this occurs, but my guess would be because the request is first handed off of the connector to be processed by Tomcat, which process in the process being returned to IIS with the wrong identity, and thus fails to execute the module in-process.
By setting the jarkarta vDir to an application it then then runs the connector using the application pool identity instead.

So if you switch to a different application pool or identity or even .net version/mode then you may need to also change the jakarta vDir to be the same.

Fight the flab with DietChef

Jibber Jabber 4 Comments »

 

For the last 9 weeks or so I have been on a diet, it wasn't really a choice, my wife discovered DietChef and make the decision for me (I guess she thinks I am too fat), which is probably a good thing as I doubt I would have done it for myself Smile, but I  have to say that I was actually pleasantly surprised, so I decided to write a review.

DietChef is basically calorie controlled dieting for dummies. If you are too too busy, too lazy, too stupid or just lack the motivation and self discipline to control your calorie intake yourself then DietChef is probably just the ticket for you. You get a monthly supply of calorie controlled ready meals (breakfast, lunch and dinner) delivered to your door which you eat every day instead of your usual meals, which you can supplement with things like rice, pasta and vegetables. 
I have always fallen into the too busy/lazy category, I like cooking, but I really cannot be bothered with calculating how many calories in everything I eat, weighing out exact portions, yada yada, this always seems like too much hassle when I get home from work and just takes the pleasure out of cooking...... 

 

Read more...

Tip: Toothpaste removes scratches from your lenses

Jibber Jabber No Comments »

Picture of me 1My glasses broke last last week leaving me a right predicament as I had no spare pair and I am blind without them. All I could find was an old pair of prescription sun glasses which are far too dark to wear inside and also had a big scuff on each lens (thanks to my kids) making them pretty horrid to wear, but as that is all I had, that is what I have been wearing.
As I am clearly going to be stuck with these until the new year till I can get a new pair I thought I would research if it was possible to remove scratches from lenses.
I found a lot of weird suggestions, one of which was to use a "non abrasive" toothpaste with a soft cotton cloth (do not use kitchen paper or anything rough), which was about the thing I had in the house from all the suggestions, so I thought I would give it a try,

To my great surprise, it worked, and and all the scratches and scuffs have now gone and apart from being too dark and an old prescription they are about 10 times better and actually wearable now.

I suspect this only works on lenses which have an anti reflective, anti scratch coating or an outer tint and where the scratches are very minor as the cleaning chemicals in the toothpaste must take off a very thing layer of the lens coating, thus taking the scratches off with it.
So if your specs fall into this category and are a bit worse for wear, give it a try, you may just give them a second life.

Per application servlet mappings for Railo

Railo , Windows 2008 Server No Comments »

Another of the big annoyances with Railo is that it won't handle SEO friendly URL's out of the box, you need to get into the application servers servlet mappings to add url filters for each of your SEO URL formats.

e.g. each of these would require a separate servlet mappings url-filter.

mysite.com/index.cfm/something
mysite.com/sub1/index.cfm/something
mysite.com/muraCMS/index.cfm/something

If you are on a shared server then this can be a big problem as you do not have the ability to do this, plus making changes may also break other sites.

Thankfully there is a solution that allows you to apply these url filters on a per site basis, at least for Jetty anyway, I have not tested on any of the other servlet containers such as Tomcat, but the same solution is likely possible.

in your web root you will have a "web-inf" folder which is created automatically and contains your Railo context, inside this folder create a web.xml file and paste in the below contents. 
This will allow the most common SEO URL  "index.cfm/something" to work, I have also included the required filters for MangoBlog. Now you just need to modify this file within each of your sites and add any required url-filters.
The only caveat is that you need to restart your app server in order for the settings to take affect, if you are using the Helicon Zoo module that I blogged about previously then you simply need to recycle your application pool. This can be achieved by editing your web.config as any change to this file forces IIS to recycle the application pool.

 

<?xml version="1.0" encoding="ISO-8859-1"?>
 
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
metadata-complete="true"
version="2.5"
>
<servlet-mapping>
<servlet-name>CFMLServlet</servlet-name>
<url-pattern>index.cfm/*</url-pattern>
<url-pattern>/post.cfm/*</url-pattern>
<url-pattern>/archives.cfm/*</url-pattern>
<url-pattern>/page.cfm/*</url-pattern>
<url-pattern>/author.cfm/*</url-pattern>
<url-pattern>/feeds.cfm/*</url-pattern>
</servlet-mapping>
</web-app>

 

 

Powered by Mango Blog. Design and Icons by N.Design Studio
RSS Feeds