Red Hat Web Application Framework 6.1 Release Notes

Table of Contents
1. Release Notes

1. Release Notes

These are the release notes for Red Hat Web Application Framework 6.1. They contain an overview of Red Hat WAF 6.1, an installation reference, a list of known issues, and an enumeration of significant changes since WAF 6.0.


1.1. Overview

The Web Application Framework is written in Java™ and provides a set of APIs for data storage, retrieval, and presentation. For more information, visit

An overview of the Red Hat WAF architecture can be found at

For information about the Red Hat Applications community, see You may also want to subscribe to the

1.2. Requirements

Red Hat WAF 6.1 requires a Java environment running 1.3.0 or later. IBM JVM build 1.3.1 cxia32131-20020302 has a bug where BigDecimal hashcode values are generated inconsistently (IBM defect 51972), which will make for errors that are highly difficult to track down. This bug is fixed in SR2 and later versions of the IBM JVM. For performance and scalability reasons, Red Hat recommends IBM JVM 1.3.1 SR4 or later on Red Hat Enterprise Linux 2.1 and the Sun JVM 1.4.1 or later on Red Hat Enterprise Linux 3.

Red Hat WAF 6.1 requires an RDBMS, either Oracle8i™ database, Oracle9i™ database, or PostgreSQL 7.3.x. PostgreSQL 7.4.x is not supported in this release. For optimum performance and stability, we strongly recommend Oracle9i version or PostgreSQL 7.3.4 - Red Hat Edition. The Standard Edition of Oracle database does not support online rebuilds of interMedia™ indexes; users will need to either use Lucene for search or do offline rebuilds. Red Hat WAF 6.1 has been fully tested on Oracle8i, Oracle9i, Oracle9i, and PostgreSQL 7.3.3 - Red Hat Edition. The Red Hat version of PostgreSQL 7.3.x is preferred over the community version of PostgreSQL 7.3.x due to specific query optimizer enhancements that are not available in the community version of PostgreSQL 7.3.x.

Red Hat WAF 6.1 requires a servlet container with support for Servlet 2.3 and JSP 1.2. Red Hat WAF 6.1 has been tested on Tomcat 4.0.6, Resin™ 2.1.4, and Resin 2.1.8.

1.3. What's New

Red Hat WAF 6.1 is a major release that features an enhanced SQL generator that generates more optimized queries; a new configuration and installation system; and numerous API enhancements. The focus of this release is on stability, performance/scalability, and ease-of-use.

Specific improvements in 6.1 include:

Improved installation/upgrade

The installation experience has been simplified with the ccm command-line tool, which will automatically load a database schema, configure the WAF installation, and generate the appropriate servlet configuration files in a single command. The ccm tool also has hooks for running Java and SQL upgrade scripts.


The and config.vars system has been supplanted by a new configuration management system that includes a command-line tool to set and get parameter values; a system profile feature that enables administrators to define a standard profile for a particular type of WAF system (e.g., development profile, production profile); and full integration with the WAF packages installation system.

Persistence OQL generator

Persistence now includes an optimizing query language that generates significantly more optimized SQL for both Oracle and PostgreSQL that improves query scalability. This is accomplished without any external API change.

JDK 1.4 support

WAF has been updated to compile under both Java 1.4.x and 1.3.x. Previous versions of WAF only compiled under 1.3.x.

Improved search API

The search API has been simplified to facilitate building applications that work with both the interMedia™ and Lucene search packages. In addition, the search API provides more infrastructure for building end-user search applications.


A new mechanism, PatternStylesheetResolver, allows developers to use pattern matching to choose a particular stylesheet to resolve for a given URL.

Categorization API

The categorization API has been rewritten for performance: object retrieval and category purposes (now achieved with the "use contexts") are significantly faster and no longer require static SQL. This makes the categorization API much more useful for many uses, including category navigation applications.

Permissions denormalization

The permissions denormalization has been redesigned to provide significantly better performance under both Oracle Database and PostgreSQL. The API has not changed, although support for the experimental ParameterizedPrivilege API has been removed.

Simplified Multi-JVM configuration

