25 April 2011

Prerequisite knowledge
You should have some understanding of setting up a distributed environment and understand the reasons for setting up such an environment for your technical and business needs.
Additional required other products
Microsoft Internet Information Services 7
User level
Required products
Adobe ColdFusion Enterprise Edition (2016 release) (Download trial)
ColdFusion can be set up in a distributed environment, meaning that the ColdFusion is on a different physical machine than the web server. In a distributed environment, the connector is installed on the server hosting the web server and this server sends the request across the network to the remote server hosting ColdFusion .
ColdFusion comes with a Web Server Configuration Tool for connecting to external web servers. Usually, you copy the wsconfig.jar file to the web server machine and run the web server in a configuration where it refers to the remote server hosting ColdFusion. There may be occasions, however, when the Web Server Configuration Tool doesn't work properly, for example, due to a firewall or network security restrictions. Should this happen, you can still configure the connector manually. This article demonstrates the steps required for manually configuring connections to Internet Information Services 7 websites in a distributed environment.

Before starting

The ColdFusion Standalone server can only connect to one web server at a time and does so through a proxy port. The default proxy port is 51011 in ColdFusion.
In all of the configurations below, replace cf_root with the actual ColdFusion installation directory, typically C:\ColdFusion9 for Windows and /opt/ColdFusion9 on Unix if you used the default settings during installation.
Before you begin the steps below, copy the cf_root\runtime\lib\wsconfig.jar file from the machine where ColdFusion is installed to the web server machine. You must use the wsconfig.jar file in Step 4 when you have to extract the appropriate web server modules from the JAR file.

Step 1: Configuring the proxy service property in jrun.xml

On the COLDFUSION machine, locate the cf_root\runtime\servers\coldfusion\SERVER-INF\jrun.xml file for ColdFusion and make the following changes:
  1. Find the entry labeled ProxyService .
  2. Add <attribute name="deactivated">false</attribute> .
  3. Save the file.
  4. Restart the ColdFusion Application Server.

Step 2: Creating a directory space in ColdFusion server for IIS

On the WEBSERVER machine, create the following directory cf_root\runtime\lib\wsconfig\ (create a directory for each connected website):
It is a best practice to mirror the connector software directory structure from the ColdFusion server on the web server for consistency and simplicity.

Step 3: Setting up the web server configuration properties

On the web server machine, create a file named in the cf_root\runtime\lib\wsconfig directory. The file contains the data that the Web Server Configuration Tool uses to maintain web server configuration information. Depending on the web server, the file should contain the following information.
1=IIS,1,false,"" 1.srv=localhost,"cfusion" 1.cfmx=true,<null>

Step 4: Configuring Web Server IIS 7

Configure the web server IIS 7. These steps are done on the web server machine.
  1. Extract jrunwin32.dll and jrun_iis6.dll files from cf_root\runtime\lib\wsconfig.jar file and copy them to cf_root\runtime\lib\wsconfig\.
  2. Extract the file, jrun_iis6_wildcard.dll from cf_root\runtime\lib\wsconfig.jar file and copy it to cf_root\runtime\lib\wsconfig\1.
  3. Create a jrun_iis6_wildcard.ini file in cf_root\runtime\lib\wsconfig\1. It should contain the following information: (Note: Replace "" in the examples below with the IP address of the remote ColdFusion machine.)
verbose=true Buffer=true serverstore=cf_root/runtime/lib/1/ bootstrap= apialloc=false #errorurl=url <optionally redirect to this URL on errors> #proxyretryinterval=600 <number of seconds to wait before trying to reconnect to unreachable clustered server> #connecttimeout=15 <number of seconds to wait on a socket connect to a jrun server> #recvtimeout=300 <number of seconds to wait on a socket receive to a jrun server> #sendtimeout=15 <number of seconds to wait on a socket send to a jrun server> #maxworkerthreads=25 <number of worker threads created for asynchronous request processing>
  1. Create the file in cf_root\runtime\lib\wsconfig\1. Add the following line:
  1. In the Internet Information Services(IIS) Manager, do the following:
    1. Click the Handler Mappings for the website you are connecting.
    2. Click Add Managed Handler.
    3. In the Request Path: field, enter *.cfm.
    4. In the Type: field, enter cf_root\runtime\lib\wsconfig\jrun_iis6.dll.
    5. In the Name: field, enter cfmHandler.
    6. Click OK.
Just as you added the information above for the *.cfm in the above steps, add the following information for the *.cfc files. In other words, add cfcHandler - *.cfc, cfmlHandler - *.cfml,cfrHandler - *.cfr,cfswfHandler -*.cfswf,hbmxmlHandler - *.hbmxml (*.jsp,*.jws if required).
    1. Click Add Wildcard Script Map.
    2. In the Executable: field, enter cf_root\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll.
    3. In the Name: field, enter JWildCardHandler.
    4. A dialog box appears, asking the following: "Do you want to allow this ISAPI extensions?" Click YES.
  1. Within the IIS Manager, in ISAPI and CGI Restrictions, add the following: cf_root\runtime\lib\wsconfig\jrun_iis6.dll,cf_root\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll with the following description "Macromedia Server Extensions" and set Restriction to "allowed" See this in the following figure.
IIS Manager with ISAPI and CGI Restrictions
Figure 1. IIS Manager with ISAPI and CGI Restrictions
  1. Restart the web server.
After configuring IIS7 as the web server you might stop getting detailed error messages and simply get the "500 Internal server error."
If you wish to get the detailed error message for both local and remote machines, continue to step 8.
  1. In Internet Information Services(IIS) Manager, use the following steps:
    1. Click Error Pages for the website you are connecting.
    2. Click Edit Feature settings.
    3. Select Detailed errors.
    4. Click OK.

Where to go from here

The goal of this article is to provide the manual steps to configure Internet Information Services 7 as connector with ColdFusion 9 when you are facing issues with configuring the connector though the Web Server Configuration Tool.