Adobe ColdFusion 8

Developing CFX tags in C++

You can develop CFX tags in C++.

Sample C++ CFX tags

Before you begin development of a CFX tag in C++, you might want to study the two CFX tags included with ColdFusion. These examples will help you get started working with the CFXAPI. The two example tags are as follows:

  • CFX_DIRECTORYLIST: Queries a directory for the list of files it contains.
  • CFX_NTUSERDB (Windows only): Lets you add and delete Windows NT users.

In Windows, these tags are located in the cf_root\cfx\examples directory. In UNIX, these tags are in the cf_root/coldfusion/cfx/examples directory.

Setting up your C++ development environment

The following compliers generate valid CFX code for UNIX platforms:

Platform

Compiler

Solaris

Sun Workshop C++ compiler, version 5.0 or higher (gcc cannot be used to compile CFX code on Solaris)

Linux

Gnu C++ compiler - gcc

Before you can use your C++ compiler to build custom tags, you must enable the compiler to locate the CFX API header file, cfx.h. In Windows, you do this by adding the CFX API include directory to your list of global include paths. In Windows, this directory is cf_root\cfx\include. In UNIX, this directory is cf_root/cfx/include. in UNIX, you will need -I <includepath> on your compile line (see the Makefile for the directory list example in the cfx/examples directory).

Compiling C++ CFX tags

CFX tags built in Windows and in UNIX must be thread-safe. Compile CFX tags for Solaris with the -mt switch on the Sun compiler.

Locating your C++ library files in UNIX

In UNIX systems, your C++ library files can be in any directory as long as the directory is included in LD_LIBRARY_PATH or SHLIB_PATH (HP-UX only).

Implementing C++ CFX tags

CFX tags built in C++ use the tag request object, represented by the C++ CCFXRequest class. This object represents a request made from an application page to a custom tag. A pointer to an instance of a request object is passed to the main procedure of a custom tag. The methods available from the request object let the custom tag accomplish its work. For information about the CFX API classes and members, see "ColdFusion C++ CFX Reference" in the CFML Reference.

Note: Calling a nonexistent C++ CFX procedure or entry point causes a JVM crash in UNIX.

Debugging C++ CFX tags

After you configure a debugging session, you run your custom tag from within the debugger, set breakpoints, single-step, and so on.

Debugging in Windows

You can debug custom tags within the Visual C++ environment.

  1. Build your C++ CFX tag using the debug option.
  2. Restart ColdFusion.
  3. Start Visual C++.
  4. Select Build > Start Debug > AttachProcess.
  5. Select jrunsvc.exe.

    Adobe recommends that you shut down all other Java programs.

  6. Execute any ColdFusion page that calls the CFX tag.
  7. Select File > Open to open a file in VisualDev in which to set a breakpoint.
  8. Set a breakpoint in the CFX project.

    The best place is to put it in ProcessRequest(). Next time you execute the page you will hit the breakpoint.

Registering CFX tags

To use a CFX tag in your ColdFusion applications, first register it in the Extensions, CFX Tags page in the ColdFusion Administrator.

  1. In the ColdFusion Administrator, select Extensions > CFX Tags.
  2. Click Register C++ CFX.
  3. Enter the Tag name (for example, cfx_MyNewTag).
  4. If the Server Library .dll field is empty, enter the filepath.
  5. Accept the default Procedure entry.
  6. Clear the Keep library loaded box while developing the tag.

    For improved performance, when the tag is ready for production use, you can select this option to keep the DLL in memory.

  7. (Optional) Enter a description.
  8. Click Submit.

You can now call the tag from a ColdFusion page.

Delete a CFX tag

  1. In the ColdFusion Administrator, select Extensions > CFX Tags.
  2. For the tag to delete, click the Delete icon in the Controls column of the Registered CFX Tags list.