Macromedia ColdFusion MX logo

Release Notes

Last updated: May 15, 2002 11:00 PM

For the most current release notes, click here.

Welcome to Macromedia ColdFusion MX, the next generation of ColdFusion Server!

The following release notes describe known issues, installation notes, and late-breaking news about ColdFusion MX. Use the online forums at http://www.macromedia.com/go/prod_forums to share ideas and techniques with other users.

To help you get up to speed quickly, we’ve assembled Getting Started information geared to fit your needs—whether you’re new to ColdFusion or an experienced web developer. Follow the Getting Started links in the ColdFusion Administrator. (To access the ColdFusion Administrator in Windows, select Start > Programs > Macromedia ColdFusion MX > Administrator.)

To learn more about ColdFusion MX, see the product information and FAQ at http://www.macromedia.com/software/coldfusion and visit our MX Application Development Centers on the Designer & Developer Center.

Contents
Late-Breaking News
Installing and Configuring ColdFusion MX
Migrating from ColdFusion
Performance and Scalability
Localization
Configuring Data Sources in ColdFusion MX
Web Services
ColdFusion Administrator
Graphing in ColdFusion MX
Other Known Issues
Documentation Updates

Note: The release notes for Flash Remoting (which lets you interact with ColdFusion pages, components, and server-side ActionScript from a Flash movie), are located at http://www.macromedia.com/go/flashremoting_releasenotes.


Late-Breaking News

The following table describes the latest changes in ColdFusion MX, beyond what is included in the documentation:

Product Area Change
Configuring IIS Please see the Windows installation notes for an important change in configuring IIS for ColdFusion MX.
Installing ColdFusion MX on HP-UX The following are the required settings for HPUX:
  • Ensure that you have the latest HP-UX 11.0 patch bundle installed. To download the latest patch bundle, go to http://www.hp.com
  • Configure your minimum kernel parameter settings as follows:

    To indirectly boost the NKTHREAD, use the following settings:
    Parameter Value
    maxdsize 0x79000000
    maxssize 0x8000000
    maxfiles 1024
    maxusers 64
    max_thread_proc (NKTHREAD-10)

    To directly set the NKTHREAD, use the following settings:
    Parameter Value
    maxdsize/td> 0x79000000
    maxssize 0x8000000
    maxfiles 1024
    maxusers 64
    max_htread_proc 1024
    nkthread 10240
(Linux SuSE) Configuring the Zeus web server 4.1 The Zeus connector uses the following Netscape module:
libjrun_nsapi35.so

Configuring Zeus 4.1 for ColdFusion MX

To configure Zeus 4.1 to use ColdFusion MX on SuSE, run the following command on a single (long) line:
cf_root/jre/bin/java -jar /opt/coldfusionmx/runtime/lib/wsconfig.jar 
  -ws zeus -dir /usr/local/zeus/ns-config/https-<your site>/config -v


The following is a sample command:
/opt/coldfusionmx/jre/bin/java -jar /opt/coldfusionmx/runtime/lib/wsconfig.jar 
  -ws zeus -dir /usr/local/zeus/ns-config/https-surf/config -v


Removing the Zeus 4.1 configuration for ColdFusion MX

To remove the Zeus 4.1 configuration for ColdFusion MX, run the following command on a single (long) line:
 
cf_root/jre/bin/java -jar /opt/coldfusionmx/runtime/lib/wsconfig.jar 
  -ws zeus -dir /usr/local/zeus/ns-config/https-<your site>/config -v -r


The following is a sample command:
 
/opt/coldfusionmx/jre/bin/java -jar /opt/coldfusionmx/runtime/lib/wsconfig.jar 
  -ws zeus -dir /usr/local/zeus/ns-config/https-surf/config -v -r
Changing the web document root for the built-in ColdFusion MX web server Note: cf_root in the following instructions refers to the directory in which you installed ColdFusion MX. By default, this is C:\CFusionMX in Windows and /opt/coldfusionmx on UNIX.

