Release Notes 5.1.0

JBoss Enterprise Application Platform 5

for use with JBoss Enterprise Application Platform 5.1.0

Laura Bailey

Rebecca Newton

Joshua Wulf


These release notes contain important information related to JBoss Enterprise Application Platform 5.1.0 that may not be currently available in the product manuals. You should read these Release Notes in their entirety before installing JBoss Enterprise Application Platform 5.1.0.

1. Introduction

These release notes contain important information related to JBoss Enterprise Application Platform 5.1.0. New features, issues fixed in this release, and other known issues are addressed here.

1.1. Overview

About JBoss Enterprise Application Platform

JBoss Enterprise Application Platform is the next evolutionary step in open source enterprise software. It is a powerful tool for developing rich, high performance Web 2.0 applications on a pure Java Platform.

By integrating best-of-breed open source frameworks such as JBoss Seam, Hibernate, CXF Web Services, JBoss Cache, and JBoss Messaging, the Platform takes advantage of innovations in the open source community. As well, JBoss Enterprise Application Platform is fully tested and supported by Red Hat, and is certified to work on many leading enterprise hardware and software products.
About this release

JBoss Enterprise Application Platform 5.1.0 is a minor release. Minor releases aggregate the contents of prior patches and Cumulative Patches (CPs), and may add additional new functionality. Subsequent patches and Cumulative Patches assume the installation of the minor update that preceded them. During the life cycle of a product's major version, Red Hat makes commercially reasonable efforts to maintain API-level compatibility across all minor releases and asynchronous patches, ensuring that, for example, JBoss Enterprise Application Platform 5.1.0 maintains API-level compatibility with JBoss Enterprise Application Platform 5.0.0, the initial release of JBoss Enterprise Application Platform 5. Possible exceptions to this rule include fixes addressing critical security issues.

With the release of JBoss Enterprise Application Platform 5.1.0, JBoss Enterprise Application Platform 5.0.x customers should update to JBoss Enterprise Application Platform 5.1.0.

2. Features introduced with JBoss Enterprise Application Platform 5.1.0

JBoss Enterprise Application Platform 5.0.x contained many updated and new components. JBoss Enterprise Application Platform 5.1.0 adds performance enhancements, JBoss Web Services CXF Stack, and support for JDBC 4, and introduces PicketLink Federation as a Technology Preview. These components are detailed in this section.

2.1. Red Hat Enterprise Linux 6 Support

The ZIP distribution of JBoss Enterprise Application Platform 5.1 is fully tested for use with Red Hat Enterprise Linux 6. The appropriate Native packages are available from
The RPM distribution of JBoss Enterprise Application Platform 5.1 for Red Hat Enterprise Linux 6 is not yet available.

2.2. The Native Package

The Native Package has been renamed following the pattern jboss-ep-native-5.1.0*.zip. This new consolidated Native Package can be used with JBoss Enterprise Application Platform or with JBoss Enterprise Web Platform.
The Native package has also been expanded to provide NSAPI for Solaris technology. NSAPI is a connector used to connect Sun Java System Web Server to JBoss Enterprise Application Platform.

2.3. JBoss Web Services

JBoss Enterprise Application Platform 5.0 introduced a pluggable architecture to provide choice of Web Services Stack, along with JBoss Web Services Native as the supported Web Services provider. JBoss Enterprise Platform 5.1.0 introduces an alternative Web Services stack, JBoss Web Services CXF.


The choice of Web Services stack used by the Platform must be made at the time of installation. Refer to the Installation Guide for further details.
JBoss Web Services Native

JBoss Web Services Native is the Java EE 5-compliant JBoss implementation of web services standards. It is the only web services stack for versions of JBoss Enterprise Application Platform prior to 5.1, and is the default web services stack in JBoss Enterprise Application Platform 5.1.0.

JBoss Web Services CXF

JBoss Web Services CXF provides most of the features available in Apache CXF (including WS-Security, WS-Policy, WS-Addressing, WS-ReliableMessaging, basic WS-Trust, MTOM), plus common JBoss Web Services stack features like endpoint metrics, record management and endpoint address rewrite. JBoss Enterprise Application Platform 5.1.0 introduces JBoss Web Services CXF stack as an optional Web Services stack.

2.4. Hibernate

Hibernate now offers full support for Java Database Connectivity 4 (JDBC 4), which enables greater Clob and Blob support, and more sophisticated exception handling.

2.5. PicketLink Federation

PicketLink Federation is a security and identity framework providing support for SAML v2.0 and and WS-Trust. JBoss Enterprise Application Platform 5.1.0 introduces PicketLink as a Technology Preview.

2.6. Features introduced in previous releases

2.6.1. Features introduced with JBoss Enterprise Application Platform 5.0.1 The Native Package
The Native package has been expanded to provide mod_cluster and ISAPI for Windows technologies, in addition to JBoss Native and mod_jk. The added technologies are described as follows:
  • mod_cluster is an httpd-based load balancer. Like mod_jk, it uses a communication channel to forward requests from httpd to an application server node; however it also employs a communications channel from server nodes to the load balancer, providing real-time feedback and enabling more efficient load optimization and request routing. See the mod_cluster documentation available from for further details.
  • ISAPI is a connector used to connect the Microsoft IIS web server to JBoss Enterprise Application Platform. Native Solaris SPARC Packages
Native Solaris SPARC packages are provided from this release of JBoss Enterprise Application Platform onward. See the JBoss Enterprise Application Platform Installation Guide for native package installation instructions.

2.6.2. Features introduced with JBoss Enterprise Application Platform 5.0 JBoss AS
The JBoss AS 5 family represents the state of the art, second generation Microcontainer based enterprise Java run-time and the latest release of the world's most popular application server. In addition to supporting the latest Java EE specification (Java EE 5), it integrates many of the best enterprise class services for advanced messaging, persistence, transactions, caching and high-availability. JBoss Microcontainer
The JBoss Microcontainer is a refactoring of the modular JBoss JMX Microkernel. It is a lightweight kernel that manages the loading, lifecycle and dependencies between POJOs. Used to integrate enterprise services, the JBoss Microcontainer together with Servlet/JSP container, EJB container, deployers and management utilities, provides a standard Java EE 5 profile. JBoss Messaging
JBoss Messaging is the default JMS provider in JBoss Enterprise Application Platform 5.1. It is a complete rewrite of JBossMQ, the legacy JBoss JMS provider, which compared to JBossMQ offers improved performance in both single-node and clustered environments. JBoss Cache
JBoss Cache is used to replicate EJB and HTTP session state and supports distributed entity caching for JPA, while continuing to push the performance and scalability envelope with a new and more efficient locking scheme (MVCC – MultiVersion Concurrency Control). JBoss Web Services Native
JBoss Web Services Native is the Java EE 5-compliant JBoss implementation of web services standards. It is the only web services stack for versions of JBoss Enterprise Application Platform prior to 5.1, and is the default web services stack in JBoss Enterprise Application Platform 5.1. The Native Package
The Native package is an optional component for the JBoss Enterprise Application Platform and incorporates JBoss Native and the mod_jk technologies. These technologies are described as follows:
  • JBoss Native consists of the Apache Portable Runtime (APR), OpenSSL and Tomcat Native (TC-native).
    • Apache Portable Runtime (APR) provides superior scalability, performance, and improved integration with native server technologies. The Apache Portable Runtime is a highly portable library that is at the heart of Apache HTTP Server 2.x and contains many uses, including access to advanced IO functionality (for example: sendfile, epoll and OpenSSL), Operating System level functionality (for example: random number generation and system status), and native process handling (shared memory, NT pipes and Unix sockets).
    • OpenSSL implements the Secure Sockets Layer (SSL) and Transport Layer Security (TLS) protocols and includes a basic crytographic library.
    • Tomcat Native (TC-Native) is a Java Native Interface (JNI) that provides much of Tomcats core functionality in native code rather than Java. This allows for an overall increase in the speed of a server.
  • mod_jk is a connector that is used to connect the Tomcat JSP container and different web services such as Apache.


