Version 2.1

Historical note: OXF 2.1 was released on September 16, 2003

Support for Oracle 9i application server

OXF 2.1 supports Oracle 9i Application Server, version Read the installation instructions.

Preliminary JSR-168 support

OXF 2.1 introduces the OXF Portlet, a Java portlet following the Java Portlet Specification Version 1.0 (Proposed Final Draft) of August 26, 2003, also known as JSR-168. OXF hides the complexity of the Portlet API to allow most OXF applications to work unmodified within portlet containers and to follow the best practices allowed by the Web Application Controller.

In addition, OXF 2.1 includes alpha versions of the OXF Portlet Container and the OXF Portal.

For more information, please visit JSR-168 Portlets.

Support for iterations in pipelines

Version 2.1 introduces a new construct to perform iterations in XPL. Refer to the Pipeline processor documentation for more information.

Java processor

The Java processor is significantly enhanced in this version. In particular:

  • In previous versions, it did not support custom processors implemented over more than one Java file. This limitation is waived in OXF 2.1: the Java processor can now be used for complex custom processors, or multiple processors that share the same "utility classes".
  • The Java processor only compiles the Java files of a custom processor when needed. If the compiled files are up-to-date, no compilation will be performed, even if the Java files were compiled in a "previous session" and the application server has been restarted since then.
  • All the custom processors deployed in the same sourcepath (see the Java processor documentation for more details) are loaded by the same class loader. This is more efficient than always creating one class loader per custom processor, as in previous versions of OXF, and allows different processors deployed in the same sourcepath to share state stored in static class attributes.

Validation processor

The config input has been renamed schema. The new config input selects the mode of the validator, either decorating, or not. Read the Validation Processor documentation for more information.

Renaming of servlet, servlet filter and ServletContextListener

The names ProcessorServlet (Servlet), ProcessorFilter (Servlet filter) and ProcessorServletContextListener (Servlet                     context listener) in web.xml are now deprecated in favor of OXFServletOXFServletFilter andOXFServletContextListener. The old names still work but will eventually be removed.

Deprecation of property names

The following property names in properties.xml have been deprecated:

  • oxf.servlet.processor
  • oxf.servlet.input.*
  • oxf.servlet.context-initialized.processor
  • oxf.servlet.context-initialized.input.*
  • oxf.servlet.context-destroyed.processor
  • oxf.servlet.context-destroyed.input.*

The new names are as follows:

  • oxf.main-processor.uri
  • oxf.main-processor.input.*
  • oxf.context-initialized-processor.uri
  • oxf.context-initialized-processor.input.*
  • oxf.context-destroyed-processor.uri
  • oxf.context-destroyed-processor.input.*

Visit Packaging and Deployment for more information.

Main processor per web application component

In previous versions, there was only a single main processor (often the Web Application Controller processor) for all the components (Servlets and Servlet filters) in web.xml. It is now possible to specify a different main processor and associated inputs for each Servlet, Servlet filter and JSR-168 Portlet. Visit Packaging and Deployment for more information.

Resource server

The Resource Server MIME Media Type input name has been changed from mime-type to mime-types for consistancy reasons.

Upgrade to the logging system

As documented in the Pipeline Processor section, you can see processors input and output XML documents by adding a debug attribute on the <p:input> and <p:output> elements. When this attribute is specified, OXF logs the corresponding XML document with Log4j. You can configure Log4j to send this information to Chainsaw, a graphical log viewer bundled with Log4j.

Version 1.2.8 of Log4j is now bundled with OXF and the log4j.xml in the OXF showcase application shows how Log4j can be configured to use Chainsaw. With Chainsaw, you can easily filter log messages and see the messages produced on a remote server.

Debug processor

When encountering a debug attribute in a pipeline, the Pipeline processor inserts a Debug processor. This processor is now explicitly documented and it is now possible to replace it by your own custom debug processor, that may implement a different behaviours than the default debug processor.

Explicit HTML serializer doctype