Windows
  1. Make a backup copy of cf_root\wwwroot\WEB-INF\jrun-web.xml, and then open the original version of the jrun-web.xml file.
  2. Edit the existing virtual mapping to point to the new web document root directory, as shown in the following example:
    <virtual-mapping>
       <resource-path>/*</resource-path>
       <system-path>C:/cfusionmx/wwwroot/</system-path> 
    </virtual-mapping>
    
  3. You can now move the CFIDE and CFDOCS directory to the new web document root.
    Caution: Do not move the WEB-INF directory. It must stay under the cf_root/wwwroot directory.
UNIX
  1. Make a backup copy of cf_root/wwwroot/WEB-INF/jrun-web.xml, and then open the original version of the jrun-web.xml file.
  2. Add a virtual mapping that points to the new web document root, as in the following example. This will override the default web document root cf_root/wwwroot.
    <virtual-mapping>
       <resource-path>/*</resource-path>
       <system-path>/opt/docroot/</system-path> 
    </virtual-mapping>
    
  3. You can now move the CFIDE and CFDOCS directories to the new docroot.
    Caution: Do not move the WEB-INF directory. It must remain under the cf_root/wwwroot directory.
cfhttp You can now use cfhttp to post raw XML data, by using a new parameter type called XML. This sends the raw XML data with content-type = text/xml. The following is a sample cfhttp call to post raw XML data:
<cfhttp url="..." method="POST">
<cfhttpparam name="param1" value="<xml string>" type="XML">
</cfhttp>
Also, cfhttp allows only one cfhttpparam for a post when posting raw XML data.
cfregistry
(Windows only)
To support very large sets of registry data, cfregistry now supports the startRow and maxRows attributes when used in conjunction with action="GETALL" and type="KEY". The startRow value is the first row of the results to actually include in the result query (default: 1). The maxRows value is the number of rows after the startRow to include in the result query (default: all remaining). These attributes will help you to avoid running out of memory with very large data sets. However, please note that the ColdFusion-related values that are stored in the registry are subject to change; therefore, for best results, store your data in a database.
cfset The cfset tag has a new keyword, var, that specifies that the variable being defined is a function-local variable, a variable that is only available inside the body of a function. The usage is as follows:
<cfset var variableName="value">
The cfset tag var keyword is the equivalent of the var statement in cfscript. You must place all cfset tags that use the var keyword at the beginning of the cffunction tag body, before any other ColdFusion tags. You can use the var keyword in a cfset tag only if the tag is inside the body of a cffunction tag. If you use the var keyword in a cfset tag outside a cffunction tag body, ColdFusion displays an error message. The following example shows how to use the new keyword:
<cffunction name="myFunct">
   <cfset var myVar = "This is a test">
   <cfreturn myVar & " message.">
</cffunction>
<cfoutput>#myFunct()#</cfoutput>
In this example, the variable myVar exists only when the function myFunct executes, and it is not available elsewhere on the ColdFusion page.

For more information on using the var keyword, see the Documentation Updates page on the Macromedia website.
REFind() The REFind() function returns subexpressions as follows: it returns one position/length pair for the entire match and subsequent position/length pairs for each parenthesized group within the match. In ColdFusion 5, in some cases this function would not include a position/length pair for each parenthesized group.
Date and time formatting The following functions now support the mask attribute values short, medium, long, and full: DateFormat, TimeFormat, LSDateFormat, and LSTimeFormat.

For more information, see CFML Reference.
Query of Queries If you create a Query object with QueryNew() and populate a column with dates that have one-digit months (for example, 4/24/02), the dates are preserved as a string inside the Query object until a Query a Query is applied to the Query object, as in the following example:
<cfset queryAddRow(q1,3)> 
<cfset q1['col1'][1] = 1> 
<cfset q1['col2'][1] = "4/24/02"> 
<cfset q1['col1'][2] = 2> 
<cfset q1['col2'][2] = "3/26/04"> 
<cfset q1['col1'][3] = 3> 
<cfset q1['col2'][3] = "2/28/03"> 


<cfquery name="qoq" dbtype="query"> select * from q1 </cfquery>
Once a Query a Query is applied to the query object, the string representations of the dates are turned into date objects. For example, (row 1, col2) becomes {ts '2002-04-24 00:00:00}. Any subsequent access to these cells is in that format. If you want to retrieve it back in its original format you must use use DateFormat and apply the "mm/dd/yy" mask.
Secure LDAP connections You no longer need a Netscape Cert7 format certificate store file (cert7.db) to make a secure LDAP (SSL v2) connection. You can now omit the second token of the string for the secure attribute of the cfldap tag that was formally used to specify the location of the cert7.db file, and just use SECURE="CFSSL_BASIC" instead. This is because cfldap SSL support in ColdFusion MX now uses Java Secure Socket Extension (JSSE), and JSSE does not accept cert7.db as a keystore.

This is how it works: ColdFusion MX uses Java Native Directory Interface (JNDI), the LDAP provider, and an SSL package to create the client side of an SSL communication. The LDAP server provides the server side. The LDAP server that cfldap is connecting to using SSL holds an SSL server certificate. During the initial SSL connection, the LDAP server presents its server certificate to the client. If the client trusts this certificate, the SSL connection is established and secure LDAP communication can begin.

The simplest way to establish this trust is to store the server's certificate in the jre/lib/security/cacerts keystore of the JRE used with ColdFusion MX. This certificate is different from cert7.db—this certificate must be in X.509 format to import it. The simplest way to import to the client's keystore is to use the keytool command to import the server's cert into the cacerts store in /jre/lib/security. For example, enter the following:

keytool -import -keystore cacerts -alias ldap -file ldap.crt

(The keytool utility is in the jre/bin directory and the initial password is "change it").
Accessing Component Object Model (COM) objects ColdFusion MX includes a utility, com2java.exe, that creates Java stub files for COM objects. ColdFusion can use Java stub files to access COM objects more efficiently than when the cfobject tag or CreateObject tag creates the connection to the objects directly. Also, you must generate Java stubs to correctly access complex COM objects that do not properly make all their features available through the COM IDispatcher interface.

If you create Java stub files for a COM object, you do not have to change your ColdFusion code. You continue to use the cfobject tag with a type attribute value of COM or the CreateObject function with a first argument of COM, and you access the object properties and methods as you normally do for COM objects in ColdFusion.

For instructions on how to create Java stub files for COM objects, see Technical Brief 22922.
Verity searches The Index Verity Collections page now recognizes the language with which a Verity collection was created and needs to be indexed, and ColdFusion MX automatically indexes a collection using the language with which it was created.
Sandbox security
You must use absolute paths for security sandbox names.
Flash example applications If you use Netscape 6.2 or an earlier version, you cannot view the Flash example applications installed with ColdFusion MX. Netscape 6.3 will resolve this issue.

Back to Contents


Installing and Configuring ColdFusion MX

This section contains important installation information for all platforms, Windows, and UNIX. This section does not list system requirements or provide installation instructions. For this information, see Installing ColdFusion MX.

Note: In this section, cf_root refers to the directory in which you installed ColdFusion MX. By default, this is C:\CFusionMX in Windows and /opt/coldfusionmx on UNIX.

The following table lists other installation-related tasks and where you can find the information that you need to complete them:

Task Information resource
Migrate a ColdFusion application to ColdFusion MX The Migrating from ColdFusion section of this document and Migrating ColdFusion 5 Applications
Interact with ColdFusion pages, components, and server-side ActionScript from a Flash movie, using the Flash Remoting service in ColdFusion MX. Using Flash Remoting and Using Server-Side ActionScript with ColdFusion MX.
Note: You must install the Flash Remoting Components in the Flash MX authoring environment. The Flash MX authoring environment is required to build applications that connect to and interact with the Flash Remoting service in ColdFusion.
Install ClusterCATS To download the appropriate setup file for your platform, see http://www.macromedia.com/go/cfmx_clustercats.

For installation instructions, see Using ClusterCATS.

Installation notes for all platforms

The following table contains important information for installing and configuring ColdFusion MX that applies to all platforms.

Task Issue
Preparing to install If you installed a prerelease version of ColdFusion MX, you must uninstall the prerelease version and then do one of the following, depending on your platform:
  • In Windows, delete the cf_root directory (Neo or CFusionMX) and restart your computer.
  • On UNIX, delete the cf_root directory (neo or coldfusionmx) and stop any active ColdFusion MX processes.
    To do so, enter ps -eaf | grep cfusion  or   ps -eaf | grep neo to see if there are any active process IDs (PIDS), and then run kill -9 <PID> for each active ColdFusion MX process.
If you attempt to install ColdFusion MX without uninstalling the prerelease version, the installer will prompt you to uninstall.
ColdFusion MX uses the Java Runtime Environment (JRE) to run, and installs its own private copy of the Sun JRE 1.3.1_03 by default into the ..\runtime\jre directory on Windows and the ../jre directory on Solaris and Linux. (On HP-UX, ColdFusion MX uses the HP JRE release 1.3.1_01.)

Please make sure that your computer meets the minimum system requirements for the JRE. The SUN JRE 1.3.1_03 release notes are at http://java.sun.com/j2se/1.3/.
Installing on a computer with an existing JRun 4.0 installation If you install ColdFusion MX on a computer that has JRun 3.x or 4.0 installed and JRun is configured to connect to an external web server, choosing to configure the same external web server for ColdFusion MX will cause JSP pages and servlets to be processed through ColdFusion MX instead of through JRun.
Configuring web servers ColdFusion MX supports the following web servers: IIS 4.0 and 5.x (Windows only), Apache 1.3.2x and later as well as 2.x, Netscape 3.6x, iPlanet 4.x and 6.x, Zeus 4.1 (Linux SuSE only), and the ColdFusion MX built-in web server.
If you configure the Apache or Netscape/iPlanet web server to use ColdFusion MX, the ColdFusion Administrator launches on port 80 by default. If your web server runs on a different port, you must change the URL for the ColdFusion Administrator to reflect this.
If you configure an instance of Apache web server that supports EAPI for ColdFusion MX, when you start this instance of Apache server, an error similar to the following appears:
[warn] Loaded DSO c:/cfusionmx/runtime/lib/wsconfig/1/mod_jrun.so uses plain Apache 1.3 API, this module might crash under EAPI! (please recompile it with -DEAPI)
You should be able to safely ignore this error; the ColdFusion Apache module is not compiled with EAPI because it does not utilize any of the EAPI funtionality.

However, if you do encounter a problem, please contact Macromedia Technical Support.
Websites that use multiple host names with different document roots for accessing the ColdFusion MX server must change the cacheRealPath option of the ProxyService to false. This setting might cause slower performance; this is why the option is set to true by default.

Edit c:/cfusionmx/runtime/servers/default/SERVER-INF/jrun.xml and change the value of the following option from true to false.
<!-- set this to false for multi-hosted sites -->
<attribute name="cacheRealPath">true</attribute>
You can run ColdFusion MX on multiple web servers on the same computer; for example, to compare the same templates on different web servers. To do so, configure each web server following the instructions in Installing ColdFusion MX. Then create a virtual mapping that points to the CFIDE directory.
If you have any problems with the IIS, Apache or Netscape webserver connectors, there is a log file that will have information about the failure. Please provide this to a technical support engineer to help them diagnose the problem. This log file is located in cf_root\runtime\lib\wsconfig\wsconfig.log in Windows and cf_root/runtime/lib/wsconfig/wsconfig.log on UNIX.

Windows installation notes

The following table contains important information for installing and configuring ColdFusion MX in Windows.

Task Issue
Installing on a computer with an existing ColdFusion installation


(For compatibility issues between ColdFusion and ColdFusion MX, see the Migrating from ColdFusion section of this document.)
If the ColdFusion MX installer detects an earlier version of ColdFusion on the computer, an upgrade dialog box with the following options appears:
  • co-exist – This option is selected by default. If you select it, you can run both versions of ColdFusion on the same computer. The earlier version is left in place, and by default, ColdFusion MX runs on the built-in web server on port 8500. To configure ColdFusion MX to run on a different web server after the installation, see the Configuring your System chapter of Installing ColdFusion MX.
  • upgrade – This option removes the earlier version of ColdFusion and installs ColdFusion MX.
For both options, after the installation, when the ColdFusion Administrator opens, you are prompted to migrate your settings from ColdFusion to ColdFusion MX. You must do this to complete the upgrade.
When migrating ColdFusion settings to ColdFusion MX (after upgrading from ColdFusion), the client variable data that is stored in the registry is moved to the ColdFusion MX registry locations. If you have an extremely large amount of client data in your registry from your ColdFusion installation, your registry might reach capacity during the copy operation. In this case, ColdFusion MX aborts the copy operation and continues migrating your other ColdFusion settings. In addition, you might see the following error:
Unable to set value hkey_local_machine\software\macromedia\coldfusion\currentversion\
Clients\141363-76934365\\HITCOUNT: Windows error number 0 occurred. Insufficient system resources exist to complete the requested service.
Installing ColdFusion MX in Windows During the installation you are prompted for the location of the program files and the web root directory for ColdFusion MX. There might be a delay when you click the Next button; please do not cancel the installation. The installer is checking for any conflicting folders in the web root path (such as CFIDE or CFDOCS) and backing them up with "_0" at the end of the name (for example, CFIDE_0 and CFDOCS_0).
The Repair and Modify options have been removed and are not supported with the final release. If you have a prerelease version of ColdFusion MX installed, you must uninstall before installing the final version. If you attempt to install the final version over an existing version, you are prompted to repair, modify, or remove the program. However, only the Remove option is supported. This is a limitation of the installer for Windows, which launches the remove program of the installed version rather than the remove program of the version that you are attempting to install.
Configuring IIS for ColdFusion MX To configure IIS for ColdFusion MX, enter the following command as a single (long) line:
cf_root\runtime\jre\bin\java -cp cf_root\runtime\lib 
  -jar cf_root\runtime\lib\wsconfig.jar 
  -ws IIS -site "0" -filter-prefix-only -map .cfm,.cfc,.cfml,.jsp -v
The following is a sample command:
c:\cfusionmx\runtime\jre\bin\java -cp c:\cfusionmx\runtime\lib 
  -jar c:\cfusionmx\runtime\lib\wsconfig.jar 
  -ws IIS -site "0" -filter-prefix-only -map .cfm,.cfc,.cfml,.jsp -v 
This is contrary to what is published in Installing ColdFusion MX (Chapter 2: Configuring your System > Configuring web servers > Configuring Internet Information Server (IIS) in Windows), which has -wd instead of -ws.

Note: Using -site "0" configures all IIS websites for ColdFusion MX; whereas using -site "1" configures only Default Web Site. You can also enter a named web site as well; for example, -site "foo".
The web server connector for IIS creates an IIS ISAPI filter and IIS application mappings. These are both set at the IIS master properties level, so the installer configures all IIS websites for ColdFusion MX by default. Also, if you add a site to IIS, it should automatically inherit the ColdFusion MX settings. If not, you must manually apply the application mappings from the master level.
The web server connector for IIS has changed for the final release. In the prerelease versions, the ColdFusion MX connector for IIS configured the IIS master properties so that the changes applied to all sites. However, due to issues with these settings not propagating down to the site level, the connector now configures only the Default Web Site for ColdFusion MX. If you want to change this so that all IIS sites are configured for ColdFusion MX, do the following:
  1. Run cf_root/bin/Remove_all_connectors.bat
  2. Run cf_root/bin/IIS_connector.bat

UNIX Installation Notes

The following table contains important information for installing and configuring ColdFusion MX on UNIX.

Task Issue
Preparing to install You must stop all ColdFusion-related or JRun-related services before running the ColdFusion MX installation.
To install and run ColdFusion MX on Linux, you must first install the latest version of the glib, glibc, libstdc++, and gcc libraries. See your Linux vendor's website for these packages. For example, Red Hat 7.1 ships with glibc-2.2.2-10, but ColdFusion MX requires glibc-2.2.4-24. Also, on all versions of Red Hat 7 and above, please make sure that the compat-libstdc++ rpm is installed. You can get this and all other RPMs for Red Hat from ftp://ftp.redhat.com/pub/redhat. SuSE users can find the RPM updates at ftp://ftp.suse.com/pub/suse.
To install on UNIX you must have 400MB free disk space (500 MB recommended). This is contrary to what is documented on the product packaging and in Installing ColdFusion MX.
Installing on a computer with an existing ColdFusion installation


(For compatibility issues between ColdFusion and ColdFusion MX, see the Migrating from ColdFusion section of this document.)
The ColdFusion MX UNIX installer does not automatically detect an earlier version of ColdFusion on your computer. Instead it displays the following prompt:
Is there already a version of ColdFusion installed on this computer?
If you answer N, you are not prompted to upgrade or migrate ColdFusion settings into ColdFusion MX.

If you answer Y, you will be given the option to migrate your ColdFusion settings into ColdFusion MX after the installation, once you start the ColdFusion Administrator. Also, the installer displays the following prompt:
Would you like to upgrade the existing ColdFusion installation?
If you answer N, your existing ColdFusion installation will not be upgraded; you will be able to run both versions of ColdFusion on the computer, and by default, ColdFusion MX will run on the built-in web server on port 8500. To configure ColdFusion MX to run on a different web server after the installation, see the Configuring your System chapter of Installing ColdFusion MX.

If you answer Y, the installer removes the earlier version of ColdFusion and installs ColdFusion MX.
Installing ColdFusion MX on UNIX Admin and RDS passwords are displayed in plain text during the installation.
The UNIX installer displays a status bar at the end of the installation that stops for a while. This is expected behavior; the installer has not hung. Please be patient and let the installer run to completion.
After installing, if you do not see a runtime directory under the cf_root directory, you might have run out of of temporary disk space during the installation. (The installer does not properly detect if the temporary directory has insufficient disk space for the installer to expand itself.) To remedy this, uninstall ColdFusion MX, change the temporary directory to a directory on a partition with more free disk space (400 MB minimum, 500 MB recommended), and reinstall.

To change the temporary directory, run the following commands in the order in which they are listed.
Note: '/home/tmp' in the following commands refers to a directory on a partition with more free disk space; for example, you could use /home on most Linux systems and /export/home on Solaris.
mkdir /home/tmp
IATEMPDIR=/home/tmp
export IATEMPDIR
echo $IATEMPDIR
Running the echo command should confirm what you set the environment variable to.
If you have an earlier version of ColdFusion installed on the target computer, and you choose the upgrade option during the installation, note that any native data sources that you had in ColdFusion will not be automatically migrated to ColdFusion MX on UNIX.
Running ColdFusion MX On Linux, running a 'ps' command outputs multiple cfusion processes. This is expected behavior. These are not individual processes, but threads, due to the manner in which Linux handles threads.
On Solaris, ColdFusion MX might shut down when you log out of your session. This is an issue with Java and nohup on Solaris. To avoid this issue, drop into the Korn or Bash shell (enter ksh or bash), and then start ColdFusion MX.

Back to Contents


Migrating from ColdFusion

The following table describes differences between ColdFusion MX and ColdFusion  that could require you to change your application in order for it to run on ColdFusion MX.

Note: These differences are in addition to those listed in Migrating ColdFusion 5 Applications.

Product Area Compatibility Issue
Double-byte character storage in SQL Server If you store double-byte data in a SQL Server database that is not Unicode in nchar, nvarchar, or ntext data types, you might need to convert your data to Unicode encoding.
Error variables The cferror variable structure has changed. A cfdump of the error variables (<cfdump var=#error#>), shows a single-level array in ColdFusion 5, while in ColdFusion MX it is a multilevel array. To access certain error variables with the "error." notation you must use additional array values. For example, ErrorCode in ColdFusion 5 is ERROR.ERRORCODE, while it is ERROR.ROOTCAUSE.ERRORCODE in ColdFusion  MX. You can use <cfdump> to see all of the values.
Variables with more than 3 dots in name In ColdFusion 5 and earlier releases, you could have a variable with more that 3 dots in its name, such as in the following example:
<cfset a.b.c.d.e = "foo">
<cfoutput>
  "#a.b.c.d.e#"
</cfoutput>
Such variables fail in ColdFusion MX with the following error:
Element B.C.D.E is undefined in A
This is because the new structure auto-creation functionality is failing to properly create structures that are more than 3 levels deep.

Any variable with less than or equal to 3 dots in its name should work properly.
Binary values In ColdFusion MX, binary strings are represented as byte arrays (assign-by-reference), so you can manipulate them using standard CFML array logic. In ColdFusion 5, binary values are immutable (assign-by-copy).
Columns with the same name In all versions of ColdFusion, when two columns with the same name are returned from a database, the choice of the column selected for the ColdFusion result set is undefined (theoretically, it is random). However, in practice you could predict the column selection in earlier versions of ColdFusion. This is no longer the case in ColdFusion MX. Do not rely on a predictable selection of identically-named columns in any case; instead, use column aliases to remove all uncertainty.
Duplicate URL parameters ColdFusion MX handles duplicate URL parameters differently than in ColdFusion 5. In ColdFusion 5, calling Test.cfm?a=1&a=2 returns the value a=2 for the URL parameter; in ColdFusion MX, it returns the value a=1,2.
Reserved words in ColdFusion MX Currently in ColdFusion MX, you can create a variable with the same name as a scope (Application, CGI, Client, Cookie, Form, Request, Server, Session, URL, or Variables). The created variable is only visible if the Variables scope prefix is explicitly used; otherwise, an error results. However, scope names are reserved in ColdFusion MX and might be enforced in a later version. Therefore, Macromedia strongly recommends that you do not use scope names as variable names.

Also, in a Query of Queries, you can no longer use SQL reserved words as variable or column names, unless they are escaped using brackets []; for example, SELECT [count] FROM MYTABLE.

For more information about reserved words in ColdFusion MX, see Chapter 2: Elements of ColdFusion and Chapter 22: Using Query of Queries in Developing ColdFusion MX Applications with CFML.
Scheduler data In ColdFusion 5, all scheduler information is stored in the registry. Each of the registry keys has a name without spaces; for example, StartDate. In ColdFusion MX, the scheduler information is stored in an XML file, and the format of what formerly were registry keys has also changed, so that all compound variable names are separated with underscores; for example, Start_Date. This only affects applications that use the scheduler information in the ColdFusion 5 registry.
Use operating system logging facilities
option in the ColdFusion Administrator
(Windows only) In the ColdFusion Administrator, on the Debugging & Logging > Logging Settings page, there is no longer an option to Use operating system logging facilities, because ColdFusion MX always uses the Windows logging facilities.
Verity searches (Windows only) If you previously added cfusion\bin or cfusion\verity\_nti40\bin to your system path for ColdFusion 5, you must remove it before upgrading to ColdFusion MX in order for ColdFusion MX to find the correct Verity DLL files.
Japanese version,
sort functions
Sort functions such as ListSort() and ArraySort() return items in a slightly different order in ColdFusion MX than they do in the Japanese version of ColdFusion 5. This is because ColdFusion MX sorts characters by their Unicode char number, whereas the Japanese version of ColdFusion 5 sorts characters by their shift_jis char number.
LSIsDate() In ColdFusion MX, LsIsDate("3-1-2002") returns No, whereas in ColdFusion 5 it returns Yes. This function only accepts the hyphen character (-) as a date delimiter in the Dutch(Standard) and Portuguese(Standard) locales.
DateFormat(), TimeFormat()
LSDateFormat(), LSTimeFormat()
If an invalid mask is passed into one of these functions (for example, "dd-mm-yymm"), the function outputs the invalid characters in ColdFusion 5 and ColdFusion MX. However, ColdFusion 5 delimits each character of the output with an apostrophe (') character.
cfdirectory When action=list, cfdirectory only reports the ReadOnly and Hidden attributes in Windows and on UNIX. On UNIX, it returns the mode and attributes as empty. If you need additional information about directories on a Windows local machine, use cfexecute. On UNIX, use cfexecute and ls -l.
cfheader To access the status code header for a page that was set with the cfheader statusCode attribute, use
<cfdump var="#cfhttp#"> or <cfdump var="#cfhttp.statuscode#">.
Do not use <cfdump var="#cfhttp.responseheader#"> .

Note: The statuscode value that is set with the statusCode attribute is not the same as the status_code value that is set with the name attribute.
cfloop This tag no longer returns struct keys in alphabetical order, as in ColdFusion 5. It returns struct keys in no particular order, contrary to what is published in Migrating ColdFusion 5 Applications.

Back to Contents


Performance and Scalability

The following table contains information for maximizing performance with ColdFusion MX.

Product Area Notes
Installed JRE By default, ColdFusion MX installs with the SUN 1.3.1_03 Java Runtime Environment (JRE) on all platforms except HP-UX. (ColdFusion MX on HP-UX uses the HP JRE release 1.3.1_01.) Macromedia tests show that nearly every CFML operation exceeds ColdFusion 5 in performance and scalability when ColdFusion MX uses this JRE. However, advanced ColdFusion MX users might want to experiment with other JREs (for example, the IBM 1.3.x JRE with Windows or Linux) to achieve even faster runtime performance. You can switch JREs (also known as virtual machines or VMs) in the ColdFusion Administrator on the Java and JVM page—just set the Java Virtual Machine Path option to the \JRE directory of the JRE that you want ColdFusion MX to use and then restart the server.

Caution: If you specify an invalid path, you cannot start ColdFusion MX. To remedy this problem, correct the path in the cf_root\runtime\bin\jvm.config file in Windows or the cf_root/runtime/bin/jvm.config file on UNIX.
Simultaneous Requests option By default, ColdFusion MX installs with the Simultaneous Requests option in the ColdFusion Administrator set to 10. This setting should provide reasonable performance for most applications on 1- or 2-CPU machines, but for large SMP machines, or for applications with more input/output (I/O) or CPU-bound characteristics, you can achieve significant performance gains by adjusting this setting. As a general guideline to adjust this setting, Macromedia recommends that you start with a value of 3-5 for each CPU, and fine-tune from there as necessary.
Trusted Cache option For maximum performance in a production environment, make sure that the Trusted Cache option in the ColdFusion Administrator is enabled.
Isolation levels Macromedia tests indicate that some database-intensive applications can improve their performance by changing the default Isolation Level of their data sources from the implicit default setting of READ_COMMITTED to READ_UNCOMMITTED.

To change this setting, edit the cf_root\runtime\servers\default\SERVER-INF\jrun-resources.xml file in Windows or the cf_root/runtime/servers/default/SERVER-INF/jrun-resources.xml file on UNIX. Add the following line to the definition of your data source (as its own line):
<isolation-level>READ_UNCOMMITTED</isolation-level>
Note: If you edit your data source definition later using the ColdFusion Administrator, the definition is saved without the Isolation Level setting; you must add this value to the jrun-resources.xml file again.
If you do not want to change the isolation level for the entire data source, you can explicitly set the isolation level for a transaction by specifying the isolation attribute with the cftransaction tag.

The default isolation level of the JDBC database drivers in ColdFusion MX might differ from the ODBC and native drivers in ColdFusion 5 that you used to connect to your database. Higher isolation levels result in stronger data consistency but less concurrency, which can impact performance. Setting the isolation level to lower levels for a transaction can improve performance.
Accessing Component Object Model (COM) objects The Java call to create a new COM object instance can take substantial time. As a result, creating COM objects in ColdFusion MX is substantially slower than in ColdFusion 5. You can work around this issue to improve COM performance to near ColdFusion 5 speed under certain circumstances: If your COM object can be shared throughout your application—that is, it does not need to be created for every request or session—create the object in the Application scope and use the same object throughout the application. This technique works only for COM objects that are designed for sharing.

Because the object can be accessed from multiple sessions simultaneously, you must also consider the following threading and locking issues:
  • For best performance, the object should be multi-threaded. Otherwise, only one request can access the object at a time.
  • Whenever your code accesses common data, for example, if all application sessions access the same Excel spreadsheet, you must lock the code that accesses the data. In general, you do not have to lock code that uses a shared object if data is not shared by multiple requests.
This technique is documented in detail in Technical Brief 22921.

You can also improve performance of all COM objects by creating Java stubs, as described in Technical Brief 22922. Java stubs do not improve processing time as much as sharing the COM object, but you can use them with all COM objects. Also, you must generate Java stubs to correctly access complex COM objects that do not properly make all their features available through the COM IDispatcher interface. Therefore, to get the greatest performance increase and prevent possible problems, combine the two techniques.

Back to Contents


Localization

The following table describes the known localization issues in ColdFusion MX.

Notes:

Issue ID
When using the SUN JRE 1.3.1 on an English(UK) locale, the LSIsDate function returns False for a date that has a one-digit month or day (for example, 1/1/01). To work around this, insert a zero in a one-digit month or day (for example, 01/01/01). 38440
The ParseDateTime function does not handle Japanese formatted dates in ColdFusion MX. You must use the LSParseDateTime function when using Japanese dates. 34000
ColdFusion MX does not support using double-byte characters in links. 36913
You cannot use cfinclude to include a file with a double-byte file name. 36910
If an invalid mask is passed into LSTimeFormat() or LSDateFormat (for example, "dd-mm-yymm"), the function outputs the invalid characters in both ColdFusion 5 and ColdFusion MX. However, ColdFusion 5 delimits each character of the output with an apostrophe (') character. 36388
The Encrypt and Decrypt functions do not work with double-byte character sets. If you pass a string containing double-byte characters to the Encrypt function, and later pass the encrypted value to the Decrypt function, the string is not properly decrypted. 38614
When reading and writing a binary file, you should specify ReadBinary in the action attribute of cffile and then create the new file, as the following example shows:

<cffile action="ReadBinary" variable="x" file="c:\input-binaryfile">
<cffile action="write" output="#x#" file="c:\output-binaryfile">


On computers that do not use a Cp1252 file encoding by default (like computers that are set to work with Japanese), specifying action="read" in the cffile tag for a binary file will corrupt the file.
39473
(Windows) If you are using the Microsoft Access driver or ODBC Socket driver on a multi-byte character set operating system, you must do the following:
  1. Start the ColdFusion MX ODBC Server and ColdFusion MX ODBC Agent services, if they are not already running.
  2. In a command prompt, enter the following command:
  3. cf_root\db\slserver52\admin\setcp.bat OS
  4. Stop the ColdFusion MX ODBC Server and ColdFusion MX ODBC Agent services.
  5. Start The ColdFusion MX ODBC Server and ColdFusion MX ODBC Agent service.
This is what the setcp.bat file does: This file sets the service code page for the ODBC server that is licensed with ColdFusion MX. It takes one parameter; the valid values for this parameter are OS and Default. If no parameter or an invalid value is passed, the service code page is returned to its default state—that is, no setting ServiceCodePage OS is used for multi-byte character set operating systems like Japanese or Korean. ServiceCodePage Default supports only ASCII/EBCIDIC transliteration.
39730
39735
(Windows) On a multi-byte operating system, you can change the ColdFusion MX ODBC services (SequeLink) to multi-byte code page support mode. To do so, run the following command from a command prompt:
cf_root/db/slserver32/admin/setcp.bat OS
You can go back to the default by executing the setcp.bat, either with no parameters or with Default as the parameter, as in the following sample command:
c:/cfusionmx/db/slserver32/admin/setcp.bat Default
Make sure that both the ColdFusion MX ODBC Agent and ColdFusion MX ODBC Server services are running when you execute the commands. After executing the commands, you must restart both services for the change to take effect.
38855
You cannot create Verity collections and search using double-byte text. 37650

For information about localization changes from ColdFusion 5 to ColdFusion MX, see the Locales section of Migrating ColdFusion 5 Applications.

Back to Contents


Configuring Data Sources in ColdFusion MX

The following table lists the known issues for configuring data sources in ColdFusion MX.

Issue Bug #
A data source that was created with an early beta release of ColdFusion MX might have too short of a connection timeout period for it to function as a client variable store. Delete and recreate any data source that was created with an early beta version before you designate it as a client variable store. 36167
When using Microsoft Access as a client store, an error is generated if the cumulative size of client variables exceeds 255 characters. 45548
The (OEM) JDBC Microsoft SQL Server driver in ColdFusion MX does not support SQL Server 6.5. If you run a query using this driver, the following error is thrown:
The SQL statement [ select 1 ] caused an database query exception.

java.sql.SQLException: [Microsoft SQL Server] Login failed.
RAW_TRACE at coldfusion.tagext.lang.IncludeTag.doStartTag(Unknown Source)
PROBLEM java.lang.NumberFormatException: at coldfusion.tagext.lang.IncludeTag.doStartTag(Unknown Source)
28436
You must add the following line to the connectstring for a DB2 Data Source Name (DSN) (under Advanced Settings in the ColdFusion Administrator):
CollectionID=default;packageName=<pkgname>;CreateDefaultPackage=false
where pkgname is the name of the package (maximum of 7 characters) that the driver uses to process SQL statements.

If neither a CollectionID or packageName already exists, set CreateDefaultPackage=true for the first connection, and then modify the data source and set CreateDefaultPackage=false.
36798
The Sybase JDBC connection requires a stored procedure on the Sybase server that does not get installed by default on Sybase 11.9 or higher. ColdFusion MX ships this stored procedure in the directory <install dir>/db/sybase. If, when creating a data source, you get an error message stating that procedure 'sp_default_charset' is not found, install this stored procedure on Sybase. 32230
Sybase servers that are configured to use the CP437 character set might fail to connect. If you receive the following error message when you try to connect to your Sybase server, you must update your \lib\macromedia_drivers.jar file.
[Macromedia][Sybase JDBC Driver]Character set CP437 not found in macromedia.util.transliteration.properties.
A Technical Brief about this issue is forthcoming, which will explain the required changes.
35691
(Windows NT 4.0, Windows 2000) To work with ODBC data sources, run a recent version of Microsoft Data Access Components (MDAC) and Jet. Otherwise, you might receive the following error:
Connection verification failed for data source: exampleapps [MERANT][SequeLink JDBC Driver] [ODBC Socket][Microsoft][ODBC Microsoft Access 97 Driver] Can't open database '(unknown)'. It may not be a database that your application recognizes, or the file may be corrupt. The root cause was that: null
You can download these from the following locations:
 
In Windows 98/ME, there is no SequeLink driver. Select JDBC-ODBC bridge instead of ODBC Socket.  
In Windows 98 and Windows ME, you cannot use cfinsert and cfupdate against a Microsoft Access database; you must use cfquery instead. The JDBC-ODBC bridge database driver that is used for Access databases on these platforms does not work with cfinsert and cfupdate with the lastest MDAC 2.7 and JetEngine 4.0 SP 3.

The following are examples of using cfquery to insert and update data:
<cfquery>
  insert into tblEmp (employee_id, firstname, lastname, 
    department) values (#empid#,'#fname#','#lname#','#dept#')
</cfquery>

<cfquery>
  update tblEmp
    set firstname = '#fname#',
        lastname = '#lname#'
    where employee_id = #empid#
</cfquery>
45486

Back to Contents


Web Services

The following table lists the known issues for using web services in ColdFusion MX.

Issue ID
ColdFusion MX does not support the .NET dataset data type. Make sure that you do not have a CFML template consuming a .NET web service that expects a dataset argument. 39621
Consuming a ColdFusion Component (CFC) web service that returns a CFC instance will throw a Class Not Found error when the CFC is in the virtual path. To work around this, refer to the CFC with the absolute path, not a relative path. 45505
To consume a web service that is implemented in a technology other than ColdFusion MX, you must set the following web service options:
  • Use RPC as the SOAP binding style and use encoding as the encodingStyle
  • Use document as the SOAP binding style and use literal as the encodingStyle
The following example shows a portion of the WSDL file for the BabelFish web service:

<binding name="BabelFishBinding" type="tns:BabelFishPortType">
  <soap:binding style="rpc" 
     transport="http://schemas.xmlsoap.org/soap/http"/>
  <operation name="BabelFish">
    <soap:operation soapAction="urn:xmethodsBabelFish#BabelFish" />
    <input>
      <soap:body use="encoded" namespace="urn:xmethodsBabelFish"
      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
    </input>
    <output>
      <soap:body use="encoded" namespace="urn:xmethodsBabelFish"
      encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
    </output>
  </operation>
</binding>

The WSDL file for the BabelFish web service is compatible with ColdFusion MX because it uses RPC as the binding style and encoding as the encodingStyle.
 
You cannot use the cfinvoke tag attributes for username and password to invoke a secured web service. 37005
Avoid non-alphanumeric characters such as the underscore character (_) in ColdFusion Component names, method names, and argument names. 44924
ColdFusion MX does not have access to files under web server virtual directories. For example, if a web server has a virtual mapping /myvirtual that points to c:/myvirtual, ColdFusion MX cannot include c:/myvirtual/index.cfm using the following call:
<cfinclude template="/myvirtual/index.cfm">
Also, if there is a component file c:/myvirtual/bank/account.cfc, you can access the file directly as a web service (http://myserver/myvirtual/bank/account.cfc?wsdl), or by using URL component invocation (http://myserver/myvirtual/bank/account.cfc?method=deposit&amount=300). However, the component file cannot be referred to by another component or cfml page as myvirtual.bank.account. This is also true if such referring component would be invoked as a web service.

Either avoid web server virtual directories if the resource in these should be accessed internally by other ColdFusion MX resources, or create a ColdFusion mapping with the same name and location as the web server mapping.
44546

Back to Contents


ColdFusion Administrator

The following table lists the known issues for the ColdFusion Administrator:

Issue ID
The Administrator must reside in its default installation path (.../CFIDE/administrator/) in order for it to function properly.  
If your default web browser has pop-up windows disabled, the ColdFusion Administrator might not run the first time after you install. To remedy this, enable pop-up windows in your browser and run the ColdFusion Administrator. After running the ColdFusion Administrator for the first time, you can disable pop-up windows in your browser again. 45481
(Windows only) You must provide a username for Microsoft Access and ODBC Socket Data Source Names (DSNs), even if the data sources do not require any user authentication. Provide a username as follows:
  • Access DSN – Select the Use Default Username option; OR show the Advanced Settings section and enter a username in the ColdFusion Username field.
  • ODBC Socket DSN – Select the Use Trusted Connection option; OR show the Advanced Settings section and, in the Username field, accept the default username (system) or enter a username.
45484
On the System Probes page, if you change the URL, username, or password for probe.cfm, you must trigger an update for each existing probe by editing the probe and clicking Submit. 39738
Currently, when you register or edit a CORBA connector, the Classpath field is not used. Specify CORBA (and all other) classpaths on the Java and JVM page instead.  
You cannot use single quotes (') in named resources (for example, data sources, probes, Verity collections, and so on). Using a single quote--for example, creating a scheduled task with name="Let's Rock"--causes a WDDX parsing error when the server restarts, and the service whose data contains the single quote fails.

To remedy this, back up and edit the XML file for the failing service. For example, if the Cron service is failing after naming a scheduled task "Let's Rock", make a backup copy of cf_root\lib\neo-cron.xml and edit the original version of the file to change every instance of "Let's Rock" to "Lets Rock".
45409
In the Verity Collections page, when you map an unregistered collection, select the same language that was used to create the collection. Currently, if you select a different language to map to a collection, no error appears. However, if you map, or subsequently index, a collection in a language other than the one in which it was created, you might damage the collection's index and your ability to search the collection.

Examples of unregistered collections include:
  • Collections on another server
  • Collections created with mkvdk
Note: Collections that were migrated from ColdFusion 5.0 do not have this problem.
 

Back to Contents


Graphing in ColdFusion MX

The following table lists the known issues for graphing in ColdFusion MX.

Issue ID
In the cfgraph and cfchart tags, ColdFusion MX only uses the values in the scaleFrom and scaleTo attributes as a starting point; ColdFusion MX considers the actual data values and the number of labels that need to be displayed and then determines the actual scaleFrom and scaleTo values. For example, ColdFusion MX adjusts the user-specified scaleFrom and scaleTo values to avoid cutting off decimal labels and data. 32837
If the legend for a pie chart contains long labels, the pie chart might appear distorted. To resolve this, increase its width by setting or increasing the value of the graphwidth or chartwidth attribute. 32835
The cffile tag has changed to use a different default encoding when writing to a file. Therefore, to write a generated graph to a file using the name attribute of cfchart, you now have to add the following attribute to the cffile tag: charset="ISO-8859-1". 38867

Back to Contents


Other Known Issues

The following table lists the general known issues in ColdFusion MX for this release:

Product Area Issue ID
Memory usage ColdFusion MX requires more memory to run than ColdFusion 5.
For more information, see the system requirements listed in Installing ColdFusion MX.
35820
ColdFusion Components (CFCs) In this release, within a component <cfset x = 1> puts x in the Variables scope local to the component and <cfset variables.x = 1> puts x in the Variables scope of the calling page.

Once this bug is fixed, both <cfset x = 1> and <cfset variables.x = 1> will do exactly the same thing and put x in the Variables scope local to the component.

Until this bug is fixed, avoid using <cfset variables.x = 1>, as this would conflict with <cfset x = n> in the calling page.
45387
When using components, or when interoperating with Java case-sensitive containers (for example, Hashtable), the dot notation fails to resolve the keys. For example, (newTC.foo.moo) might not be found even though it exists, as in the following code sample:
<cfset newTC = createObject( "component", testComponent ) /> 
<cfset foo = newTC.foo.moo />
To work around this, use the equivalent bracket notation; for example, (newTC["foo"]["moo"]).
45461
Initializing arrays A heterogeneous array initializer, such as a[1]["moo"][1] (where a has not been defined), throws an exception. To work around this issue, assign the heterogeneous parts in separate assignment statements, as in the following example:
<cfset a1[1] = structNew()>
<cfset a1[1]["moo"][1] = 12>
31535
Server-side validation for post forms When using ColdFusion's server-side validation to validate post forms (for example, input type="hidden" name="myInput_require"), ColdFusion MX ignores the custom message that you place in the value field, and instead displays a message indicating that the field is required. 45443
Server-side redirects Using getpageContext().forward('<your page name>.cfm') to do a server-side redirect throws an "err.io.short_read" error if there is any data in the Form scope. 45337
File Server Browser Applet The File Server Browser Applet (allaire.cfide.CFNavigationApplet) does not render icons properly in Netscape 4.x. 31958
User Defined Functions (UDFs) An error results if you have a UDF with N defined arguments, you pass N+1, and then call structKeyList with the arguments. The same error results if you have cfdump inside the function with an undeclared argument. 44635
cfhttp cfhttp has some behaviors which are subject to the performance of the underlying Java Runtime Environment (JRE). For example, when using an IBM JRE, cfhttp does not properly connect to "https" URLs, but it does when using a SUN JRE. However, when using a SUN JRE, cfhttp does not always return a 404 status code page when an http request to a URL contains a nonexistent page, but it does when using an IBM JRE.

Finally, the timeout attribute does not work with the SUN JDK versions 1.3 and 1.3.1_03. For the timeout attribute to be functional, you must use JDK 1.4.0.
37683
37684
30267
cfimport When importing custom tags using cfimport, you cannot use the namespace "CF" as this is reserved for ColdFusion custom tags. 45544
cfldap In ColdFusion MX, cfldap does not support SSL v3 client authentication (certificate authentication), as in ColdFusion 5. In ColdFusion MX, cfldap only supports SSL v2 (basic username/password authentication over SSL). 38693
Updating or modifying an LDAP server using cfldap might cause the server to hang on HP-UX 11. This is a known JNDI issue. To work around this, add the -XdoCloseWithReadPending JVM argument in the Java & JVM page in the ColdFusion Administrator. 45384
ExpandPath()
GetRealPath()
If you use ExpandPath() or GetRealPath() for a directory that exists in both the ColdFusion MX web root and the web root for an external web server, and you are using the external web server, the functions return the directory under the ColdFusion MX web root. For example, if you have C:\CFusionMX\wwwroot\foo and C:\inetpub\wwwroot\foo, and you have configured IIS for ColdFusion MX, then ExpandPath("foo") returns C:\CFusionMX\wwwroot\foo.  
CORBA invocations When using CORBA (Visibroker 4.5), an "out" call for an array of structs or multi-dimensional array throws a CORBA_UNKNOWN exception. Use "inout" instead. This is a Visibroker bug.  
When using the CORBA IOR method in CreateObject/cfobject, make sure that you use an IOR that has been obtained in the same environment as your deployment environment. Visibroker IORs are not interchangeable. If you decide to deploy your CORBA server on a different computer, you must obtain new IORs. Visibroker IORs contain IP address information. 36866
ColdFusion Administrator Security Settings If you enter a server IP address for sandbox security (under Sever/Ports) and forget the port number, you will receive an error when you try to edit this entry. To work around this issue, delete the server IP address and re-enter it with the port number. 39860
Verity searches Verity does not support VSpider on Linux. Also, note that Linux does not support PDF files.  
You might receive the following error when attempting to create a Verity collection or to migrate a Verity collection:

Error: An error occurred while performing an operation in the Search Engine native library. coldfusion.tagext.lang.CFCollectionTagException: Error # -10.

To work around this issue, locate the file [installdrive]:/winnt/system32/VDK200.DLL, and rename it to VDK200.dll_old. Restart the ColdFusion server. This is a conflicting file from a previous version of ColdFusion.
38917
Sample applications on UNIX On Unix, you cannot use the sample aplications that use the Pointbase databases when security is enabled (Sandbox Security in the Enterprise edition, Resource Security in the Professinal edition). You must disable security on Unix to use the Pointbase sample data sources. 45527

Back to Contents


Documentation Updates

The following table lists the known documentation issues for ColdFusion MX:

Book Section Update
Installing ColdFusion MX Chapter 1: Installing Macromedia ColdFusion MX > Using the ColdFusion MX web server This section states the following:
...to display a page in your application, you must append :8500 to the host name or IP address in the URL; for example, http://localhost:8500/YourApp1/index.cfm.
Addition: Note that the URL path is case-sensitive.
Chapter 2: Configuring your System > Connecting to an external JDBC Type 4 data source This section states the following:
ColdFusion MX includes JDBC Type 4 database drivers from Merant and MySQL, and JDBC Type 3 database drivers from Merant and SQL Link.
ColdFusion MX includes JDBC Type 3 database drivers from Merant and DataDirect (SequeLink).
Developing ColdFusion MX Applications with CFML Chapter 3: Using ColdFusion Variables > About scopes The information about the This scope in the tables under Scope types and Creating and using variables in scopes is incorrect. The following information correctly describes the This scope:

The This scope is available inside of ColdFusion component as a reference to the current instance of the component and is used to store component variables. Therefore, if you define a variable in a component constructor or method using the syntax This.variableName, the variable is available to any method using the same syntax for the duration of the component instance. Component variables can be also set and read from the page that references the component using the componentInstanceName.variableName syntax.

If a user-defined function is not part of a ColdFusion component, the function has a This scope only if the function is contained in another object. Thus, if you assign the function as an element in a ColdFusion structure and access the function using the format myStruct.myFunct(), the function has a This scope that consists of the contents of the structure. The function can access the structure variables by using the format This.structVar and if the function assigns a variable such as This.myVar it is available to the calling page as myStruct.myVar.
Chapter 3: Using ColdFusion Variables > Ensuring variable existence > Variable existence notes The following statement in the third paragraph is incorrect:
To check for the existence of an array element, copy the element to a simple variable and use IsDefined to test whether the simple variable exists.
Copying an undefined array element causes an exception. Instead, use a try/catch method to determine if a position in an array is defined.
Chapter 9: Writing and Calling User-Defined Functions > Creating user-defined functions The following note under Using a CFML tag in a user-defined function is incorrect and should be deleted:
Note: The cfquery tag automatically puts the query result in the Variables scope, so you cannot limit its result to the This scope.
The cfquery tag does not have any special behavior with respect to scopes.
The procedure described in the following note under The contents of the Arguments scope is incorrect:
Note: The IsDefined function does not test the existence of array elements. To test whether an array index contains data, copy the array element to a simple variable and use the IsDefined function to test the existence of the copy.
Copying an undefined array element causes an exception. Instead, use a try/catch method to determine if a position in an array is defined.
Chapter 9: Writing and Calling User-Defined Functions > Using the Arguments scope as a structure This section contains the following text:
If the function can take unnamed optional arguments, use an index number as the key to reference the argument in the structure. For example, if the function declaration includes two named arguments and you call the function with three arguments, refer to the third argument as Arguments.3.

Note: The IsDefined function always returns false when you reference an unnamed optional arguments using structure notation. For example, IsDefined(Arguments.3) for the function described in the preceding paragraph always returns false.
Although you can use references such as Arguments.3 for unnamed optional arguments in ColdFusion assignment statements, this format is not valid syntax and cannot be used in arguments to some functions, including the IsDefined function. Therefore, you should refer to unnamed optional arguments using array notation.

The following text replaces the inaccurate description:
If the function can take unnamed optional arguments, use array notation to reference these arguments. For example, if the function declaration includes two named arguments and you call the function with three arguments, refer to the third argument as Arguments[3]. To determine if an unnamed optional argument exists, use the StructKeyExists function; for example, structKeyExists(arguments,"3").
Chapter 11: Building and Using ColdFusion Components CFML code that exists outside of component method definitions in a component file serve as component constructors. Component constructors let multiple method definitions share common CFML code when the component is instantiated. For example, using component constructors, you can set variables for all component methods to use, as shown in the following example:

<cfcomponent hint="This component returns the future and the past.">
  <cfset currentTime = Now()>
  <cffunction name="future" access="remote" hint="one hour from now">
    <cfset futureHour = dateAdd("h",1,currentTime)>
    <cfreturn futureHour>
  </cffunction>
  <cffunction name="past" access="remote" hint="one hour ago">
    <cfset pastHour = dateAdd("h",-1,currentTime)>
    <cfreturn pastHour>
  </cffunction>
</cfcomponent>
In this example, the component constructor sets the currentTime variable to the current time, which is used by the future and past method definitions.

Any CFML tag or function can be used in a constructor. In addition, you can perform any ColdFusion processing, such as querying a database or data validation and manipulation. When inherited, the parent component's constructors are executed first.
To further describe component functionality, you use the hint and displayName attributes of the cfcomponent, cffunction, cfargument, and cfproperty tags. These attributes let you provide component metadata that is used to generate component documentation in the Component Browser. The following example uses the hint and displayName attributes for a simple directory component:

<cfcomponent hint="This component returns the directory contents for the supplied path."
displayName="Directory Explorer Component">
  <cffunction name="getDirectory" returnType="query"
  hint="This method returns a query object that contains the directory contents"
  displayName="Get Directory Method">
    <cfargument name="dirPath" type="string" required="true">
    <cfdirectory action="LIST" directory="#arguments.dirPath#" name="dirQuery">
    <cfreturn dirQuery>
  </cffunction>
</cfcomponent>

In cfcomponent, cffunction, cfargument, and cfproperty tags, any attributes other than reserved attributes, including hint and description, are considered user-defined metadata attributes. While these attributes are not used in ColdFusion, you can access them using the GetMetadata function. The following example illustrates a few user-defined attributes:

<cfcomponent hint="This component returns the directory contents for the supplied path."
displayName="Directory Explorer Component"
privateMessage="Beta 3 of Directory Explorer Component.">
  <cffunction name="getDirectory" returnType="query"
  hint="This method returns a query object that contains the directory contents"
  displayName="Get Directory Method"
  usageGuidelines="Pass the fully-qualified path as an argument. Returns a query object.">
    <cfargument name="dirPath" type="string" required="true">
    <cfdirectory action="LIST" directory="#arguments.dirPath#" name="dirQuery">
    <cfdump var=#getMetadata(this)#>
    <cfreturn dirQuery>
  </cffunction>
</cfcomponent>

In this example, the cfcomponent tag contains the custom attribute privateMessage, which shows the beta version of the component. The getMetadata function returns a structure of component metadata. In the metadata structure, you will see a privateMessage entry.

Note: You should avoid using runtime expressions in custom metadata attributes. Using runtime expressions in metadata attributes can cause unpredictable behavior, because all metadata expressions are replaced by strings in the metadata structure returned from the GetMetadata function. Also, do not use the reserved attributes as your metadata attribute names. The reserved words for the cfcomponent tag are name, path, properties, functions, and extends. The reserved words for the cffunction tag are name, returnType, access, roles, output, and arguments. The reserved words for the cfargument tag are name, required, default, and type. The reserved words for the cfproperty tag are name and type.
If you define a UDF in a component method definition, you cannot set access, roles, or output attributes for that method.
Chapter 18: Debugging and Troubleshooting Applications > Execution Time This section does not describe or show the execution time debugging output of the final ColdFusion MX product. The figures and descriptions omit the TOTAL EXECUTION TIME line that displays at the bottom of the execution time output. This line lists the total time required to process the current request, and includes the times for the individual page requests and for compiling, loading, and shutdown.
Chapter 30: Using XML and WDDX > Referencing the contents of an XML object The list of variables that refer to the EmpType attribute of the first name element in the XML document has two incorrect entries. These entries are:
mydoc.employee.XmlChildren[1].EmpType
mydoc.XmlRoot.XmlChildren[1].EmpType
The following are the correct entries:
mydoc.employee.XmlChildren[1].XmlAttributes.EmpType
mydoc.XmlRoot.XmlChildren[1].XmlAttributes.EmpType
Chapter 32: Integrating J2EE and Java Elements in CFML Applications > About ColdFusion and JSP The first bulleted item includes the following statement:
Instead, you use CFML include and import tags to include pages and import tag libraries.
You do not use a ColdFusion include tag to include JSP pages in ColdFusion pages. You use the include (or forward) method of the page context object returned by the ColdFusion GetPageContext function to access JSP pages from ColdFusion pages. The correct technique is described later in the chapter, in the Interoperating with JSP pages and servlets section.

For the latest documentation updates, see the Documentation Updates page on the Macromedia website.

Back to Contents