The Red Hat Enterprise Linux 5 distribution of the Native package does not contain OpenSSL or the Apache Portable Runtime since these technologies are already included in the Operating System.

3. Component Versions

This section details the versions of the components which create the Enterprise Application Platform 5.1.

Table 1. Component version comparison between releases 5.1.0 and 5.0.1

Component EAP 5.1 EAP 5.0.1
JBoss Application Server 5.1.0.GA 5.1.0.GA
JBoss Microcontainer 2.0.10.GA 2.0.9.GA
JBoss Native 2.0.9.GA 2.0.9.GA
Hibernate Core 3.3.2.GA_CP03 3.3.2.GA_CP01
Hibernate Entity Manager 3.4.0.GA_CP03 3.4.0.GA_CP01
Hibernate Annotations 3.4.0.GA_CP03 3.4.0.GA_CP01
Hibernate Search 3.1.1.GA_CP03 3.1.1.GA_CP01
Hibernate Validator 3.1.0.GA 3.1.0.GA
Clustered Remote EJB3 Proxies 1.3.6.GA 1.1.22.GA
JBoss Cache 3.2.5.GA 3.2.1.GA
JBoss HA Server API 1.1.3.Final 1.1.1.GA
JBoss JAXR 2.0.1 2.0.1
JGroups 2.6.16.GA 2.6.13.GA
JBoss EJB3 1.3.6.GA 1.1.22.GA
JBoss JTA 4.6.1.GA_CP07 4.6.1.GA_CP03
JBoss JTS 4.6.1.GA_CP07 4.6.1.GA_CP03
JBoss Negotiation 2.0.3.SP3 2.0.3.SP1
JBoss Managed 2.1.1.GA 2.1.1.GA
JBoss Messaging 1.4.7.GA 1.4.6.GA
JBoss Metadata 1.0.6.GA 1.0.2
JBoss Web 2.1.10.GA 2.1.7.GA
JBoss Web Services - Native 3.1.2.SP7 3.1.2.SP3
JBoss Web Services - CXF 3.1.2.SP7 -
JBoss AOP 2.1.6.CP01 2.1.6.GA
JBoss Remoting 2.5.3.SP1 2.5.2
JBoss Serialization 1.0.4.FINAL 1.0.3.GA
JBoss XB 2.0.1.GA 2.0.1.GA
JavaServer Faces 1.2_13 1.2_13
JacORB 2.3.1.jboss.patch01 2.3.1.jboss.patch01
JPA 1.0.0 1.0.0
JBoss Security 2.0.4.SP4 2.0.4.SP1
JBoss Profiler-jvmti 1.0.0.CR5 1.0.0.CR5
Admin Console 1.3.4.SP1 1.3.2.GA
mod_jk 1.2.30 1.2.28
mod_cluster 1.0.4.GA 1.0.3.GA
Seam 2.2.2.EAP5 2.2.1.EAP5
RESTEasy 1.2.GA_CP01 1.1.GA_CP01
RichFaces (in Seam) 3.3.1.SP2 3.3.1.GA


JBoss Enterprise Application Platform 5.1 includes PicketLink Federation as a Technology Preview.
Technology Preview features are not fully supported under Red Hat subscription level agreements (SLAs), may not be functionally complete, and are not intended for production use. However, these features provide early access to upcoming product innovations, enabling customers to test functionality and provide feedback during the development process. As Red Hat considers making future iterations of Technology Preview features generally available, we will provide commercially reasonable efforts to resolve any reported issues that customers experience when using these features.

4. Installation Notes

4.1. Supported Configurations

An up-to-date matrix of compatible and certified configurations is available at Please refer to this list for information on tested and supported configurations.

4.2. Installing JBoss Enterprise Application Platform

Refer to the Installation Guide for instructions on installing and verifying the installation of the JBoss Enterprise Application Platform.

4.3.  Default Startup Profile

The default startup profile is default which is a base Java EE 5 server profile containing a default set of services. It contains the most frequently used services required to deploy a Java EE 5 application. It does not include the JAXR service, the IIOP service, or any of the clustering services.
The default profile is not intended for production use or for the running of load, stress, availability or performance tests. In addition, the performance of this beta release does not necessarily represent the final release.

5.  Product Support

Bugs, potential bugs, and development issues and/or questions should be filed as JBoss support cases via the Customer Support Portal,

6.  Documentation

In this release the JBoss Transactions Documentation is restructured and consolidated into the Transactions Development Quick Start Guide, Transactions Administrators Guide, and Transactions Development Guide.
This release also sees the addition of the JBoss Security Guide, which brings together the Platform's security-related information.
JBoss WS CXF, introduced in this release, contributes a User Guide to the Platform documentation set.
All API documents, code examples and a link to the online release notes are distributed in a separate ZIP file, jboss-eap-docs-<version>.zip.
All other guides and documentation are avaliable online at Select the appropriate product name (JBoss Enterprise Application Platform) and stream (5) from the sidebar, as shown in the image on the front page.
Your feedback on our documentation is highly appreciated. You can directly contact the documentation team via

7. Technology Previews

This section describes the Technology Preview features released alongside JBoss Enterprise Application Platform, their installation, and any known issues.


Technology Preview features are not fully supported under Red Hat subscription level agreements (SLAs), may not be functionally complete, and are not intended for production use. However, these features provide early access to upcoming product innovations, enabling customers to test functionality and provide feedback during the development process. As Red Hat considers making future iterations of Technology Preview features generally available, we will provide commercially reasonable efforts to resolve any reported issues that customers experience when using these features.

8. Excluded, Removed and Deprecated Items

Excluded, Deprecated, and Removed Items

An item that has never featured in a product release but is otherwise part of one of the open source components of the product, is an excluded item.
An item that will be removed from a future release, usually the next major version, is a deprecated item.
An item that was previously in a release of the product and is no longer included is a removed item.. Items will usually be deprecated before being removed.

8.1. Excluded Items

No items are excluded in this release.

8.2. Deprecated Items

The following items are deprecated in this release.

8.3. Removed Items

No items are removed in this release.

9.  Issues fixed in this release

Following are the issues fixed in this release:

9.1. General Fixed Issues