The HTML Serializer used to output a default DOCTYPE. This did not allow to generate HTML output with no DOCTYPE at all, which is needed for example to generate HTML fragments for JSR-168 portlets. If you are using the HTML Serializer manually, you have to explicitly set the DOCTYPE in the serializer configuration if you want to output one. The Web Application Controller still outputs a default HTML DOCTYPE. To override it, use your own serializer in your epilogue.

URL rewriting

URL Rewriting in OXF has been overhauled with the addition of portlet support, and documented.

Chart processor

Colors must now be always prefixed by the pound sign (#). They used to be only prefixed for colors specified in the chart input, but not the data input.

Struts message resources

The Struts Message Resources support is now compatible with Struts 1.1 and allows the user to specify the resource bundle key. See the Struts Integration page for details.

XPointer in pipelines

  • In XPL, XPointer expressions that reference attributes are not valid. In previous versions of OXF, they used to return an empty node set. The expression aggregate('root', #doc#xpointer(/element/@attribute)) returned the document: <root/>. Starting with OXF 2.1, using XPointer expressions pointing to an attribute generates an error message.
  • The XPath expression string(/) used in an XPointer expression always returned an empty string. This was due to a bug in Jaxen, the underlying XPath library. A version of Jaxen that has been patched to fix this issue is bundled with OXF 2.1.

Web application controller

  • The xforms-output-prologue attribute was broken in 2.0.0, 2.0.1 and 2.0.2. It now works as described in the Web Application Controller section.
  • Forwarding from a first page to a second page with <result page="second-page"/> did not work if the XForms instance of the second page contained duplicate elements. This issue is fixed in OXF 2.1 and it is now possible to do a forward to a page whose instance contains duplicate elements, like:
  • In the previous version of OXF, the "data" input of the model wasn't used. Starting with this version, if an action is executed, the "data" output of the action is connected to the "data" input of the model. Similarly, if an action is executed but there is no model, then the "data" output of the action is connected to the "data" input of the view.

    This change has a specific repercussion for pages where all the conditions below are met:

    • XForms is used
    • An action is executed and has a "data" output
    • Either:
      • The model is implemented in an XSL file
      • Both conditions are met:
        • The view is implemented in an XSL file
        • There is no model or the model has no data output

    In this specific case, in previous versions of OXF the XSL file was applied to the XForms instance. Starting with this new version of OXF, the XSL file is applied to the "data" output of the action.

XUpdate processor

  • This version introduces <xu:while>, a new construct to loop construct to perform a set operation while a condition is met. See the XUpdate processor section for more details.
  • XPath expressions in XUpdate programs can now use OXF URLs in the document() function, for instance:document('oxf:/dir/somefile.xml').
  • Namespace prefixes can now be used in XPath expressions. As with XSLT, when a namespace prefix is used in an XPath expression, the namespace must be declared in the XUpdate program on the element where it is used, or one of it ancestors.

Exception page

The exception page now shows an easier to read, structured stack trace when possible (Java 1.4 or greater). If the feature is not available from the underlying VM, the page reverts to the old behavior.


The documentation has been reorganized so as to be easier to tackle. In addition, the following topics have been added:

  • Using the Java Security Manager ? The Java security manager can be used to prevent OXF applications to perform unauthorized operations. The Installing OPS section now documents how to run OXF under a Security Manager.
  • Chart Processor ? Documentation for the Chart processor is now provided in the Charts and Spreadsheets section.
  • URL Serializer ? Documentation for the URL Serializer is now provided in the Serializers section.
  • Debug Processor ? Documentation for the Debug Processor is now provided in the Other Processors section.
  • URL Rewriting ? Documentation for the URL rewriting mechanisms in Presentation Server, including portlet support.

Limited Java 1.3 support

The following features are only supported with a JVM 1.4 or higher.

  • XSLT 2.0 and XPath 2.0, provided by Saxon 7
  • OLAP Processor
  • OXF Portal