In ColdFusion 10 ,JRun which was bundled with earlier versions of ColdFusion has been replaced with Tomcat. ColdFusion 10 now runs on Tomcat 7.0.23.

Here's all the info that you would need to get started with Tomcat in ColdFusion.

Basic Directory structure Changes - the comparison between ColdFusion 9 and ColdFusion 10

  1. All the folders under ColdFusion9 -- > ColdFusion10\cfusion
  2. ColdFusion9\runtime\jre -- > ColdFusion10\jre
  3. ColdFusion9\runtime\bin\jvm.config -- > ColdFusion10\cfusion\bin\jvm.config
  4. ColdFusion9\runtime\lib\wsconfig (for connector configuration ) -- > ColdFusion10\config\wsconfig
  5. ColdFusion9\uninstall --> ColdFusion10\uninstall

ColdFusion10\config folder is created only in ColdFusion 10. So, what does it contain?

  1. Connector configuration files -- > ColdFusion10\config\wsconfig
  2. Instances configured  -- > ColdFusion10\config\instances.xml
  3. Clusters configured -- > ColdFusion10\config\cluster.xml

Note :Dont manually change these above mentioned files.

Now that we have a basic understanding of the folder structure,lets get to the basic ColdFusion 10 FAQ.

Note :Going forward <ColdFusion_Home> refers to ColdFusion10\cfusion

One important configuration file to keep in mind which is equivalent to jrun.xml in earlier ColdFusion versions is server.xml and is present in the location - ColdFusion10\cfusion\runtime\conf\server.xml.

1. There is no "Enterprise Multiserver configuration" option during installation, is it supported ?

Now one can do mutiple instance and cluster management through "Server configuration" option in installer. (If you have the license for an Enterprise or Developer edition only.)

2. How do we enable built-in webserver if not enabled through installer ?

In server.xml one can find the following connector block -

  <!-- internal webserver end -->                    
      <Connector executor="tomcatThreadPool" maxThreads="50"
                     port="8500" protocol="org.apache.coyote.http11.Http11Protocol"
                     connectionTimeout="20000" 
                  redirectPort="8445" />
      <!-- internal webserver end -->    

This is the connector for the built-in webserver. If it is not enabled through installer, uncomment this block to enable it later on. Restart server.  

3. How do we change the port of built-in webserver ?

In server.xml one can find the following connector block -

  <!-- internal webserver end -->                    
      <Connector executor="tomcatThreadPool" maxThreads="50"
                     port="8500" protocol="org.apache.coyote.http11.Http11Protocol"
                     connectionTimeout="20000" 
                  redirectPort="8445" />
      <!-- internal webserver end -->                    

This is the connector for the built-in webserver. To change the port from default 8500, edit the port attribute of the above connector block. Restart server. 

4. How do we disable directory browsing for built-in webserver in ColdFusion?

Go to <ColdFusion_Home>\runtime\conf\web.xml and search for listings where <servlet-class> is org.apache.catalina.servlets.DefaultServlet. Set the <param-value> of listings to false. Restart server. 

5. How do we change the default webroot from <ColdFusion_Home>\wwwroot ?

Uncomment the <Context ..> line under Host block in server.xml present in <cf_home>\runtime\conf. Change the value of docBase from <cf_home>\wwwroot to new webroot location (ex : C:\new_web_root).In the WorkDir, replace <cf_home> with the location of ColdFusion_Home -  i.e C:\ColdFusion10\cfusion. Now, copy the WEB-INF from existing ColdFusion webroot to the new ColdFusion webroot. Restart server.

6. How do we set custom error pages ?

Go to <ColdFusion_Home>\wwwroot\WEB-INF\web.xml and add 

   <error-page>
    <error-code>404</error-code>
    <location>/error404.html</location>
   </error-page>

Restart server.

7. How do we add a virtual directory for built-in tomcat webserver?

Uncomment the <Context ..> line under Host block in server.xml present in <cf_home>\runtime\conf. Replace <cf_home> with absolute path to ColdFusion Home. To add a Virtual directory use the aliases attribute like -

<Context
path="/" 
docBase="C:\ColdFusion10\cfusion\wwwroot" 
WorkDir="C:\ColdFusion10\cfusion\runtime\conf\Catalina\localhost\tmp"
aliases="/VD=C:\newwebroot\VD">
</Context>