Microcontainer beans were being registered as MBeans on deployment. These MBeans are optional and provide some debugging information. This behavior has now been turned off by default. Microcontainer beans are no longer registered as MBeans on deployment by default.
The specific combination of JBoss Native, 64-bit hardware, and the -javaagent Java option caused systems to hang when executing the script. The script passed user supplied parameters to Java while making a call to check for the system architecture. The script is now modified to ignore user supplied parameters when making this call, and the script no longer hangs under this condition.
When a management tool used the ProfileService management interface (as the embedded console does) to update the ServiceBindingManager service, the mapping of the received information was incorrect. The received value for a binding's "fixedHostName" property was applied as "fixedPort" and vice versa. In most cases, both properties are "false" so this was harmless. However, if either property were true, this led to an incorrect binding upon server restart when the updated values were applied. This has been corrected and the mappings are now applied as expected.
When user-type-mapped types were used in ejbql aggregate functions like MIN and MAX, a CCE exception was thrown. This is now fixed and CMP fields of types mapped with user-type-mapping can appear in aggregate functions in the SELECT clause of an EJB-QL query.
The script now creates a file to track processes and make it easier to obtain process IDs, jboss.pidfile. See the JIRA for further details.
A status servlet error existed for <distributable> web apps. The Cache session manager had different attributes from the Web manager, but was perceived as the same JMX object because of a lack of case sensitivity. StandardManager used 'activeSessions' while the clustered version was 'ActiveSessions'. The code used by the servlet to render the status information can now detect and handle upper and lower case letters in the JMX attribute names for a session manager.
JBPAPP-544 fixed a security issue by removing the mapping for /status, leaving only the secure /web-console/status available. However, the unsecured /status was reincluded in JBPAPP-1146. This has been fixed by configuring the ROOT.war webapp's security. It solves the original problem of securing, and leaves the /status intact.
Running the Microsoft SQL server with Microsoft JDBC drivers 2.0 causes unstable builds in JBoss Messaging. This issue is created by the Adaptive Buffering being the default behavior for the driver as this only allows for large values ot be read once by using the get<Type>Stream method. The current workaround for this issue is to change the responseBuffering parameter of the JDBC connection URL from being adaptive, to being full (as it was for version 1.2 of the JDBC driver).
Red Hat Enterprise Linux 5 users installing the JBoss Enterprise Application Platform rpm using yum must be subscribed to the Red Hat Enterprise Linux Extras channel in order to satisfy the Java requirement of JBoss Enterprise Application Platform with either the Sun or the IBM Java Development Kit.

9.2. Hibernate Fixed Issues

