Ultra Light Client Logo

Release Notes

August 7, 2006


About ULC 6.1.1

Release 6.1.1 is a maintenance release for ULC release 6.1. It includes the following changes:

To migrate from ULC 6.1 to ULC 6.1.1, please see the migration notes.


Version Notes

ULC 6.1.1 requires the Java Runtime Environment (JRE) 1.3.1 or later on the server, and Java Runtime Environment (JRE) 1.4.2 or later on the client.

The ULC client has been tested on Windows 2000/XP with the following deployment options:

The ULC server has been tested on Windows 2000/XP, Red Hat Linux 9.0, and Sun Solaris 8 with the following deployment options:

This build is based on ULC 6.1 Please see the ULC 6.1 release notes for additional information.


Modules, Parts and Release Structure

The ULC release includes all components required to successfully develop and deploy ULC applications. The ULC modules, parts, packages, and the structure of the current release are described in the following sections.



The ULC release is split into modules. Each module belongs to exactly one of five categories:

The category and module names are reflected in the directory structure of the release, e.g. environment/applet for the applet module that belongs to the environement category.

A module directory contains subdirectories with the following contents:



Each of these modules can contain up to four parts:

The part names are reflected in the filename of the jar files in the lib and src directory of the corresponding module, e.g. ulc-applet-client.jar and ulc-applet-client-src.jar for the classes and source stubs of the applet module that have to be deployed on the client side.


Release Structure

ulc-6.1.1 ULC 6.1.1 home directory
   base ULC base framework
J2EE server integration including EJB container integration and Servlet container integration.
ULC documentation
Client environment integration for applet deployment, JNLP deployment, and standalone deployment.
   license the jar file with the deployment license key
   previous_releasenotes Previous release notes
Sample applications with ready to run Tomcat Servlet container
   build.txt Contains the build number
   LicenseAgreement.pdf The license Agreement
   releasenotes.html This document


Fixed Bugs

PR Description Comments
UBA-807 Ability to invalidate an HTTP server session from a ULC application ServletContainerContext.getHttpSession().invalidate() does invalidate the HttpSession. However, it is not a clean way to shut down a ULC application on the server side.
UBA-964 Input is not blocked anymore when reloading an applet  
UBA-6803 Calling the method waitForIdle() in UISession from different threads may lead to lock-up  
UBA-6893 ULCSplitPane does not provide a method setDividerLocation(int newLocation) ULCSplitPane.setDividerLocation(...) has been aligned with Swing.

New API:

  • ULCSplitPane.setDividerLocation(int) sets the absolute divider location
  • int ULCSplitPane.getDividerLocation() now returns an absolute int value
  • double ULCSplitPane.getDividerLocationRelative() does what double ULCSplitPane.getDividerLocation() used to do in prior releases

See migration notes.

UBA-6911 Configuration of a ULC application overrides part of configuration of other ULC applications in same web application Log configurations (and in particular the log levels) are now per Servlet (or EJB) instance. A related configuration's scope is the code of all the ULCSessions associated with a Servlet or EJB instance. However, (ULC) code executed inside a Servlet/EJB but outside a ULCSession depends on a single, global log configuration. The latter can be set via a (global) properties file (ulclog.properties).

See migration notes.

UBA-6921 An ArrayStoreException is thrown in ULCProxy.invokeUI() when trying send/upload an array with type ULCProxy[]  
UBA-6922 The initial size and position of a ULCWindow is not synchronized back to server  
UBA-6926 For modal dialogs, WindowClosingEvents and state updates are not propagated to the server  
UBA-6928 When showing a modal dialog a second time, the default button is lost ULC's behaviour is now the same as in Swing: A default button gets uninstalled ONLY, if a ULCWindow (and also a ULCDialog) gets explicitly disposed.

In this context, disposing of a window has been aligned with Swing. New API:

  • ULCWindow.dispose() triggers JWindow.dispose() on the corresponding client window. Otherwise JWindow.dispose() does only happens in ULC, if the UIWindow (the client-side proxy) proxy gets deregistered.
See migration notes.
UBA-6931 Non-opaque components added to a tabbed pane look different in Swing and ULC on Mac OS X  
UBA-6934 ULCAppletPane does not support resume  
UBA-6947 Custrom renderer for ULCComboBox do not work properly  


Implemented Feature Requests

PR Description Comments
UBA-993 ULCBoxPane's add() method takes ULCBoxPane alignment constants, setConstraints GridBagConstraints New API:
  • ULCBoxPane.setAlignmentOf(ULCComponent, String)enables to change the alignment of a component in a ULCBoxPane.
UBA-5738 Support shared library deployment ULC now uses a context class loader when dynamically loading classes given that a context class loader is set
UBA-6836 Add the "open" command as default "fBrowserPath" element for the Mac platform in AllPermissionsBrowserService  
UBA-6872 Provide a hook in UIAlert.show() before a corresponding alert dialog is shown The corresponding hook is UIAlert.prepareAlertDialog(JDialog). (Its default implementation does nothing.)
UBA-6876 Two consecutive error dialogs are shown when the connection to the server is lost  
UBA-6877 Provide a log statement with the command line string in the com.ulcjava.base.client.IBrowserService implementations  
UBA-6887 Clarify the Javadoc for IWindowListener.windowClosing(WindowEvent event) and ULCDialog.setDefaultCloseOperation(int)  
UBA-6912 Provide a getInvoker() method on ULCPopupMenu just as for JPopupMenu  
UBA-6914 Client side enabling state should be synchronized when using enablers  
UBA-6916 Provide a ULCComponent.requestFocusInWindow() API just like on JComponent  
UBA-6927 JSSE integration add-on does not make sense in ULC 6.1 as JRE 1.4 already includes JSSE The related files have been removed from the release.
UBA-6930 Provide a callback before removing UIProxies from the client-side registry The coresponding callback is UIProxy.dispose().
UBA-6962 ULCBoxPane.add(ULCComponent, Object) should accept alignment strings as a second argument  
UBA-6963 ULCTabbedPane.setTabPlacement() should check for a valid tab placement argument  
UBA-6964 ULCSplitPane should support add() without explicit constraints  


Migration Notes

New/Changed API

Logging Configuration

Prior to ULC 6.1.1, the logging configuration of a ULC application overrid the logging configuration of other ULC applications in same web application. In particular, the log level could only be set globally for a JVM instance. With ULC 6.1 the log level can be set per Servlet/EJB instance. Thus different log levels of different ULC servlet do not override each other.

However, the so-configured log level only affects logging for method calls, which are under the control of a ULCSession instance (i.e., they have a ULCSession method invocation in their stack trace). Logging outside the ULCSession instance may only be set globally via the properties file ulclog.properties. If the file ulclog.properties cannot be loaded as a resource, then the default log-level WARNING is used for the global log-level context. (The global log-level context affects the logging of methods defined on com.ulcjava.container.servlet.server.ServletContainerAdapterHelper and com.ulcjava.container.ejb.serverEjbContainerAdapterBean.)

For details on the new logging approach see Section 6.3 of the ULC Essentials Guide.


Known Problems and Limitations

Product and company names herein may be trademarks of their respective owners.

Copyright (c) 2000-2015 Canoo Engineering AG