Configuration for multi-JVM systems has been simplified so that in most cases a single configuration file can be used for every WAF instance. Previously, unique WAF configuration files were required for each instance. Currently, only the parameter needs to be unique for each node.

Improved developer tools

Developer support now works with PostgreSQL. Developer support also includes a browser for CacheTable entries. A new class, CallTree, helps developers capture the call sites of a given method. User interfaces for browsing the versioning log and configuration records have been added.

com.arsdigita.util.url improvements

The URL classes now return a cached byte array of the URL content and headers.

Bug fixes

All bug fixes available in the WAF 5.2.x and 6.0.x errata series as of 1 March 2004 have been merged into this release. See the WAF 5.2.x and 6.0.x release notes for details of specific fixes.

1.4. License

Red Hat Web Application Framework 6.1 is copyrighted 1999-2004 by Red Hat Inc. It is released under the CCMPL 1.0. The text of the CCMPL 1.0 can be found at

The CCMPL is based on the OSI-approved IBM Public License Version 1.0 ( The IBM Public License is a true open source license that requires open-sourcing of any modifications or other "derivative works."

1.5. Installation

The most recent installation documentation is available at

1.6. Documentation

Documentation for Red Hat WAF, including installation guide, Javadoc, developer guide, and engineering standards, can be found at

1.7. Upgrading


Upgrading is a one-way, irreversible process. Thoroughly test the upgrade on a backup copy of your database before upgrading your production system. Carefully read the following instructions before attempting the upgrade process.

This section contains upgrading information specific to this version of WAF. For detailed upgrading instructions, see the appropriate section of the Red Hat Web Application Framework Installation Guide. You must upgrade to WAF 6.0.1 prior to upgrading to 6.1.

Upgrading WAF requires you to execute the ccm upgrade command. The \ is added for printing, to indicate the command is one continuous line:

ccm upgrade ccm-core --from-version 6.0.1 --to-version 6.1
ccm hostinit  --parameter http-port=9090 \
              --parameter shutdown-port=9091 \

This will prompt for the webapp directory of the 6.0 core installation (typically /var/www/ccm-core/dist/). The webapp directory should itself contain several subdirectories, including __ccm__, WEB-INF, and packages.

Once it has obtained the correct 6.0 webapp directory, the upgrade script will translate the JDBC URL and server name and port from your 6.0.x enterprise.init to the 6.1 configuration database. It will then run all the necessary schema and Java upgrade scripts in the correct order.


Various APIs have been updated and improved, including categorization and search. Refer to the Javadoc at for details.


Configuration is no longer defined in enterprise.init. Instead, subclasses of AbstractConfig define configuration parameters that can be set with the ccm tools. A corresponding Java properties file contains the documentation for the given parameter(s).

An app.config is required for any custom applications written on top of WAF that have configuration parameters. An app.load file is required for any custom applications that needs to be loaded with the ccm load command.

1.8. Known Issues

At server startup, the following warning appears:

com/arsdigita/notification/Notification.pdl: line 34, column 10 [warning]: \
table already has primary key: com/arsdigita/notification/Notification.pdl:\
line 32, column 4

com/arsdigita/notification/Notification.pdl: line 35, column 10 [warning]: \
table already has primary key: com/arsdigita/notification/Notification.pdl:\
line 32, column 4

This is expected behavior.

The ccm upgrade command does not support multiple, independent Java upgrade scripts that each independently run initializers. All Java upgrade scripts contained in one version -> version upgrade are run in one thread. Thus, running initializers at the start of each script causes an error. This is a minor limitation; developers can either:

  • Use just one Java upgrade script which runs all initializers, and have it call to other reusable upgrade code which does not itself run any initializers.

  • Omit the line to run initializers new Startup().run() from all Java upgrade scripts after the first.

When called by root, the ccm load and ccm set commands will switch to the ccmadmin user. If you have modified to enable logging to /var/log/ccm/, you will get an error because that directory is owned by servlet and not ccmadmin. You can safely ignore this error as the commands still complete successfully.

1.9. Bug Reporting

Please file bug reports in the Red Hat Web Application Framework section of

Last modified: $DateTime: 2004/04/07 13:25:33 $