Overview
This document contains the following sections:
Changes
in ICEfaces Enterprise Edition 1.8.2 - Beta
ICEfaces Enterprise Edition (ICEfaces EE) 1.8.2 - Beta is a preview
release of the upcoming ICEfaces EE 1.8.2 certified release.
ICEfaces EE is a commercial software product that extends the ICEfaces
open source project to provide additional advanced enterprise features,
professional support options, and platform certification against a wide
range of proprietary and open source application servers and Java EE
middleware. For more information on ICEfaces EE, see the
Wiki.
Review the
Known
Issues
prior to using this release. Review the
Migration Notes
if you plan to use an existing ICEfaces 1.7.x application with 1.8.x.
Please report any issues with
this release to
ICEsoft
customer support.
ICEfaces Changes Since ICEfaces
1.8.2 (open-source)
- [ICE-3915]
- Cannot create PanelCollapsible component programmatically, receive
ClassCastException
- [ICE-4567]
- Receiving NoSuchMethodError exception when adding
<f:convertDateTime> to an iceface component using JSF 1.1.5
- [ICE-4971]
- ice:panelDivider causes JS error when used in Liferay portlet in IE
- [ICE-4988]
- Sortable dataTable header (commandSortHeader) not aligned correctly
in IE8
- [ICE-4994]
- Menu state not reset after menu is hidden when with
displayOnClick="true"
- [ICE-5006]
- Limit individual users to a maximum number of views
- [ICE-5013]
- ice:columns creates 1 extra <td> element than number of
<th> elements when table is empty, as a result table renders
badly
- [ICE-5017]
- IE8 Layout issue of Download Resources on component showcase
- [ICE-5018]
- OutputResource component consumes memory when hashcode of the
resource is changing
- [ICE-5038]
- Jarred Facelets Templates are continuously refreshed
- [ICE-5048]
- dynamic images showed using graphicimage do not refresh
- [ICE-5050]
- tabChangeListener tag memory leak
- [ICE-5061]
- Empty ice:graphicImage URL creates unnecessary views
ICEpack Changes Since ICEpack 1.8.1 Beta
- Enterprise Push Server (EPS)
- All-new support for
clustered fail-over of ICEfaces push applications when using EPS.
- Clustered fail-over is supported on the following platforms in
this release:
- Tomcat 6.0 + ActiveMQ 5.3
- JBoss 4.2.3
- WebLogic 10.3.2
- WebSphere 6.0.2
- ICEfaces Composite Components
- The following new
facelets composite components have been added to the ICEfaces Composite
Components in this
release:
- editableTable
- filterTable
- richDataGrid
- dynamic dialog
- textSpinner
- selectLocale
- selectOneStateProvince
- richTabs
- tabView
- slideshow
- schedule
- selectDateInterval
- Load Test
- Load Testing
- The protocol used between the ICEfaces core and Javascript
bridge has changed since the 1.8.1 release, as a result, the Load
Testing examples and documentation have been updated to work correctly
with the ICEfaces 1.8.2 EE bridge.
- Any load testing scripts previously created based on the
ICEpack 1.8.1 release will need to be updated. Note that using the
older load testing scripts with ICEfaces EE 1.8.2 may result in a
failure of the dispose-views functionality, causing views to
incorrectly remain in memory for the life of a session.
- Samples
- The ICEfaces Composite Component Showcase sample has been
updated to include examples for each of the new composite components
added in this release.
Migration
Notes
The following changes may affect applications that were originally
developed with ICEfaces 1.7.x.
Asynchronous ICEfaces applications should be deployed with
the new Push Server
- Asynchronous ICEfaces applications (push) should now be
deployed with the new Push Server.
- If you deploy more than one asynchronous ICEfaces
application to the same application server/host-name and view
more than one of these applications in a single browser (via multiple
tabs or windows), the push updates only function correctly for one of
the applications. This restriction is due to HTTP 1.1 connection-limit
recommendations that many browsers enforce. Changes in 1.8.0 make this
issue more prevelant on all browsers than in previous releases.
- Note that the Push Server MUST be deployed when using any
ICEfaces asynchronous portlets.
- See the "Push Server" section on pg. 74 of the
ICEfaces
Developer's Guide for more information.
Asynchronous HTTP Server (AHS)
- The ICEfaces Asynchronous HTTP Server (AHS) is no longer
supported with ICEfaces 1.8.0.
- If
your application was previously configured to use AHS you will
need to deploy the new Push Server
with your application instead.
- See the "Push Server" section on pg. 74 of the
ICEfaces
Developer's Guide for more information.
Session Renderer API Repackaging
- The
SessionRenderer API
was introduced as an experimental API in ICEfaces 1.7.1. Based on
positive feedback from the community it has been repackaged and is
now an official API. If your application uses the SessionRenderer it
will need to be updated to reflect the new package name.
- Former package-name (experimental):
org.icefaces.x.core.push.SessionRenderer.
- New package-name (official):
com.icesoft.faces.async.render.SessionRenderer
ice:inputFile Component Changes
- The behavior and features of the ice:inputFile component
have changed to better support indicating progress
without requiring as much application-level code.
- In previous ICEfaces releases, a technique of using the
ICEfaces push APIs (e.g. PersistentFacesState.renderxxx(),
RenderManager, etc.) to push progress updates to the browser was used.
In this release this technique is unnecesary and deprecated. The
specific case of using the PeristentFacesState.render() API can cause
nested JSF lifecycles to occur which can cause unpredictable results.
- See the ice:inputFile TLD documentation for details.
Glassfish Grizzly ARP Support
- If you would like to leverage the Glassfish Grizzly ARP
mechanism with ICEfaces 1.8.0 you must include the new "
grizzly-compat.jar"
in
your
project
classpath.
This
jar
is
located
in
the
"../icefaces/libs"
directory.
Supported
Platforms
Java
ICEfaces is supported on the following Java versions:
- JDK 1.4 and greater
- MyFaces and Sun JSF 1.1 runtimes
- Sun JSF 1.2 runtime
Note that ICEfaces 1.x is not supported on JSF 2.0 runtimes. ICEfaces
2.0 is targeted at JSF 2.0 runtime environments.
Browsers
Vendor
|
Product
|
Version
|
Apple
|
Safari
|
4.0
|
Google
|
Chrome
|
3.0
|
Microsoft
|
Internet
Explorer
|
6,
7, 8
|
Mozilla
|
Firefox
|
3.0, 3.5
|
Opera
|
Opera
|
9,
10
|
Mobile
Browsers
Vendor
|
Product
|
Platform |
Version
|
Apple
|
Safari
|
iPhone, iPod Touch |
1.x,
2.x, 3.x
|
Opera
|
Opera Mobile
|
Windows Mobile |
8.65,
9.21b2 |
RIM
|
Blackberry
|
Blackberry Bold |
All
|
Application
Servers
Vendor
|
Product
|
Version
|
Apache
|
Tomcat
|
5.5,
6.0
|
BEA Systems Inc.
|
WebLogic Server
|
8.1,
9.2
|
JBoss Inc.
|
JBoss
Application
Server
|
4.0.5,
4.2.x, 5.0
|
IBM
|
Websphere
Application Server
|
6.0.2,
6.1, 7.0
|
| Oracle |
WebLogic Server |
10.3.1 |
Oracle
|
Oracle
Application
Server
Container for J2EE (OC4J)
|
10.1.3
|
SAP
|
NetWeaver
|
7.0
|
Sun Microsystems
|
GlassFish
|
v2.x,
v3 Prelude
|
Sun Microsystems
|
Sun Java System
Application
Server
|
8.1,
9.x
|
Webtide
|
Jetty
|
6.1.x
|
Portal
Containers
Vendor
|
Product
|
Version
|
| Apache |
Pluto |
1.1.4 |
| Apache |
Jetspeed 2 |
2.1.3 |
| BEA |
WebLogic Portal |
10 |
Liferay
|
Liferay Portal
|
4.3.x,
5.x
|
RedHat
|
JBoss Portal
|
2.6.x
|
IDE
Tools
ICEfaces IDE integration bundles are available for the following
development
tools:
Vendor
|
Product
|
Version
|
Eclipse
|
Eclipse/Web
Tools
Platform
|
3.5
|
Genuitec LLC
|
MyEclipse
Enterprise
Workbench
|
7.x
|
| IBM |
Rational Application Developer (RAD) |
7.5 |
Sun
|
NetBeans
|
6.5,
6.7
|
Note: Tool integration bundles may be
updated independently
from ICEfaces releases. Refer to
http://downloads.icefaces.org for the most recent
tool bundles and associated ICEfaces runtime libraries.
Note: ICEfaces can generally be used with any Java IDE that supports
JEE 1.4 0 (+JSF) and JEE 1.5 projects. If a specific ICEfaces
integration is not available for your IDE, ICEfaces can be manually
included into your project classpath. See the ICEfaces
Tools forum and
Tutorials for more information on
using ICEfaces with a variety of IDEs.
Known
Issues
The following section describes the most commonly
encountered
known
issues with this release. For a complete reference of all outstanding
issues please refer to the ICEfaces.org JIRA issue
tracker.
Documentation
- ICEfaces Developer's Guide
- In the "Busy Indicator" section on pg. 32, and also in
Appendix B on pg. 116, it incorrectly states that the
"
com.icesoft.icefaces.blockUIOnSubmit"
configuration parameter is
"TRUE"
by default.
In fact, this parameter is "FALSE"
(disabled) by default.
- To clarify the "Push Server" section in "Chapter 5 -
Advanced Topics" section on pg. 74 - the Push Server MUST always be
deployed with asynchronous ICEfaces portlets or the push
functions of these portlets will not work.
- The
usage example in the Bridge Connection Status Events section in
"Chapter 4 - ICEfaces Reference Information", on pg. 28 is
incorrect. The corrected usage example is noted below:
<body>
...
<script type="text/javascript">
Ice.onSessionExpired('document:body', function() {
alert('Session has expired!');
});
</script>
...
</body>
"Appendix B - ICEfaces Configuration Parameter Overview".
The following new configuration parameters have been added since the
1.8.0 release:
- '
com.icesoft.faces.checkJavaScript'
-
true(default)/false. Disables the active test and error
message that ICEfaces normally performs/displays for JavaScript support
in the browser. Disabling the JavaScript test may improve search engine
consumption of content in some cases. Note that JavaScript
support is still required in order for ICEfaces applications to
function properly.
- '
com.icesoft.faces.ignoreUserRoleAttributes'
-
true/false (default). Can provide significant performance improvements
in ICEfaces applications that do not require the use of the
'renderedOnUserRole'
or 'enabledOnUserRole'
attributes. Note that this
configuration is implemented statically.
- If at any time the asynchronous connection
between the browser
and the server is lost due to a network interruption, reloading the
page
will generally restore normal operation from the previous application
state.
- ICEfaces pages included via
<jsp:include> or
<tiles:insert> have distinct PersistentFacesContext
objects even
if they are included by the same parent page. For this reason,
application-initiated renders will apply only to the inclusion
associated with the particular PersistentFacesContext.
- Inclusion of ICEfaces content from JSP
is not compatible with
MyFaces.
- Attempting to retrieve a Request
parameter in the url using the
following syntax is not supported (returns null):
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(paramName);
A workaround for this issue is to retrieve the Request parameter using
the following alternative syntax:
((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getParameter(paramName);
- Cookies can be set though
the
((BridgeExternalContext)
FacesContext.getCurrentInstance().getExternalContext()).addCookie(new
Cookie("test","test")); method.
- If you are using the Sun JSF 1.2 RI and experience the
following exception:
"javax.faces.application.ViewExpiredException:
viewId:/xxx.iface - View /xxx.iface could not be restored. at
com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:xxx)"
It may be necessary to include the following configuration in web.xml:
<context-param>
<param-name>com.sun.faces.enableRestoreView11Compatibility</param-name>
<param-value>true</param-value>
</context-param>
JSP Markup
- UIComponentBodyTag processing supports only a
single call to
doAfterBody(). The full JSP lifecycle for iterative body processing is
not supported.
- The first-generation children of the
DataTable's table-header and
column-header facets must be standard JSF components. For example,
plain markup cannot be contained on its own within these facets, it
must be wrapped in a panelGrid and the panelGrid, in turn, can be
contained within the facet.
- JSP Page to Document conversion
escapes  , but  
in JSP Documents must be manually escaped by the developer as
&nbsp. Similarly, & characters must be escaped as
&.
- Non-JSF JSP tags
(<jsp:xxx/>, etc.) embedded in JSP Pages
and Documents are ignored by the ICEfaces parser with the exception of
the inclusion mechanism (see Markup Reference in Developer's Guide for
details).
- Java code (<% ...%>,
etc.) embedded in JSP Pages and
Documents is ignored by the ICEfaces parser with the exception of the
inclusion mechanism (see Markup Reference in Developer's Guide for
details).
- Input documents must be well-formed
XML.
- Deprecated HTML elements, specifically
the FONT element, do not
respond properly to DOM manipulation functions in the ICEfaces
client-side JavaScript bridge. (see HTML 4.01 Specification for details
on deprecated HTML Elements).
- Pages should contain both a
<head> tag and a <body>
tag
so that they are well-formed XHTML and ICEfaces can
easily add a link to its own custom JavaScript library.
- Any ICEfaces page included from a JSP
via <jsp:include/>
must contain a <body> tag as the content of the
<body> tag
is precisely the content inserted into the including page.
- Tiles tags are not supported within
ICEfaces pages, but ICEfaces
pages may be included via Tiles.
- If multiple ICEfaces inclusions are
performed by the same parent
JSP, each ICEfaces form must have a manually applied unique ID.
- JSP Pages are dynamically converted to
JSP Documents for
processing by the ICEfaces parser, so it is important not to mix JSP
Page and JSP Document types when performing static inclusion.
- UTF-8 encoding must be used for all
source files for ICEfaces
(jsp jspx,
etc.)
ICEfaces Component
Suite
- All ICEfaces Component Suite
components must be enclosed in a JSF
form component (i.e.
ice:form, h:form,
or ui:form).
- Effects (various components)
- In Internet Explorer the Fade,
Appear, and Pulsate effects
will not transition when used with select elements.
- In Safari the Highlight effect will
does not work on buttons
and lists.
- gMap
- Requires
an API key which must be obtained from the Google
Maps website.
- Client
browser must be able to access the Google Maps website URL
(http://maps.google.com)
- menuPopup
- menuPopup is not supported in the Opera browser due
to
a
browser security feature that prevents the override of the browser's
own context menu.
- inputRichText
- The FCKeditor JavaScript library that is the basis
for
the ice:inputRichText component does not currently support the Opera
browser.
- outputChart
- Negative values are not supported in "barstacked"
chart-types. This is a limitation of the krysalis.jcharts
library used to generate the chart images.
- When using the ice:outputChart component with IE6
the
following warning log messages may appear in the ICEfaces server log:
"java.net.SocketException: Connection reset by peer: socket
write error". This is the result of IE6 closing connections
abruptly and is a browser quirk. It has no impact on the functionality
of the component.
Portlets
- The following ICEfaces components are known not to work
correctly in a portlet environment:
- ice:gMapDirection
- ice:inputRichText - using this component in more
than
one portlet
on a page may cause problems with the functioning of this
component.
- Drag & drop (via ice:panelGroup) - using
drag-and-drop in more
than one portlet on a page may cause drag-and-drop to not
function in some of the portlets on the page.
- When using ICEfaces with
Liferay Portal positioning problems may occur with components that
rely on dynamic positioning, such as ice:panelPopup, ice:menuBar,
and menuPopup. This issue is related to an aggressive styling
behavior in Liferay and there is a work-around identified. See ICE-2967
for details.
- Liferay 5.2.x automatically compresses all resources
being
served by the Portal container. By default this will conflict
with ICEfaces automatic resource compression. When running with Liferay
5.2+ it is necessary to either disable Liferay's resource compression,
or disable ICEfaces resource compression by
specifying the "
com.icesoft.faces.compressResources=false"
configuration
parameter
setting
in
the
web.xml
file.
- The ICEfaces Component Showcase portlet sample
application
may have styling and layout related issues related to the specific
portal container and portal theme being used. The
primary intention is to show component functionality in a portlet
context. It may be necessary to customize the specific styles being
used to work well within the portal theme, etc.
Spring WebFlow
- In Spring WebFlow 2.0.5+ there is a ViewHandler
delegation
issue that prevents the logic that determines whether a view is
restorable from working correctly resulting in the flow being
continuously restarted.
A workaround is to define a Spring FlowViewHandler in the application
faces-config.xml file.
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
<view-handler>com.icesoft.faces.facelets.D2DFaceletViewHandler</view-handler>
<view-handler>org.springframework.faces.webflow.FlowViewHandler</view-handler>
<variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
</application>
Sample
Applications
- Of the
four varieties of the Component Showcase application (jsp, portlet,
portlet-enh, and portlets), only the facelet-enh version includes the
Description and Source tabs for viewing documentation and resources
related to the components being demonstrated.
- The Component Showcase enhanced
facelets sample
application
(
icefaces/samples/component-showcase/facelet-enh)
requires JDK 1.5 to compile and run. All other samples in this release
require JDK 1.4+.
Application
Servers
- Due to an apparent
bug in Tomcat 5.x, users have occasionally reported seeing the
following error when using ICEfaces with Tomcat 5.x or JBoss 4.0.x: "SEVERE:
ICEfaces
could
not
initialize
JavaServer
Faces.
Please
check
that
the
JSF
.jar
files
are installed correctly." This
issue
can be resolved by including the following listener in the web.xml:
<listener>
<listener-class>
com.sun.faces.config.ConfigureListener
</listener-class>
</listener>
- Tutorials bundled with the
ICEfaces release will not build and
deploy to Tomcat 5.5 with MyFaces due to a conflict related to
jsp-api.jar. To build and deploy tutorials on Tomcat 5.5 with
MyFaces, it is necessary to modify the .../install_dir/ICEfaces-1.5/icefaces/samples/tutorial/build.properties
and set tomcat55=true
prior to building the application.
- To use ICEfaces
with Tomcat v6.0 these jars that are included in the ICEfaces
distribution
must be removed from the web application (note that the sample
application build script target for Tomcat 6 will include the correct
.jars in the .war file):
- el-api.jar
- xercesImpl.jar
- xml-apis.jar
- Tomcat
v6.0
/
JBoss 4.2 with NIO Connector
- When using the optional Tomcat 6 NIO connector (can
also
be used with JBoss 4.2) with asynchronous ICEfaces applications a
NullPointerException can be thrown
when using the TomcatPushServlet (located in the
com.icesoft.faces.webapp.http.servlet package) due to Tomcat recycling
objects that are still in use by the TomcatPushServlet. The issue seems
to be timing related and is more apparent with multiple users.
- Workarounds
for this issue include not configuring the optional Tomcat NIO
connector and configuring the ICEfaces Enterprise Push Server for NIO
asynchronous communications instead.
- Due to a bug in the JSF RI included in the Glassfish
v2.1
distribution (v1.2_04), exception redirection may not work correctly
with ICEfaces. The work-around is to install or use Sun JSF RI
1.2_05 or newer.
- BEA
Weblogic Server 9 & 10
- In order to run ICEfaces
on the BEA Weblogic Server 9, the html
and core tld files located in jsf-impl.jar should be extracted from the
jar file and placed into the WEB-INF folder of any application you want
to deploy.
- When deploying an ICEfaces application that uses the
ice:inputFile and/or ice:dataExporter components to WebLogic 9 or 10
you must use an exploded directory copied to the domain's autodeploy
directory, rather than simply using .war files or using the console.
Otherwise, the file-write operations these components depend on will
fail (as there is no writeable directory in a .war file).
- Websphere
Application Server 6.0.0.1, 6.1
ICEpack
- EPS
- The Enterprise Push Server
does not integrate with JBoss 4.2.x, Tomcat 6, or WebLogic 10.3.2 ARP
(Asynchronous Request Processing) mechanisms in this release. Support
for ARP-optimized push is planned for future releases.
- Samples
- The clusteredChat1 and clusteredChat2 samples have only been
tested successfully on Tomcat 6.0 w/ ActiveMQ in this release.
- When using the timezone-failover and timezone-failover-push
sample applications together with EPS, you must manually specify the
com.icesoft.net.messaging.properties
configuration parameter with the correct setting for the target
application server in the application web.xml. This will be included
automatically by the sample build in the final release.
Support
Please report any issues with
this release to
ICEsoft
customer support.
About
ICEfaces
ICEfaces delivers extensions to Java ServerFaces
(JSF) that provide
an
AJAX-enabled rich presentation environment for JSF applications.
ICEfaces
brings value to any Java EE development project that needs to provide
superior
presentation capabilities to the web application user. In particular,
ICEfaces provides the following features:
- Smooth, incremental page updates that do not
require a full page
refresh to achieve presentation changes in the application.
- Server-initiated
asynchronous presentation updates for dynamic
instantaneous data push (Ajax Push/Comet).
- The ICEfaces Component
Suite, a complete rich JSF component suite
that fully leverages ICEfaces capabilities.
- Intelligent
form processing that facilitates fine-grained
interactions with the user as they manipulate a form.
- API
support for rapid development of group-aware and
collaborative applications, such as Chat, Webcast, social apps., etc.
- JSP or Facelets based development.
- Tool
integrations for leading Java IDEs.
- Support for
leading Java EE frameworks, such as Spring and JBoss
Seam.
- Support for portlet development.
Learn More
This ICEfaces release comes with extensive documentation
that
will
help you
understand the product thoroughly. Documentation for this release is
located
in your installation directory at .../install_dir/icefaces/docs/.
The
following
documents
are
provided
in
PDF
format:
- ICEfaces Getting Started Guide:
This guide takes you through product installation, environment
configuration, demo app installation, and a basic 7-stage tutorial.
This guide also contains information related to support for different
application server environments and development tools.
- ICEfaces Developer's Guide:
This guide contains information relevant to developing applications
with ICEfaces. It describes the ICEfaces architecture, and explains key
concepts that the ICEfaces developer should be aware of. It also
provides a complete reference guide that covers APIs, configuration,
components (including the ICEfaces Component Suite) and TLDs, and
covers advanced topics like server-initiated rendering.
ICEfaces documentation is also available
on-line
at
http://documentation.icefaces.org/.
License
Notice
License agreements can be found in the
.../install_dir/icefaces/docs/license
directory.
© Copyright
2005-2009 ICEsoft Technologies, Inc.