Restart server. Multiple aliases can be provided in the format aliases= "/aliasPath1=docBase1,/aliasPath2=docBase2" where aliasPathN must include a leading '/' and docBaseN must be an absolute path to a directory. 

8. What is the default path of the directory that ColdFusion uses for temporary files ?

<ColdFusion_Home>\runtime\conf\Catalina\localhost\tmp 

9. How do we change the path of the directory that ColdFusion uses for temporary files ?

Uncomment the <Context ..> line under Host block in server.xml present in <cf_home>\runtime\conf. Replace <cf_home> with absolute path to ColdFusion Home. Set the value of the WorkDir attribute with the absolute path to the new temp location.

<Context
path="/"
docBase="C:\ColdFusion10\cfusion\wwwroot"
WorkDir="C:\newtmp" >
</Context>

Restart server.

10. Tomcat doesn't have SES URL support - Does ColdFusion which runs on Tomcat have SES URL support ?

YES -  ColdFusion standalone installation supports SES URL .The default SES URL patterns can be found in web.xml present in <ColdFusion_Home>\wwwroot\WEB-INF\web.xml.

This FAQ is work in progress. Keep checking back for updates and additions. If there is anything that you would like to be added to this list, drop a comment / send an email to asha@adobe.com and I'll get that added. 

 - Asha