Using session.createSQLQuery caused a memory leak because the equals and hashCode methods in NativeSQLQuerySpecification were incorrectly implemented, and concurrent use of LRUMap caused the map to grow larger than its maximum limit. These issues have been corrected and the memory leak no longer occurs.
The changes for JBPAPP-4471 caused an issue when users mapped non-JDK Serializable classes with SerializableType, and attempted to cache those values into a second level cache. SerializableType reported the classloader of as the classloader to use for deserialization. However, this classloader could not see into the classloader, or non-JDK classes.
The classloader from org.hibernate.util.SerializationHelper.deserialize(InputStream, ClassLoader) now attempts to resolve the classloader that needs to be deserialized. If it cannot do this successfully, it uses the context classloader from the current thread and the classloader that loads the Hibernate class.
The Query Cache required the session or entity manager to be closed and reopened before it will become effective because Hibernate compares the timestamp of a cached query with the timestamp of the current session when it retrieves a query from the cache. This has now been fixed, and Hibernate uses nextTimestamp() to fetch the current timestamp rather than the cached timestamp.
@CollectionId describes an identifier column for a bag (an idbag, for example). nullable should have been set to false explicitly. This has been corrected, and nullable is now set to false by default.
PostgreSQL failed to drop SchemaExport if constraint names changed. Hibernate now issues a cascade when it tries to drop a table, fixing the issue.
Hibernate uses StandardDialectResolver to guess the Hibernate dialect if the hibernate.dialect property is not found in the Hibernate properties file, hibernate.cfg.xml, or persistence.xml. StandardDialectResolver returned SybaseDialect if the database name it extracted from database metadata is Sybase SQL Server or Adaptive Server Enterprise. However, because SybaseDialect is deprecated, this caused some problems. The StandardDialectResolver now guesses the correct dialect to use if hibernate.dialect is not configured.
When scrolling a HQL query with join fetch on a collection, FetchingScrollableResultsImpl.last() did not move to the last result if the cursor was positioned after the last result. Instead, the cursor stayed in position after the last result. This could cause org.hibernate.exception.GenericJDBCException: could not perform sequential read of results. The fix for this issue ensures that the cursor moves to the last result, as expected.
When a column name was defined in backticks (`), @JoinTable and @JoinColumn mappings failed with AnnotationException when the column name with backticks was referenced. Hibernate now compares the referencedColumnName with the column's quote name rather than the table column's name.
getColumnSpan returned 0 when comparing entities with OneToOne mappings, even when comparing the same entity, which resulted in TypeMismatchExceptions. The algorithm of getColumnSpan has changed so that the column span can be identified by its identifier or unique key type.
LikeExpression did not handle the ignoreCase flag properly when ignoreCase was set to false. The correct SQL property like ? was built, but the flag inside getTypedValues was not used, and a lowercase value was always produced. This issue has been fixed, and lowercase or the original case is used when ignoreCase is set to false.
In a stateless session, queries load objects in a two-phase process: in the first phase, a temporary persistence context is populated with empty objects; in the second phase, the objects' member data is read from the database. If an object contains an association or a collection, the query performs a recursive call to the session's get() method. This clears the temporary persistence context.
If the parent object contained any other associations to be read as part of the second phase, Hibernate threw an assertion because the associations cannot be found in the persistence context.
This has been fixed by introducing a new method: org.hibernate.engine.PersistenceContext.isLoadFinished(). This method tells StatelessSession when to clean the temporary persistence context.
A bug in org.hibernate.cfg.OneToOneSecondPass code sometimes caused an org.hibernate.PropertyValueException when processing a one-to-one mapping. The exception occurred because when JOINs did not contain otherSideProperty, otherSideJoin retained old data instead of being null. The org.hibernate.cfg.OneToOneSecondPass code has been corrected.
Hibernate generated the wrong alias in the table-pre-class inheritance strategy in some situations. (See the JIRA for examples.) AbstractCollectionPersister now uses the key column aliases generated by Column.getAlias(Dialect,Table), so the table-pre-class inheritance strategy mapping is correct.
When a cache provider could not be found, a NoClassDefFoundError was thrown with the message:
When a connection provider could not be found, a HibernateException was thrown with the following message:
Could not instantiate connection provider: " + providerClass
More informative messages are now thrown when these errors occur.
The iteration order of HashMaps and HashSets for JDK 6 caused the order of columns in union clauses or union subclasses to differ depending on whether JDK 5 or 6 was used. Since the change in column order is consistent across union clauses, the resulting queries were valid; however, this change could affect performance. The implementation of HashSet has been changed to LinkedHashSet, for identical performance between the different JDKs.
Hibernate could not previously be compiled under JDK 6 because the following classes did not fully implement JDK 6 interfaces:
  • org.hibernate.jdbc.ResultSetWrapper
  • org.hibernate.lob.BlobImpl to implement java.sql.Blob
  • org.hibernate.lob.ClobImpl
  • org.hibernate.lob.SerializableBlob
  • org.hibernate.lob.SerializableClob
A NoSuchMethodError occurred when an application required a method that was missing from these classes. The missing methods have now been implemented and this error no longer occurs.

9.3. Remoting Fixed Issues

When org.jboss.remoting.marshal.MarshallerLoaderHandler got a request for a class, it returned an instance of org.jboss.remoting.loading.ClassBytes. If MarshallerLoaderHandler was unable to find the desired class, then the returned ClassBytes object had a null value for the class byte array. However, org.jboss.remoting.loading.ClassByteClassLoader does not check for the possibility of a null byte array, so a NullPointerException resulted. JBREM-1184, which caused this issue, has been fixed.

9.4. Seam Fixed Issues

On injection of a jBPM ProcessInstance to a Seam component, the process instance returned was registered for auto-save. This caused a performance issue, as the jBPM ManagedContext saves all instances in the autoSaveProcessesList when it closes. The code for returning a ProcessInstance on injection has been changed, and the process instance is no longer registered for auto-save.
An input sanitization flaw was found in the way JBoss Seam processed certain parametrized JBoss Expression Language (EL) expressions. A remote attacker could use this flaw to execute arbitrary code via a URL, containing appended, specially-crafted expression language parameters, provided to certain applications based on the JBoss Seam framework. Note: A properly configured and enabled Java Security Manager would prevent exploitation of this flaw. (CVE-2010-1871)
Red Hat would like to thank Meder Kydyraliev of the Google Security Team for responsibly reporting this issue.
A change to Seam's getInstanceFromFactory method to fix a concurrency issue caused some applications to enter a deadlock situation in a very specific combination of circumstances. The original fix to getInstanceFromFactory was revised, and the issue has not been observed since.
Seam was distributed with a copy of activation.jar in its /lib directory. This file is also supplied by JDK 6. The copy in Seam has been removed.
Rich:comboBox components in Seam apps created with seam-gen were missing the drop-down arrow graphic. This was fixed by modifying the cascading style sheet used to control the display of the component in a web browser. The arrow graphic is now displayed correctly.
Seam would fail if two components with the same class name were found on the classpath, with an error: "java.lang.IllegalStateException: Two components with the same name and precedence -", followed by the component and class names. Seam has been updated, and will now ignore any duplicate classes. When duplicate components are encountered with the same classname, the first one encountered will be loaded, and any subsequent components on the classpath with the same classname will be ignored.
MockServletContext was unaware that JBoss Enterprise Application Platform 5 used the Virtual File System. It therefore attempted to access URIs as files. MockServletContext now recognizes the web application root and fetches the path of the URL class, ensuring that the protocol does not form part of the constructor parameter.
Seam-gen templates used resource:// for objects that were not on the classpath. This resulted in an error when trying to transform a RichFaces template (XCSS) into a CSS file. Seam-gen no longer uses resource://, fixing the issue.
When hot deployment was used for EARs that contained multiple WAR files, the first web application accessed worked correctly, but web requests to subsequent web applications caused a NullPointerException. This occurred because the application context was not set up when the hot deployment filter ran. Each operation related to web application context now checks for the current javax.servlet.ServletContext, resolving the issue.
When using the web services page of the Seambay example in Internet Explorer 8, values entered in the username and password fields do not propagate to the request area because of an undefined JavaScript object. This has been corrected.
The Tasks example did not work correctly in Internet Explorer 8. When "Undo this Task" is selected on the Resolved Tasks page, the task returns to the Tasks page, but does not disappear from the Resolved Tasks page. This issue has been fixed by turning off Ajax request caching.
Resources from the resource servlet, such as CAPTCHA images, were cached by the browser and did not re-render correctly because of incorrect response headers in org.jboss.seam.captcha.CaptchaImage. The response headers have been corrected so that this no longer occurs.
In Seam mail, attachments were not always included inline, so attachments were not visible in some mail clients. The patch for this issue was backported from JBSEAM-4630, and attachments should now be visible.
If ELSupport.coerceToType was called with an BigDecimal instance as the first Parameter 'obj' and BigDecimal.class as type, the BigDecimal would be converted into a double and back into a BigDecimal which would lead to a different value being returned.
This was addressed upstream, and was fixed in JBoss Enterprise Application Platform 5.1.0 by changing the Seam dependency on JBoss-EL to 1.0_02.CR5.
ELSupport.coerceToType now returns an input value when it is assignable to the given type.
org.jboss.seam.transaction.EjbSynchronizations did not comply with Java specifications. As stated in, classes that implement SessionSynchronization may not have TransactionsAttribute TransactionAttributeType.SUPPORTS. TransactionsAttributeType.SUPPORTS has been replaced with TransactionsAttributeType.REQUIRED.
org.jboss.seam.core.Interpolator did not report exceptions and printed warnings with limited information. Exceptions are now reported, and warnings are more informative.
Seam JMS support did not work after failover to a slave node because the topicConnection field in the SubscriptionRegistry object became invalid when the connection to the master node failed. Subsequent calls to SubscriptionRegistry.subscribe() failed with SpyJMSException, and JMS subscriptions no longer worked even if the master node revived. This issue has been fixed.
A typographical error existed in the message logged by the org.jboss.seam.async.AsynchronousExceptionHandler when handling "Exeception thrown while executing asynchronous call". "Exeception" should be "Exception". This has been fixed.
Requirements have changed between JBoss Enterprise Application Platform 4.x and JBoss Enterprise Application Platform 5.x such that page-level in the ResourceLoader must be stored in META-INF/classes or they will not work. The documentation is not explicit about this. This issue has been fixed.
Initialization.redeploy included code that created a new lock and then locked it immediately. This did not provide any level of protection, and could cause problems in debug mode. This has been fixed by removing the lock completely.
The SeamSpace testCreateBlog failed with a NullPointerException on IBM JDK 1.6. The getIdentifier method now behaves correctly on JDK 1.6.
In profiles other than production, MockResponseStateManager did not override ResponseStateManager#isPostback. This meant that both Faces and non-Faces requests were evaluated as postbacks. A isPostback(FacesContext context) method has been added into org.jboss.seam.mock.MockResponseStateManager, which overrides the old method and allows NonFacesRequest to recognize postback.
JAX-RS web services executed within an EJB transaction cannot use Seam HTTP authentication. HTTP requests to a web service protected by AuthenticationFilter split into two seperate ContextualHttpRequests. In the second one, it is not possible to look up EjbSynchronization beans, so Component.getInstance("org.jboss.seam.transaction.synchronizations", ScopeType.EVENT) fails with NoSuchEjbException.
This issue has been fixed.
s.tld in jboss-seam.ui.jar/MANIFEST.MF contained attribute entries that were defined incorrectly according to the XML Schema for the JSP Taglibrary descriptor. This has been fixed with the upgrade to Richfaces 3.3.1.SP1.
The Seam Chatroom example threw an EJBTransactionRolledbackException when a user attempted to log in. This exception did not influence the application's functionality, and has been fixed with an update to JBoss Cache.

9.5. Security Fixed Issues

The /status servlet was accessible from http://localhost:8080/status?full=true without authentication. (CVE-2008-3273)
This issue has been fixed and the servlet now requires authentication.

9.6. Application Server Fixed Issues

The parsing and deploying mechanism for hibernate.cfg.xml was unstable. This resulted in an inability to use regular Hibernate property names, because properties had to be mapped to the org.jboss.hibernate.jmx.Hibernate class. The original set of parsed key/value pairs is now inserted into the o.j.h.hmx.Hibernate objects via a new setProperties(Set<BaseNamedElement>) method. The start() method then builds the configuration from that set of properties.

9.7. Documentation Fixed Issues

Several typographical errors in the Seam Reference Guide have been corrected.
The section on Running as a Service on Windows in the Installation Guide listed incorrect long and short service names, and an incorrect location for the service.bat script. This has been corrected.
The RuleBasedPermissionResolver requirements for Drools 5 were out of date. This resulted in incorrect information being presented in the documentation. The out of date information has been replaced with up-to-date, accurate content.
The Seam Reference Guide contained some duplicate information, which has been removed.
The 'Charting' section in the Seam Reference Guide was missing information on <p:chart> tags. This has been corrected with a description; 'displays a chart already created in Java by a Seam component.'
Seam reference documentation source code blocks did not have syntax highlighting, which made the source code difficult to read. This code has all been updated with the correct highlighting.
The Seam Reference Guide was missing callout numbers in example code blocks. This made it difficult to connect the code and the accompanying explanatory notes. This has been fixed by introducing callouts.
"Using Seam with JBoss Tools" in the Seam Reference Guide has not been revised for use with JBoss Enterprise Application Platform and should be considered obsolete.
The documentation how now been fixed and updated.

9.8. Messaging Fixed Issues

ServerConsumerEndpoint.localClose() threw a NullPointerException during shutdown. This has been corrected with an updated version of JBoss Messaging.
When unicode multibyte characters are used in a message Selector, JBoss Messaging throws a TokenMgrError.
This issue has been fixed, and multibyte characters are now allowed.
When JBoss Transactions is upgraded from version 4.4.0 to version 4.6.1, the JBoss Messaging XAResourceRecoveryTest fails. The test is meant to simulate a failure during the commit process to prompt the Recovery Manager to recover the transaction, but with JBoss Transactions 4.6.1, the transaction is not recovered.
This issue has been fixed and a new test has been created to work with the change in transactions behaviour.

9.9. Web Services Fixed Issues

Testing has revealed issues with the way Enterprise Application Platform 5.1.0 handles the transfer of many large files without MTOM enabled. Customers should note that MTOM should be enabled to transfer large files, and this kind of service consumes a high amount of memory. However, if you choose not to use MTOM, you can implement the following to stop your Application Server crashing:
  • Configure the limited listener for this service
  • Allocate more memory and configure the right garbage collection (GC) policy for a Java Virtual Machine
The web services context example did not work, and threw a ClassCastException. The example has been patched and now works as expected.
When a method with an additional namespace for a header parameter was invoked after a method that did not have this additional namespace, the wrong namespace was used in the SOAP operation when the method was serialized. The issue has been fixed by correcting the way transitions are made between Java Objects and XML, so that the final SOAP Message is generated with correct namespaces.
The doc/examples/jboss-web-services-examples context caused a number of exceptions to occur. This context error meant that the JBoss Web Services examples would not work correctly. The example code was modified as per JBPAPP-2995, and the examples now run correctly.
Sun JAXB silently accepts messages with non-fatal errors where they should be rejected. The fix for JBPAPP-2114 corrects this, so that badly-formed messages are rejected.

9.10. RESTEasy Fixed Issues

An IndexOutOfBoundsException occurred in the POJOResourceFactory because the interface was annotated instead of the implementation. Support has been added for annotated interfaces.

9.11. Clustering Fixed Issues

When an application that uses JPA or Hibernate is configured to use a clustered Hibernate second-level cache, it introduces an explicit dependency on the application server's CacheManager Service. This dependency is not recorded in the application server's service dependency system, so when the Platform is stopped, the CacheManager may shut down before the application. This causes a WARN message in the log when the application shuts down. This issue leads only to warnings in the error log and has been fixed with a HA Server Cache upgrade.

9.12. Cache Fixed Issues

ha-server-cache-jbc has been upgraded to 2.0.3.Final.

9.13. Connector Fixed Issues

When using SystemMemoryUsageLoadMetric, mod_cluster prioritizes dispatching requests to a machine that is using system memory higher than other machines. The metric returned its 'load' as 'free memory' instead of the expected 'used memory'. This has been corrected and the error no longer occurs.
org.jboss.modcluster.demo.servlet.ThreadCountLoadServlet has been removed from mod_cluster but is still specified in the web.xml file belonging to load-demo.war. This results in deployment errors. This issue has been fixed and the non-existent servlet has been removed.

10.  Known Issues with this release

Following is a list of known issues at the time of release.

10.1. Unsupported JARs

The following libraries are included, but not supported, in this version of JBoss Enterprise Application Platform.
  • client/hornetq-core-client.jar
  • client/hornetq-jms-client.jar
The hornetq RPM is likewise unsupported in this release.

10.2. General Known Issues

The graphical installer allows the user to specify a custom JAAS security domain for securing consoles and invokers, but always secures the Tomcat console with the JAAS security domain "jmx-console", even if it does not exist. To use a custom JAAS security domain, specify the name in the "JMX Security" screen during installation. When the installer completes, edit the jboss-as/server/$PROFILE/deploy/ROOT.war/WEB-INF/jboss-web.xml file. In the <security-domain> element, replace the name "jmx-console" with the name of the security domain you used during installation. This secures the Tomcat console with the same custom JAAS security domain that secures the Admin console and any other consoles and invokers you elected during installation.
The web profile incorrectly includes a recovery setting for JBoss Messaging, which is not part of the web profile. This results in ClassNotFoundExceptions in server.log.
To work around this issue, remove the following lines from jbossts-properties.xml:
<property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1"
The locations of jbosssx.jar, jboss-javaee.jar, jboss-security-spi.jar, and jbosssx-server.jar have changed in this release due to a security fix. In this release they have been relocated to jboss-as/lib/. Any scripts that rely on the location of jbosssx.jar should be updated to reflect this change.
Resteasy-guice applications fail to deploy because of a java.lang.SecurityException. An error message similar to the following is displayed: java.lang.SecurityException: class "org.jboss.resteasy.examples.guice.hello.DefaultGreeter$$FastClassByGuice$$70fd68d0"'s signer information does not match signer information of other classes in the same package"
This occurs because the cglib.jar in JBoss Enterprise Application Platform is signed, and the cglib- instrumented proxy uses the cglib.jar signer information instead of the signer information of the application target class. The patch for this issue has been released alongside JBoss Enterprise Application Platform 5.1.0 and can be downloaded from Red Hat Support.
Other agent-enabled tools may run into a class that contains a field, method, constructor, or other that was not loaded by Javassist. In this case, when the Advisor tries to manipulate that method, a javassist.NotFoundException is thrown. This exception should be ignored and the field considered non-existent.
An org.jboss.ejb3.stateless.StatelessDelegateWrapper cannot be assigned to an org.jboss.system.ServiceMBean when creating a monitor with org.jboss.console.plugins.monitor.CreateThresholdMonitorServlet. The monitor is created as an attribute rather than a <depends>, so it fails to deploy upon restart. The workaround for this issue is to manually alter the created *-service.xml to allow the monitor to deploy correctly on restarting.
The ServiceMetaDataParser.parseValueFactoryParameter() only considers the first child of the <parameter> element. Therefore if the <null/> child element is surrounded by carriage returns ('enter' or white space) the node is treated as a text value and the parameter is not correctly substituted later on. The following will cause an error:
The workaround is to ensure there is no whitespace in <parameter> elements, like so:
When java.sql.Date.valueOf attemps to parse dates of the format yyyy-mm-dd, the TCK test threw a java.lang.IllegalArgumentException. This was due to a regression in the latest Sun JVM, Sun JDK 1.6.0_18-b07 (see for more information). The workaround for this issue is to downgrade to Sun JDK 1.6.0_17-b04.
Each time a org.jboss.mail.MailService is configured and bound to JNDI, the SessionObjectFactories properties are overwritten. This means that when multiple MailService configurations exist, all MailServices bound to JNDI will have the properties of the most recently configured MailService in their Session.
In isolated deployments, a ClassNotFoundException is thrown when the application server tries to deserialize an info object associated with the Timer. This occurs because the wrong classloader (threadContextClassLoader) is used to deserialize the object.
When accessing the admin console WARN messages are generated in the logs, stating "Cannot get the process table information without native support". These messages can be safely ignored. In a future release of the admin console these messages will be changed to INFO .
A bug in JVM implementations means that the JVM may crash when an incomplete deployment is overwritten by a new version of the deployment during hot deployment. For example, a deployment may contain a formatting error in a deployment descriptor. When deployed, the error is encountered and the deployment fails. If a corrected deployment is copied over the top of the erroneous deployment to replace it, the JVM may crash during hot deployment of the new version. The workaround for this issue is to remove the old, incompletely deployed archive before copying the new corrected deployment into the deploy directory.
The jboss_init_hpux script does not pick up environment variables when executed in the GNU bash shell. This is related to JBPAPP-2036:
The -e and -H arguments of the script cannot be used to directly terminate the JVM.
When the server is started via a desktop icon, the machine's default Java set is used. This can cause exceptions when a Java version other than JDK 1.6 is set as the default. Users should ensure that JDK 1.6 is set as the default Java version before attempting to start JBoss Enterprise Application Platform via the desktop icon.
Setting the hibernate.bytecode.provider system property in jpa-deployers-jboss-beans.xml is unreliable. The workaround for this issue is to add -Dhibernate.bytecode.provider=cglib to $JAVA_OPTS in jboss-as/bin/run.conf.
High CPU utilization and reduced performance and transaction throughput has been observed when MySQL 5.0.41 when optimized settings are in use, as described in JBQA-2610. We recommend upgrading to MySQL 5.0.86 and applying optimized settings as described in JBQA-2610 to reduce CPU utilization and increase performance.
Once the workaround for the JBAS-7049 issue is applied a new issue presents itself. A server running the security manager using OpenJDK 6 still fails to start, now with an access denied error. There is no currently known workaround for this issue.
An issue exists in the policy.provider defined in ${JAVA_HOME}/jre/lib/security/ when IBM JDK 6 is used. By default is used and this should be The workaround for this issue is to manually make this adjustment.
The MySQL JDBC driver does not currently implement XA Recovery correctly.
The server manager does not function correctly when OpenJDK 6 is used because a NullPointerException check is missing in OpenJDK 6. The workaround is to comment out the statement in the imports/server-config.xml file.
The IBM distribution of JDK 6 does not support the SSLv2Hello protocol and generates a ERROR [AbstractKernelController] when used. It is currently recommended not to use this protocol.

10.3. Installer Known Issues

When a custom JAAS security domain is created during the graphical installation process, the custom JAAS security domain continues to use and instead of creating its own named users and roles properties files.
After all files have been extracted during installation on Solaris 10 (both 32-bit and 64-bit architectures), the console displays an unnecessary request for a password. Installation will not proceed until the user presses Enter.

10.4. Hibernate Known Issues

Cascading tables containing auto-incremented primary keys were not saving correctly because tables were not being processed in the correct order in the save queue.
One table (A) has an assigned primary key. A second table (B) is linked to Table A, has cascading enabled, and uses an auto-incremented primary key. When attempting to save Table B, Hibernate detects that Table A should be saved first and adds it to a save queue. Hibernate then attempts to save Table B immediately. This save operation fails, because to succeed Table B must obtain a primary key reference from Table A, which is null while it remains in the save queue.
To work around this issue, disable table cascade and ensure that the table with the assigned primary key is saved before attempting to save a table with an auto-incremented primary key.
When a refresh() method is invoked immediately prior to an insert(), and second-level caching is enabled, the entity is inserted into the second-level cache. If the refresh() does not commit successfully, however, the cached data will not be automatically evicted. This occurs because refresh() does not track entity state. Since the refresh() operation is usually used for generated properties, one workaround for this issue is to use the @Generated annotation. Another workaround is to manually evict the cache entry.
The updated JDBC 3.0 driver for MS SQL Server 2008 now supports the following data types:
  • time
  • date
  • datetime2
  • datetimeoffset
For more information about these SQL Server types, see Date and Time Data Types and Functions (Transact-SQL).
This type change causes the org.hibernate.test.hql.ASTParserLoadingTest test and the org.hibernate.test.stateless.StatelessSessionTest test to fail. The workaround for this issue is to define a new dialect, like so:
public class SQLServer2008Dialect extends SQLServerDialect 
   public SQLServer2008Dialect()
      registerColumnType( Types.DATE, "date" );
      registerColumnType( Types.TIME, "time" );
      registerColumnType( Types.TIMESTAMP, "datetime2" );
      registerFunction( "current_timestamp", 
                        new NoArgSQLFunction("current_timestamp", 
                                             Hibernate.TIMESTAMP,false) );
When an insert operation was performed using jconn3.jar, null bit values were converted to 0, so no exception was thrown. Sybase does not allow a null value for the bit datatype, so null bit values should result in exceptions.
To work around this issue within Hibernate and persist the value as a null as intended, map type to org.hibernate.test.where.NumericTrueFalseType instead of boolean, like so:
A bug in jConnect means that the FetchingScrollableResultsImpl.isResultSetEmpty() method returns the following to determine if a ResultSet is empty:
currentPosition == 0 && ! getResultSet().isBeforeFirst() && ! getResultSet().isAfterLast();
When the ResultSet is empty, FetchingScrollableResultsImpl.isResultSetEmpty() should return false but Sybase JDBC returns true. There is currently no workaround for this issue.
When Hibernate executes a cacheable query using a ResultTransformer, it will attempt to cache the results after applying the ResultTransformer. However, the data may be modified so that Hibernate cannot read it. In this case, a ClassCastException will occur when attempting to cache the results.
From Oracle 11g R2 (RAC), the behavior of the CREATE TABLE statement changed such that when creating a conventional table in a database created with the default options, the initial segment is not created until the first row is inserted into the table (see for details).
As a result of this change, if the ID generator class is sequence-identity, sequences created as default start with 2 or 4 instead of 1. To work around this issue:
  • Use a different ID generator class, or
  • Disable deferred segment creation on Oracle by setting the initialization parameter DEFERRED_SEGMENT_CREATION to FALSE. The CREATE TABLE statement has two new clauses (SEGMENT CREATION DEFERRED and SEGMENT CREATION IMMEDIATE), which override the value of the DEFERRED_SEGMENT_CREATION parameter.
In Oracle 11g R2 (both RAC and standalone), a complex query with LockMode.UPGRADE (that is, "for update") may cause a "No more data to read from socket" error. This is not a Hibernate bug, and is related to database configuration. See Bug Hunting for more information. The workaround for this issue is to avoid using LockMode.UPGRADE on such queries.
Hibernate does not currently log the execution time for each query. This is expected in future versions of JBoss Enterprise Application Platform.
This is an issue with cglib, which is deprecated in this release of JBoss Enterprise Application Platform. See for more details. cglib removes field annotations when transforming a class with TransformingClassGenerator because of a problem with the visitField method. It is possible to work around this issue by annotating getters instead of fields, but this may not be possible for heavy applications ported to JBoss Enterprise Application Platform 5.
Hibernate does not currently support tuple syntax in HQL or Criteria on databases which do not support tuple syntax. For example, if a database does not support tuple syntax:
where (a,b) in ( (1,2), (3,4) )
Hibernate should translate to:
where ( (a=1 AND b=2) OR ( (a=3 AND b=4) )
There is currently no workaround for this issue except to avoid using this syntax query on databases that do not support tuple syntax.
If a database reserved keyword is used as a property name with a Hibernate Validator annotation (for example, @Min or @Max), it will cause exceptions in SchemaExport, even if you specify a column name. This is because Hibernate ignores the name specified. The workaround is to map the property name to something that is not a database reserved keyword with the @Column annotation. The fix for this issue is expected in Hibernate 4.
The QueryByExampleTest.testJunctionNotExpressionQBE test fails in Sybase because ansinull is set to off by default. This test builds a disjunction predicate such as ( OR^ (ex) (NOT ex) ). This should match everything in the database, but because ANSI SQL evaluates all comparisons involving NULL values as UNKNOWN, not all matches are returned. To work around this problem, append the following string to the JDBC URL:
?SQLINITSTRING=set ansinull on
If this is not possible, an alternative is to execute the following Java code (or similar) after obtaining a Hibernate session s:
s.connection().createStatement().execute("set ansinull on");
When batch insert statements are ordered, embedded classes are not taken into account. There are two possible workarounds for this issue. The first is to set ORDER_INSERTS to FALSE when embedded classes are used. The second option is to explicitly call on child objects to enforce their SQL insertion orders.
MySQL does not currently support millisecond and microsecond measurements when returning database values such as TIME and TIMESTAMP.
On Sybase, the current_timestamp text is not being recognized by the translator as a method mode. There is currently no way to work around this issue except to avoid relying upon function replacement for current_timestamp.
On Sybase, SchemaExport cannot be used to create stored procedures while in while in chained transaction mode. The workaround for this case is to add the following code immediately after the definition of the new stored prodecure:
      sp_procxmode paramHandling, 'chained'
The evict(Object) method in EntityRegionAccessStrategy and CollectionRegionAccessStrategy attempts to remove objects from the cache without regard for transaction isolation. This is currently unsupported because JBoss Cache's removeNode method does not deal with transactions.
Setting the query timeout for a PreparedStatement is not supported by PostgreSQL 8.3.7. This limitation means that queries will fail if they use an annotation like the following:
        @QueryHint(name = "org.hibernate.timeout", value = "100")
Applications that map Hibernate to use cglib as a byte provider fail to deploy because of a java.lang.SecurityException. An error message similar to the following is displayed:
Deployment "persistence.unit:unitName=lobtest.ear/
      lobtest-ejb-1.0-SNAPSHOT.jar#lobtest-jpa-jndi" is in error due to the following reason(s):
      java.lang.SecurityException: class
      "com.redhat.gss.lobtest.jpa.Item$$EnhancerByCGLIB$$defd1a7f"'s signer information does not
      match signer information of other classes in the same package
This occurs because the cglib.jar in JBoss Enterprise Application Platform is signed, and the cglib-instrumented proxy uses the cglib.jar signer information instead of the signer information of the application target class.
cglib is deprecated in the 5.1 release of JBoss Enterprise Application Platform.
Sybase does not currently support Hibernate Blobs or Clobs, and Hibernate does not support Sybase text or image data types. The workaround for this issue is to create user-defined types that map to the Sybase text and image types.
Sybase fails to insert a new entity if it overflows its column. However, it does not throw an exception, so Hibernate cannot tell that the insert failed. One workaround for this issue is to use the jconn3.jar with DYNAMIC_PREPARE=true set in the Hibernate configuration file.
<property name="connection.url">jdbc:sybase:Tds:aurum:1503/masterDb?
Another workaround is to use the jconn4.jar.
SchemaExport fails on Oracle and Sybase when a redundant @Column(unique=true) or UniqueContraint(columnnames={...}) annotation is used on a column that is implicitly defined as unique by the declared model. The workaround is to remove the redundant @Column(unique=true) or UniqueContraint(columnnames={...}) annotation.
When the DB2 version 9.7 driver is used with progressive streaming (the default), operations on Blob and Clob locators fail. There are two possible workarounds to this issue:
  • Create a property file named, either on your class path or in a JAR on your class path. Add the following line to this file to disable progressive streaming on DB2:
  • Use the DB2 version 9.1 driver instead of DB2 version 9.7.
An issue exists with the DB2 v9.7 driver when using an identity or native ID generator with Hibernate. The Statement.getGeneratedKeys() driver method in DB2 returns an empty resultset instead of the generated keys, which causes Hibernate to throw an exception that states that the database returned no natively generated identity value. This issue has been fixed in the version of DB2 9.7 JDBC driver released with Data Studio 2.2 and is available for download from the DB2 website. This is the recommended version for use with Hibernate.
The Save operation may fail when a transient entity is reachable by multiple paths and at least one of those paths does not cascade for the Save opperation. The current workaround for this is to save the transient entity before executing the save that had previously failed. If this is not possible, another workaround is to modify either or both cascade and entity mappings to change the order of the cascade paths so that the transient entity is saved before it cascades to the entity that requires it to be non-transient.
The Hibernate tests and fail when testing queries with untyped parameters for DB2, which does not support untyped parameters. You can work around this issue by modifying the queries so that the parameters are cast to an appropriate data type, as described on the JIRA.
Null values for columns mapped as Boolean in Sybase are persisted as 0 instead of null. The workaround for this issue is to map type="org.hibernate.test.where.NumericTrueFalseType" instead of type="boolean".
Sybase only allows only one entry (for example, column name or '*') in a subquery select list. The HQL function, elements(), fails when the collection elements have a composite ID, because the generated SQL contains a subquery select list with multiple entries. The workaround is to avoid using HQL elements() if the elements have a composite key. Instead, reformulate the HQL so that no subquery has multiple entries in its select list.
On Sybase, when a query has an ANSI join with three or more joins, and one join involves a union subclass, the query may fail with SybSQLException because a column is not within the scope of the joined table expression. The current recommendation is to avoid using join fetches that involve union subclasses.
When a DetachedCriteria is used as a subquery, the generated SQL contains a column alias in the subquery. On Sybase, a SybSQLException is thrown because Sybase does not allow column aliases in subqueries. The workaround for this issue is to use an HQL query instead of a DetachedCriteria in a subquery.
When @OrderBy is used on joined classes (using a join table), the generated SQL is invalid on MySQL, PostgreSQL, Oracle, and MSSQL because the "order by" clause qualifies the columns using the actual table name. The "order by" clause should use the table alias instead.
When a char property is used and it is not initialized, then Hibernate initializes it to 0 and persists a string containing the character \u0000. PostgreSQL throws an exception because it does not allow the character \u0000 embedded in a string. There is currently no workaround for persisting \u0000 in a char column using PostgreSQL.
To persist a NULL for an uninitialized char property instead of \u0000, use java.lang.Character instead of the primitive char type. This avoids the exception when the property is initialized. Attempting to persist a java.lang.Character property that is set to \u0000 still results in an exception.
In some cases, when there are foreign key constraints defined on columns in a primary key, SchemaExport incorrectly declares them as nullable when it generates CREATE TABLE statements. This fails on MSSQL, DB2, and Sybase because those databases require primary key columns to be non-nullable.
The workaround for this issue is to explicitly indicate which columns should be non-nullable, such as:
  • Add nullable=false to @JoinColumn
  • Add optional=false to @ManyToOne
  • Add an @AttributeOverride with @Column(name="mapkey", nullable=false) in case of a @CollectionOfElements using a Map
  • Add nullable=false in @Column when inside a @CollectionId or inside @MapKey

10.5. JBoss Messaging Known Issues

When using Sybase database with the JDBC driver Sybase jConnect JDBC driver v7 (Build 26502), a MaxParams attribute in the sybase-persistence-service.xml configuration file cannot be set higher than 481 due to a limitation of the PreparedStatement class in this driver. Unexpected failures can occur when the MaxParams attribute is set to a value higher than 481. To avoid this issue, set MaxParams to a smaller value than 481.
JBPAPP-4668 (previously JBPAPP-3965)
Two JBoss Messaging Test Suite tests fail on Oracle 11g R1, R2 and RAC with the latest JDBC driver, version
  • QueueManagementTest.testDestroyDestinationProgrammatically
  • QueueManagementTest.testDestroyDestinationProgrammaticallyWithParams
These tests use a large value for the fullSize queue configuration parameter, which is passed to the setFetchSize method on the java.sql.PreparedStatement. A problem with the JDBC driver means that more than the usual amount of memory is consumed when executeQuery() is called, which results in a java.lang.OutOfMemoryError, causing the test to fail.
Oracle JDBC driver version causes the JBoss Messaging Test Suite to fail with a SQLException ("Bigger type length than Maximum") on Oracle 11g R1. This is caused by a regression in Oracle JDBC driver We recommend Oracle JDBC driver version for use with Oracle 11g R1, Oracle 11g R2, Oracle RAC 11g R1 and Oracle RAC 11g R2.
If a message-driven bean is deployed with the default settings ((useDLQ=true, DLQMaxResent=5) and message redelivery is prompted, messages remain in the queue in a "delivering" state even after the message is delivered to the dead letter queue. The workaround for this issue is to disable the use of the dead letter queue: useDLQ=false.
EnableMessageCounters on the jboss.messaging.ServerPeer JMX interface, cannot be set to true. A workaround to enable message counters is to invoke the enableMessageCounters() operation on the same JMX interface.

10.6. JBoss Web Services Known Issues

The jbossws-cxf-installer/docs/Install.txt file in the JBoss WS CXF installer incorrectly calls JBoss WS CXF a Technology Preview. The text of Install.txt should be as follows:
Simply run "ant" from the jbossws-cxf-installer directory
extracted from the into your JBOSS_HOME for
your JBoss Enterprise Platform.
With JBoss Web Services Native, when MTOM is enabled and the DataHandler getter signature of a return-type class does not match the JavaBean getter signature, the response will be sent as an inline string instead of using XOP. This occurs because scanning for attachment annotations is based on the JavaBean getter signature.
When services are deployed to JBoss Web Services Native, any XML Schema Declaration (XSD) imports with relative URLs are rewritten as absolute URLs relative to the WSDL service contract. If an imported XSD imports a second XSD using a relative path, this path is incorrectly rewritten to be relative to the XSD instead of the WSDL service contract. The workaround for this issue is to move all XSD and WSDL files into the same directory and change all the imports.
The upgrade from JBoss Web Services 2.0.1.SP to JBoss Web Services Native 3.1.2.SP incorporated many changes and new features. The additional processing time required for several new features (resource injection, support for @PostConstruct and @PreDestroy, etc.) has resulted in a slight degradation in overall performance.

10.7. Remoting Known Issues

EJB3 clients do not reuse existing socket connections on subsequent invocations; a new connection is created per invocation.

10.8. RESTEasy Known Issues

The jettison.jar file is not included in the jboss-eap-5.1/resteasy/lib directory of To work around this issue, use the jettison.jar file included in the Seam distribution, jboss-eap-5.1/seam/lib/jettison.jar.
The spring-hibernate-contacts example fails with the error java.lang.IllegalArgumentException: object is not an instance of declaring class. This occurs because the getContactById(@PathParam("id") Long id) method in the ContactServiceImpl class is missing the @GET annotation.

10.9. Seam Known Issues

Seam applications backed by POJO Cache with field-level session replication turned on can fail with an InstantiationException. This is due to architectural features of POJO Cache, which requires specific functionality and behavior from clients in order to provide field-level session replication.
A workaround exists. Add the following code to the JSF configuration (faces-config.xml)
When uploading files with <s:fileUpload> inside <h:dataTable>, errors occur which lead to identical filenames and incorrect content. This occurs because the local value is not returned by the getLocalValue() method.
A NullPointerException occurs when undeploying or uninstalling Seam examples. It does not cause any application to shutdown, but this error should not occur. The issue is seen in the nestedbooking, dvdstore, itext and excel examples, but does not appear in ui example.
The iText example contains a "Programming Skills" section. Items selected in the multi-select list are supposed to be included in the generated PDF. Due to a bug in iText, when multiple items are selected, only the first item is included in the generated PDF.
Seam's Spring example fails with an IllegalStateException when the login form is submitted on the IBM virtual machine. This is due to a defect in the IBM virtual machine. The fix for this issue has been deferred until the IBM virtual machine has been fixed.
The Seamspace example fails with a NullPointerException when submitting a new blog entry on the IBM virtual machine. This is due to a defect in the IBM virtual machine. The fix for this issue has been deferred until the IBM virtual machine has been fixed.

10.10. EJB3 Known Issues

The following classes have been added to the jboss-ejb3-deployer.jar:
However, the @Remote* annotations in Enterprise Application Platform 'web' configuration and Enterprise Web Platform throw a NullPointerException. This is because jboss-iiop.jar is not included in the web configuration, which is essentially the Enterprise Web Platform.
The deployment of a persistence unit into an EAR will fail when the unit is outside of the EAR and the bean attempting to inject the persistence unit is within the EAR. The injection fails because the persistence unit cannot be found. This is expected behavior of the EJB3 spec. For strict EJB3-spec compliance, the persistence unit should be packaged within the EAR.
A JBoss-specific behavior allows persistence units to exist outside EARs. This is configured in the file deployers/ejb3.deployer/META-INF/jpa-deployer-jboss-beans.xml under a JBoss AS server profile. The relevant section is:
     Can be DefaultPersistenceUnitDependencyResolver for spec compliant resolving,
     InterApplicationPersistenceUnitDependencyResolver for resolving beyond EARs,
     or DynamicPersistencePersistenceUnitDependencyResolver which allows configuration via JMX.
  <bean name="PersistenceUnitDependencyResolver" class="org.jboss.jpa.resolvers.DynamicPersistenceUnitDependencyResolver"/>>
By default, the DynamicPersistenceUnitDependencyResolver ( is used, which allows the spec-compliant behavior to be controlled through the MBean in the JMX Console. The spec-noncompliant JBoss variant search strategy can be found at

10.11. Clustering Known Issues

When an exploded archive that contains a 0-byte file (among other files) is deployed, a NullPointerException is thrown on the remote node. This aborts the farm deployment process. No workaround currently exists.

10.12. Connector Known Issues

The mod_cluster manager module's status page is not updated upon worker node failover. This means that the worker is listed as active and available after it has failed.
The following error log messages are produced when the client unexpectedly closes the connection in AJP:
              [error] [client <ip>] proxy: error processing body
              [error] proxy: dialog to ( failed
These errors should be logged as warn or debug rather than error.
When an application is undeployed, sessions that were forwarded to the application server by mod_cluster before undeploy notification was received may result in an error 503 - This application is not currently available.
If the root context ("/") is deployed and enabled, other contexts cannot be disabled. It is also impossible to specify that other contexts not be forwarded to the root context.

A. Revision History

Revision History
Revision 5.1.0-111.4002013-10-31Rüdiger Landmann
Rebuild with publican 4.0.0
Revision 5.1.0-1112012-07-18Anthony Towns
Rebuild for Publican 3.0
Revision 5.1.0-1Wed Nov 10 2010Laura Bailey
Release note additions for RHEL6 release.
Revision 5.1.0-0Fri Oct 15 2010Laura Bailey
Final release notes for EAP 5.1 GA.

Legal Notice

Copyright © 2010 Red Hat, Inc.
This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.