18 Comments to “Getting Started with Tomcat in ColdFusion 10”

  1. Charlie Arehart
    Great stuff, Asha. Thanks for sharing. We'll have a fun time in coming months/years as we bring people to (and from) various levels of experience:
    - those who had no idea that CF ran atop JRun
    - those who did and tweaked it
    - those who ran CF as an EAR/WAR atop Tomcat before CF10
    - those who ran Tomcat without CF and are not moving to CF10

    There are different things of interest to discuss for each. yours is a great first step in that journey. Hope you may be doing more. (I hope to, myself.)
  2. Byron Mann
    When using IIS 7 and the isapi connector, will it be possible to use a single instance of CF to host multiple sites that have different web roots. Like you used to be able to do with Jrun's iis connector.

    Not sure, but I don't think this is possible with Tomcat; although I have minimal experience with Tomcat.
  3. Asha
    @Charlie Absolutely !! Hope to reach out to all the people you mentioned, i am sure we will need your help too on that :)
  4. Asha
    @Byron Yes we can configure single instance of CF to multiple sites in IIS just the way we used to do in JRun using the wscongfig tool and selecting ALL sites while configuring IIS.
    We are going to blog regarding Configuring external webservers like Apache and IIS with ColdFusion 10 soon, so keep following the blog :)
  5. Jim Partin
    Does this mean I can use CAS saml based authentication more easily now by installing the jar files, modifying the web.xml, and partying like there is no tomorrow???

    I can't get CAS to work with cf9 using the filters, only with cfcs, but I lose any ability to get attributes via saml that I haven't figured out how to replicate yet.
  6. Jack McCracken
    Hi Asha,

    I am getting a 500 error in CF10 developer edition I never saw before in CF9.

    type Exception report

    message

    description The server encountered an internal error () that prevented it from fulfilling this request.

    exception

    javax.servlet.ServletException: ROOT CAUSE:
    java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
       at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:451)
       at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:120)
       at coldfusion.tagext.io.cache.ehcache.GenericResponseWrapper.sendError(GenericResponseWrapper.java:91)
       at coldfusion.filter.FormScope.parseQueryString(FormScope.java:501)
       at coldfusion.filter.FormScope.parsePostData(FormScope.java:445)
       at coldfusion.filter.FormScope.fillForm(FormScope.java:395)
       at coldfusion.filter.FormScope.setEncoding(FormScope.java:83)
       at coldfusion.runtime.CFPage.SetEncoding(CFPage.java:1164)
       at cfclassic2ecfm557356615._factor21(C:\ColdFusion10\cfusion\wwwroot\WEB-INF\debug\classic.cfm:19)
       at cfclassic2ecfm557356615._factor32(C:\ColdFusion10\cfusion\wwwroot\WEB-INF\debug\classic.cfm:12)
       at cfclassic2ecfm557356615.runPage(C:\ColdFusion10\cfusion\wwwroot\WEB-INF\debug\classic.cfm:1)
       at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:244)
       at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:444)
       at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
       at coldfusion.filter.CfincludeFilter.include(CfincludeFilter.java:33)
       at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:114)
       at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
       at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
       at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)
       at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
       at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
       at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62)
       at coldfusion.filter.RequestThrottleFilter.invoke(RequestThrottleFilter.java:151)
       at coldfusion.CfmServlet.service(CfmServlet.java:204)
       at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
       at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
       at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
       at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
       at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
       at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
       at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
       at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
       at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:414)
       at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
       at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
       at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
       at java.lang.Thread.run(Thread.java:662)

       coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:70)
       coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)

    note The full stack trace of the root cause is available in the Apache Tomcat/7.0.23 logs.

    Where are these logs?

    Thanks.
  7. Paul
    I had a heck of a time getting more than 1 website working in IIS (Windows Server 64bit, IIS 7.5 & CF10 Standard Edition). CF10 installed just fine and the default website worked but any other websites I set up in IIS would not work with cfm files, even after running the Web Server Config tool again.

    I noticed that the Web Server Config tool was not installing all of the components for the new websites in IIS (i.e. the required "jakarta" virtual directory). I finally tried running the Web Server Config tool "As Administrator" (localhost, ALL sites). The Web Server Config tool functioned correctly in this mode and the other sites I had set up in IIS worked correctly with cfm files.
  8. Matt
    I'm seeing the same issue as Jack on a web app that worked perfectly fine in CF8. Why did Adobe have to break everything in CF10. We've found too many issues with CF10 so far... I'm thinking of rolling back.

    Jack did you ever figure out the cause of this or where the logs are stored?
  9. Evelin Varghese
    @Jack,@Matt
    Please check this forum post http://forums.adobe.com/thread/1042921

    See if the solution proposed there resolves your issue.
    If not please log a bug with more information like
    what kind of requests(size/type/number of simultaneous requests) leads to this issue.
    Also what is the configuration in which you are facing this issue?Do you have IIS/Apache configured with ColdFusion?
  10. Aaron Neff
    @Jack,

    Regarding: "note The full stack trace of the root cause is available in the Apache Tomcat/7.0.23 logs. Where are these logs?"

    Good question. That message should be clearer.

    CF writes those log entries to {CFRoot}\cfusion\logs\coldfusion-out.log

    Thanks,
    -Aaron
  11. Jeff Shain
    I am getting this error:

    Calling LoadLibraryEx on ISAPI filter "C:\ColdFusion10\config\wsconfig\1\isapi_redirect.dll" failed

    How do I fix this? Any ideas?
  12. charlie arehart
    Jeff raised his quesiton on SO (http://stackoverflow.com/questions/20916904/coldfusion-10-error-calling-loadlibraryex-on-isapi-filter-isapi-redirect-dll) and later answered his own question, saying that a reboot fixed things for him. I'm just offering this here to save others trying to look into this for him.
  13. Thea
    When using cold fusion 10, cgi.auth_user is empty. How do I get the currently logged on Windows NT User ID value? I am using the built-in tomcat web server while developing.
  14. Matt
    Seems like someone edited the ColdFusion10\config\instances.xml file manually. Now the CFAdmin will not show the Instance Manager for cfusion instance. I got a coworker to explain that he wanted the instances in alphabetic order not the order of creation. Like who cares! But now it is not working, I don't see a back up of file either, is there a way to get this working again without rebuilding each instance?
  15. charlie arehart
    @Matt, I don't think that file would have any effect at all on whether you see the Instance Manager in the cfusion instance. I think that's used only by the web server configuration tool.

    So when you say you don't see the Instance Manager page in the cfusion Admin, do you mean the admin appears, and the Enterprise Manager section on the lower left is there, but Instance Manager is not there under it?

    Or do you mean perhaps that there's no Enterprise Manager section listed, either? If that's the case, I suspect you're not really looking at the cfusion instance. :-)

    Look at the top left of the CF Admin. It will tell you the name of the instance. If it's not cfusion, then you are looking at the admin of one of your other instances. It can happen. :-)

    Are you using a port to get to the Admin, to use CF's built-in web server? If so, are you sure it's the port for that cfusion instance?

    If you are not using a port, then you'd likely be using an external web server (IIS or Apache) and you may just have problems where a site you THINK points to that instance it pointing to another. There are a combination of factors that influence that. Too many to elaborate here.

    But if you confirm you're not looking at the cfusion admin, maybe that will be enough to get you going on the path to a solution.

    If it does not, and you need more help, you can ask here but it's not really a support forum.

    You may do better at the CF Admin forum (https://forums.adobe.com/community/coldfusion/coldfusion_administration).

    Or you might get somewhere with the the free installation email support, discussed at http://blogs.coldfusion.com/post.cfm/free-coldfusion-installation-support-from-adobe.

    If none of those work, there are also troubleshooting consultants who can work with you, often quite quickly. I keep a list of them (myself included) at cf411.com/cfconsult.

    Hope that's helpful.
  16. Ruvend
    I have migrated my web application from coldfusion 8 to coldfusion 10 and iplanet to Apache.Now I'm having the issue that my application doesn't work well in IE10 and above but it works well if I enable compatibility mode in IE browser. It seems that we have developed application which supports older IE version So, Could you please share your ideas like any possibilities to make it work if I just change any config files or anything else?
  17. Olman
    I have installed CF9 with many files deployed on my server, now I need to migrate to version 11 as I do not have Enterprise Edition I can not do the migration through CAR files. I wonder if there is another method to migrate files and settings from the server. or if the syntax changes that between these versions.
  18. Charlie Arehart
    Olman, I think I can answer your question, but I want to make sure we're on teh same page on a couple of points, first.

    When you refer to "many files deployed", is that what you would hope the CAR mechanism would help with? Are those "many files" your CFML application and related resources? If so, that's NOT what the CAR mechanism helps to move. It ONLY moves CF Admin settings and related resources.

    So when you ask if there is another method, if you mean to help with your own files, no there is not (and never had been in CF). If you mean regarding your Admin settings, there is, yes. More on that in a moment.

    Now, you may read from some people that the underlying Admin settings are in neo-*.xml files, but those are NOT compatible for you to just "copy the CF9 version of those XML files into the CF 11 location for them". If THAT's what you mean about "syntax changes", yes, there are some. (If you are referring to your code, there is a syntax checker in the CF Admin to help with that. More in a moment.)

    So back to moving your admin settings, I said there is something to help with that, even on Standard and without the CAR file mechanism. If you are installing CF11 on the same server as CF9, you will find that after the installer finishes, your first run of the CF Admin will cause it to run an migration wizard which will automatically pull in (properly) your CF9 admin settings into your CF11 setup.

    But perhaps you are installing CF11 on a new machine. In that case, this import won't happen automatically (since CF doesn't look at, and can't be told to look at, the other machine during installation).

    But here's good news: Adobe accounted for that, and they provide documentation about running the migration wizard "after the fact". You just need to pull those neo*.xml files (all of them, you can't pick and choose) from the CF9 server to the CF11 server. (This works going up from any release of CF to another, not just 11.) You put the files in a certain place, and tweak a certain XML file, and then just run the administrator and it will open the migration wizard.

    There are multiple resources on this:

    https://wikidocs.adobe.com/wiki/display/coldfusionen/Installing+the+Server+Configuration#InstallingtheServerConfiguration-Updatingfromanearlierversion (very brief)

    https://coldfusionsolution.wordpress.com/2014/09/28/migration-wizard-in-coldfusion/

    http://blogs.coldfusion.com/post.cfm/migrating-from-coldfusion-9-to-coldfusion-11

    https://helpx.adobe.com/coldfusion/kb/coldfusion10-manual-migration.html (applies just as well to CF11)

    Finally, if you were interested in "syntax checking" for your CODE, I had said there was a syntax cheker for that. See the following for more info on the "Code Analyzer" in the CF Admin (which has also been there for many releases):

    https://wikidocs.adobe.com/wiki/display/coldfusionen/Using+the+ColdFusion+Administrator#UsingtheColdFusionAdministrator-CodeAnalyzerpage

    http://www.raymondcamden.com/2011/06/28/Need-to-scan-ColdFusion-code-Try-the-analyzer

    I know I've said twice that these things have been around for many releases. I don't say that to suggest you should have known of them. Heck, there's an awful lot about CF that many never notice. :-) I just point it out to clarify the these are NOT new things unique to CF 11, in case someone may be reading this and interested in them for CF10 or earlier.

    Let us know if any of this helps.

Leave a Comment

Leave this field empty: