JBoss Enterprise Application Platform 4.2 Release … · It is also certified for Sybase ASE 15.0.3...

23
JBoss Enterprise Application Platform 4.2 Release Notes CP09 for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 9 Edition 1.0 Last Updated: 2017-10-03

Transcript of JBoss Enterprise Application Platform 4.2 Release … · It is also certified for Sybase ASE 15.0.3...

JBoss Enterprise Application Platform4.2

Release Notes CP09

for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 9

Edition 1.0

Last Updated: 2017-10-03

JBoss Enterprise Application Platform 4.2 Release Notes CP09

for Use with JBoss Enterprise Application Platform 4.2 Cumulative Patch 9Edition 1.0

Laura [email protected]

Legal Notice

Copyright © 2010 Red Hat, Inc.

This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0Unported License. If you distribute this document, or a modified version of it, you must provideattribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all RedHat 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 Infinitylogo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and othercountries.

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 UnitedStates and/or other countries.

MySQL ® is a registered trademark of MySQL AB in the United States, the European Union andother countries.

Node.js ® is an official trademark of Joyent. Red Hat Software Collections is not formally relatedto 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 marksor trademarks/service marks of the OpenStack Foundation, in the United States and othercountries 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.

Abstract

These release notes contain important information related to JBoss Enterprise ApplicationPlatform 4.2.0.CP09 that may not be currently available in the Product Manuals. You should readthese Release Notes in their entirety before installing JBoss Enterprise Application Platform4.2.0.CP09.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Table of Contents

1. INTRODUCTION1.1. Overview

2. NEW FEATURES IN JBOSS ENTERPRISE APPLICATION PLATFORM 4.22.1. Database Certifications2.2. IPv6 Certification2.3. JDK 1.6 Certification2.4. Component Versions

3. INSTALLATION AND MIGRATION NOTES3.1. Installation Notes3.2. Upgrading from JBoss Enterprise Application Platform 4.2.0.CP08

4. PRODUCT SUPPORT AND LICENSE WEBSITE LINKS4.1. Documentation4.2. JSR-181 support

5. ISSUES FIXED IN THIS RELEASE

6. KNOWN ISSUES WITH THIS RELEASE

A. REVISION HISTORY

22

22222

344

455

5

11

19

Table of Contents

1

1. INTRODUCTION

These release notes contain important information related to JBoss Enterprise Application Platform4.2. New features, known problems, resources, and other current issues are addressed here.

1.1. Overview

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

JBoss Enterprise Application Platform provides complete compatibility with existing J2EE 1.4enterprise Java applications. At the same time, almost all the key features and components defined inthe Java EE 5.0 specification are supported. So your new enterprise Java applications can takeimmediate advantage of the Java EE 5.0's significantly simpler POJO-based programming model.

Further, by integrating best-of-breed open source frameworks such as JBoss Seam, Hibernate,Tomcat, and JBoss Cache 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 iscertified to work on many leading enterprise hardware and software products.

All of which means you can develop your new application taking advantage of Java EE 5.0 technologiesimmediately and with the confidence of knowing it will remain forward-compatible with future versionsof the JBoss Platform.

2. NEW FEATURES IN JBOSS ENTERPRISE APPLICATION PLATFORM4.2

2.1. Database Certifications

JBoss Enterprise Application Platform 5.0.1 is now certified for the Oracle 11g R2 and Oracle 11g R2RAC databases when used with Oracle JDBC Driver version 11.2.0.1.0.

It is also certified for Sybase ASE 15.0.3 when used with JConnect driver version 6.0.5.

2.2. IPv6 Certification

JBoss Enterprise Application Platform 4.2.0 CP09 and onward can be used with IPv6 addresses.However, please be aware of the known issues associated with using IPv6 addresses listed inSection 6, “ Known Issues with this release ” .

2.3. JDK 1.6 Certification

JBoss Enterprise Application Platform 4.2.0 CP09 and onward is certified for use with Sun JDK 1.6,IBM JDK 1.6 and OpenJDK 1.6. For a complete matrix of operating system/JDK 1.6 combinationscertified and installation instructions, please refer to the JDK 1.6 Compatibility Guide.

2.4. Component Versions

Release Notes CP09

2

This section details the versions of the components which create the Enterprise Application Platform4.2 that can be found in this Cumulative Patch release.

JBoss Application Server 4.2.z

JBoss Microcontainer 1.0.2

Hibernate Core 3.2.4.SP1_CP09

Hibernate Annotations 3.3.1.GA_CP02

Hibernate Entity Manager 3.3.2.GA_CP01

Hibernate Validator 3.0.0.GA

Apache Xalan 2.7.0.patch02

JacORB 2.3.0jboss.patch7

JAF 1.1.0

JavaServer Faces 1.2_13

JBoss AOP 1.5.5.GA_CP05

JBoss Cache 1.4.1_SP14

JBoss JAXR 1.2.0.SP2

JBoss Remoting 2.2.3.SP2

JBoss Serialization 1.0.3.GA

JBoss Transactions 4.2.3.SP5_CP07

JBoss XB 1.0.0.SP3

JBoss Web 2.0.0.GA_CP12

JBoss Web Services 1.2.1.GA_CP06

JGroups 2.4.7.GA

Seam 1.2.1.GA

NOTE

The Enterprise Application Platform Server has been redefined for the enterprisemarket to a level where direct association to a community release can no longer bedrawn.

3. INSTALLATION AND MIGRATION NOTES

This section contains information related to installing or upgrading to JBoss Enterprise ApplicationPlatform version 4.2, including hardware and platform requirements and prerequisites.

3. INSTALLATION AND MIGRATION NOTES

3

3.1. Installation Notes

You must have adequate disk space to install JDK and JBoss Enterprise Application Platform whilealso allowing enough space for your applications. You must have a working installation of JDK 1.5. Forthe latest information on supported Operating System / JVM combinations, supported Databaseplatforms and current information on the revision level of included components, please refer tohttp://www.jboss.com/products/platforms/application/testedconfigurations. Refer to the installationguide available online from http://www.redhat.com/docs/en-US/JBoss_Enterprise_Application_Platform/ for detailed instructions to install and verify JBossEnterprise Application Platform.

3.2. Upgrading from JBoss Enterprise Application Platform 4.2.0.CP08

Using CSP/JON

Installing a Cumulative Patch

1. Use Browse Resources to navigate to the resource you wish to patch.

2. Click on the Software tab. All patches applicable to your resource and all patches that havebeen previously installed by JON on this resource will be displayed.

3. An Install link will be listed beside all patches that can be installed by JON. Any patcheswithout this link must be installed manually. Any patch that appears beside a Manually Uninstall link must be uninstalled manually before the new patch can be installed.

For more information about installing a patch with CSP/JON, see the JON documentation.

4. PRODUCT SUPPORT AND LICENSE WEBSITE LINKS

Support Processes

http://www.redhat.com/support/process/

Production Support Scope of Coverage

http://www.redhat.com/support/policy/soc/production

Production Support Service Level Agreement

http://www.redhat.com/support/policy/sla/production/

Developer Support Scope of Coverage

http://www.redhat.com/support/policy/soc/developer/

Developer Support Service Level Agreement

http://www.redhat.com/support/policy/sla/developer/

Product Update and Support Policy by Product

http://www.redhat.com/security/updates/jboss_notes/

JBoss End User License Agreement

http://www.redhat.com/licenses/jboss_eula.html

Release Notes CP09

4

4.1. Documentation

Refer to the index.html file in the documentation directory for a list of included documentation.

In the zip distribution, documentation for the Platform and its individual components is distributed in aseparate zip file, jboss-eap-docs-<version>.zip.

On a Linux system, the documentation is found in two rpms that will need to be installed manually.These rpms are jboss-seam-docs-<version>.noarch.rpm, and rh-eap-docs-<version>.noarch.rpm. For help with installing rpm packages on Red Hat Enterprise Linux, pleaserefer to the Red Hat Knowledge base article located athttp://kbase.redhat.com/faq/FAQ_35_198.shtm

Installation Guide explains how to install and verify the installation of JBoss EnterpriseApplication Platform using different installation modes.

Getting Started details the directory structure of the platform and a quick tour of theApplication Server and different configuration sets and services. Using a simple webapplication it illustrates the use of JSF-EJB3 components and how to use Seam to integratethe JSF and EJB3 components.

Server Configuration Guide explains all administrative and configuration functions indetail.

Updated versions of the documentation with errata and additional information, example applicationcode, as well as the most recent version of the release notes may be accessed via the web fromhttp://www.redhat.com/docs/en-US/JBoss_Enterprise_Application_Platform/.

4.2. JSR-181 support

JSR-181 related functionality is not supported in this version of the JBoss Enterprise ApplicationPlatform. This functionality is supported in version 4.3.

5. ISSUES FIXED IN THIS RELEASE

Following is a list of issues fixed in this release:

Security

JBPAPP-3952: A security issue in the JMX Console configuration has been identified thatallows an attacker to bypass security authentication.

The JMX Console configuration only specified an authentication requirement for requests thatused the GET and POST HTTP "verbs". An attacker could create a HTTP request that did notspecify GET or POST and it would be executed by the default GET handler withoutauthentication. This release contains a JMX Console with an updated configuration that nolonger specifies the HTTP verbs. This means that the authentication requirement is applied toall requests.

For additional information on this vulnerability refer to: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-0738

All users are advised to upgrade to this release to resolve this issue.

If an immediate upgrade is not possible or the server deployment has been customized thenthe fix can be applied by editing the deployment descriptor (WEB-INF/web.xml) of the JMX

5. ISSUES FIXED IN THIS RELEASE

5

Console WAR. Details of how to apply this fix can be found athttp://kbase.redhat.com/faq/docs/DOC-30741. Contact Red Hat JBoss Support for advicebefore making these changes.

Red Hat would like to thank Stefano di Paola and Giorgio Fedon of Minded Security forresponsibly reporting the CVE-2010-0738 issue.

JBPAPP-3979: Unauthenticated access to the JBoss Application Server Web Console (/web-console) is blocked by default. However, it was found that this block was incomplete, and onlyblocked GET and POST HTTP verbs. A remote attacker could use this flaw to gain access tosensitive information. This release contains a Web Console with an updated configuration thatnow blocks all unauthenticated access to it by default. (See CVE-2010-1428 for furtherinformation.)

JBPAPP-3633: JBPAPP-544 fixed a security issue by removing the mapping for /statusservlet, leaving only the protected /web-console/status available. However, JBPAPP-1146re-added the unsecured /status mapping. The /status servlet is now secured with the JMXconsole JAAS security domain.

JBPAPP-2872: Twiddle logged all command line arguments, including the JMX password, to twiddle.log, which has public read permissions, and is created in the current workingdirectory. The password is now masked in the log, removing the risk to security. (This issue isrelated to CVE-2009-3554.)

JBPAPP-2500: When a stateless session bean annotated with @RunAs and @RunAsPrincipal invoked another stateless session bean, the second bean's EJBContext.getCallerPrincipal method returned the unauthenticated identity insteadof the identity set with @RunAsPrincipal on the first bean. The correct identity is nowreturned.

JBPAPP-2312: A new PrincipalSessionAttributeFilter has been created to includethe principal session as an attribute of the HTTP Session. This attribute is checked uponsession expiry and the authenticated cache will be flushed if found. In order to use this filter,uncomment the filter in JBoss Web's web.xml.

JBoss Application Server

JBPAPP-4018: HSQLDB has been upgraded to version 1.8.0.8.patch03 to enable correcthandling for IPv6 addresses.

JBPAPP-4017: Apache HTTP Client has been updated with a patch to enable corrent handlingfor IPv6 addresses.

JBPAPP-3925: When an EJBTimer is persisted and read back after a server restart, its timerId value is reset. This means that any TimerHandles that are persisted cannot reliablyreturn the timer. This led to javax.ejb.NoSuchObjectLocalException: Timer notavailable.

The fix for this issue requires that the UUIDTimerIdGenerator is set as the TimerIdGeneratorClassName in the $JBOSS_HOME/server/$PROFILE/deploy/ejb-deployer.xml file, like so:

<mbean code="org.jboss.ejb.txtimer.EJBTimerServiceImpl"name="jboss.ejb:service=EJBTimerService"><attribute name="RetryPolicy"> jboss.ejb:service=EJBTimerService,retryPolicy=fixedDelay

Release Notes CP09

6

The system property jboss.ejb.txtimer.preserveTimerId must also be set upon serverstartup:

IMPORTANT

timerIds are not preserved by default. This behavior is kept because BigIntegerTimerIdGenerator, which was previously configured in $JBOSS_HOME/server/$PROFILE/deploy/ejb-deployer.xml, would notbe updated when upgrading with JON, because JON does not update the XMLfile. When BigIntegerTimerIdGenerator is used with jboss.ejb.txtimer.preserveTimerId, timerId collisions are likely.

JBPAPP-3336: When unmarshalling a replicated HTTP session with JDK 6, a ClassNotFoundException is raised when MarshalledValueInputStream#resolveClass() attempts to resolve the array class withWebappClassLoader#loadClass(name). Since loadClass() cannot handle array syntax,it delegated to the parent class, which could not locate the class, and raised the exception. The loadClass() method has been replaced with Class.forName(name, false, WebappClassLoader), which understands array syntax, so the error no longer occurs.

JBPAPP-2905: The ScanPeriod in the production configuration is set to sixty seconds. Ifthe deployment scanner thread was sleeping when shutdown was initiated, shutdown waitedfor the length of the deployment scanner's sleep time. The deployment scanner thread is nowstopped when shutdown is initiated, and the wait no longer occurs.

JBPAPP-2764: LoadMgr3 logged a failure to load a class as an error, but in certain situationsthis should be regarded as correct. The ERROR message has been downgraded to a WARNING.

JBPAPP-2578: Configuration information for the JBoss Messaging service in sample-bindings.xml has been updated to make use of new settings.

Clustering

JBPAPP-2854: When multiple nodes were started concurrently, an address mismatch wouldoccur between cluster members and message senders. This caused inconsistent internal statein NAKACK, which would log errors similar to the following:

</attribute><attribute name="PersistencePolicy"> jboss.ejb:service=EJBTimerService,persistencePolicy=database</attribute><attribute name="TimerIdGeneratorClassName"> org.jboss.ejb.txtimer.UUIDTimerIdGenerator</attribute>

$JBOSS_HOME/bin/run.sh -c default -Djboss.ejb.txtimer.preserveTimerId

WARN [org.jgroups.protocols.pbcast.NAKACK] (IncomingPacketHandler (channel=Tomcat-DefaultPartition):) node2:1234] discarded message from non-member node3:1234, my view is [node1:1234|2] [node1:1234, node2:1234, node3:1234]

5. ISSUES FIXED IN THIS RELEASE

7

This mismatch has been corrected and the errors no longer present.

JBPAPP-2970: When optimistic locking was enabled, remove(String fqn) and remove(String fgn,Object key) did not act on other cluster members if the nodes didnot exist in the local cache. This could occur when using invalidation or when a node had beenevicted. The remove method now works cluster-wide with optimistic locking, even if the nodedoes not exist in the local cache.

JBPAPP-2928: With buddy replication, when multiple concurrent requests are made with thesame session ID after failover, the requests may abort with an org.jboss.cache.lock.UpgradeException while attempting to migrate the cache datato the local node. This no longer occurs, and multiple concurrent web requests made afterfailover with buddy replication enabled now works correctly.

JBPAPP-2013: To work around the incorrect processing of IPv6 addresses, the bind addresswas enclosed in square brackets:

However, this was not valid JGroups syntax for hostname and port combinations, so JGroupswas unable to parse IPv6 literals in TCPPING protocol configuration. The fix for JBPAPP-3018resolves this issue.

EJB3

JBPAPP-2782: When EJB3 entities were used with optimistic caching, the newerThan methodwould incorrectly return true for A.newerThan ( A ). This caused a DataVersioningException when attempting to remove the entry from the cache. The EJB3entity cache service is now configured to use pessimistic caching to avoid this issue.

JBPAPP-2290: If tx.registerSynchronization fails, then the bean is not attached to thetransaction and thus should not take part in any transaction semantics.

JBPAPP-2248: EJB3 clients did not reuse existing socket connections on subsequentinvocations.

JBoss Web

JBPAPP-3343: org.apache.catalina.loader.WebappClassLoader makes a recordeach time a non-existent resource is requested, and stores them in notFoundResources. Nolimit was placed on this cache method, so large amounts of memory could be expended storingnon-existent resources. A limit of 1000 has been placed on this cache to prevent this problem.

JBPAPP-2039: The fix for JBPAPP-1992 means that Version 1 cookies are used in JBoss Webinstead of Version 0. This older version is linked to a security issue, described in CVE-2007-5333. To return to the previous behavior despite this, add a conf/catalina.propertiesfile and set the following property in it:

JBoss Seam

ERROR [org.jgroups.protocols.pbcast.NAKACK] (Timer-3:) sender node3:1234 not found in received_msgs

./run.sh -b [$IPv6_ADDRESS] -c all

org.apache.tomcat.util.http.ServerCookie.VERSION_SWITCH=false

Release Notes CP09

8

JBPAPP-4093: The password could not be changed in the Seam Booking example because thetransaction was aborted due to invalid validation. This occurred because the default passwordhad a shorter length than the minimum valid length specified by the validation rule. Thisminimum valid length has been lowered to correspond with the default password of the demouser.

JBPAPP-3176: The org.jboss.seam.test.RemotingTest testMapWrapper methodfailed because it attempted to compare marshalled XML output against a hard-coded stingvalue. This has been corrected and the method now compares the content of XML elements.

JBPAPP-3138: Several BlogTest unit test methods ( test.BlogTest.testEntry() and test.BlogTest.testLatest()) failed on all platforms. In addition, test.BlogTest.testSearch() failed on certain platforms. (For further information, seethe console output in the JIRA.) The classes that were causing the problems have beenmodified to correctly handle Blog unit test cases.

JBPAPP-2967: A shared value binding returned a null value when under load, which caused a javax.el.PropertyNotFoundException. The value binding is no longer shared and theissue no longer presents.

JBPAPP-1832: Stateful session beans were not being removed from the session when atemporary conversation ended. Attempts to use the bean in subsequent conversations wouldthrow a NoSuchEJBException when the bean timed out. A line has been added to ServerConversationContext.java to ensure that stateful session beans are removed atthe end of a temporary conversation, and the exception no longer presents.

JBoss Hibernate

JBPAPP-3487: AbstractCollectionPersister used the key column aliases generated by Column.getAlias(Dialect) rather than Column.getAlias(Dialect,Table), soHibernate generates the wrong alias in the table-pre-class inheritance strategy. This incorrectalias then caused an exception when Hibernate retrieved data from the ResultSet. AbstractCollectionPersister now uses the key column aliases generated by Column.getAlias(Dialect,Table), so the table-pre-class inheritance strategy mappingis correct.

JBPAPP-3384: Hibernate collection mapping encountered exceptions if @MapKey was usedwithout an explicit @Type annotation. Without an explicit @Type annotation, Hibernateassumed that the property key type was Serializable and attempted to deserialize anobject stream from the database column value. With this update, if @MapKey is not given anexplicit @Type, Hibernate uses the original property type instead of the serializable type.

JBPAPP-3371: The round function is meant to return values of the same type as the firstargument provided (integer, double, or decimal). Previously, it rounded all values regardless oftype. All values should now return as the correct type.

JBPAPP-3173: Using Javassist as the bytecode provider to instrument your domain modelcaused errors if an entity extended a parent class with an abstract method. Hibernate codeused return instead of continue in a while statement, which caused the statement to skipall other attributes that should have been used. This has been corrected.

JBPAPP-3098: When a filter with a collection type parameter was used, and the number ofparameters in that collection changed during the lifetime of the SessionFactory, the SQLwould not be updated to reflect the change in the number of parameters. This typicallyresulted in the following error:

5. ISSUES FIXED IN THIS RELEASE

9

java.sql.SQLException: Parameter index out of bounds.2 is not between valid values of 1 and 1

This occurred only with HQL, not Criteria, and has now been corrected.

JBPAPP-3089: A long IN list could result in stack overflow during parsing. A query elementlike where x in (:x) or a manually-constructed where x in (1,2,3,...) couldgenerate a stack overflow if the number of elements referenced by x exceeded a numberdependent on available stack space. For Java Virtual Machines, the limit is between 9000 and10000, assuming a relatively empty stack at the point of query execution.

The stack overflow occurred in org.hibernate.hql.ast.util.NodeTraverser becauseit used a recursive algorithm to walk a parse tree. A long IN list generated a very deep sub-tree, so a sufficiently long list caused the stack overflow when NodeTraverser's internalmethod visitDepthFirst calls itself too many times. This recursive algorithm has beenreplaced with an iterative tree-walking implementation to fix this issue.

JBPAPP-3068: Mapping an Enum as @Id on MySQL caused a SchemaExport exception witherror messages similar to the following:

This occurred because Hibernate bound the id property of an Enum type as a tinyBlob (onMySQL) without a length property. The fix for this issue ensures that bindId() in AnnotationBinder calls SimpleValueBinder.setType() to set the column type to string resp. int., preventing the issue.

JBPAPP-3060: @JoinColumn mapping assumed that the column definition was void even if itwas also defined by @ManyToOne. Ejb3JoinColumn.java has been updated so that definedcolumn properties like length, precision and scale are observed in @JoinColumnmapping.

JBPAPP-3052: When org.hibernate.id.enhanced.SequenceStyleGeneratorgenerates identifiers, the select script generated is as follows:

However, in PostgreSQL, as is required between next_val and id_val. See http://sql-info.de/en/postgresql/postgres-gotchas.html#1_1 for further details.

JBPAPP-3038: Hibernate Core has been upgraded to version 3.2.4.SP1.CP09. HibernateAnnotations has been upgraded to version 3.3.1.GA.CP02. Hibernate Entity Manager has beenupgraded to version 3.3.2.GA.CP01.

JBPAPP-2900: MySQL uses the TEMPORARY keyword to bypass implicit transaction commits.Previously, Hibernate used <CREATE TEMPORARY TABLE> with <DROP TABLE>. Omitting theTEMPORARY keyword caused an implicit commit, and immediate failure within an XATransaction. <DROP TEMPORARY TABLE> is now supported and this issue no longer presents.

Unsuccessful: create table PlanetCheatSheet (planet tinyblobnot null,mass double precision not null, numberOfInhabitantsbigint not null, radius double precision not null, primarykey (planet)) ENGINE=InnoDBBLOB/TEXT column 'planet' used in key specification withouta key length

select next_val id_val from hibernate_sequence for update

Release Notes CP09

10

JBPAPP-2082: Associations marked as mappedBy must not define database mappings like@JoinTable or @JoinColumn. This fix adds an AnnotationsException, which is thrown whenHibernate receives this invalid mapping.

JBPAPP-2049: the HQL translator attempted to render IS NULL and IS NOT NULL checksagainst a component by using tuple syntax. Exploded syntax is now used instead, to make SQLmore readable.

JBPAPP-1998: EntityNotFoundException is incorrectly thrown upon an optimistic lockingfailure when one EntityManager tries to delete an entity that has been updated by adifferent EntityManager and hibernate.jdbc.batch_versioned_data is set to false(the default value). OptimisticLockException, the correct exception for this situation, isnow thrown instead.

JBPAPP-1547: By default, Sybase ASE 15 string comparisons are case-insensitive. The org.hibernate.dialect.SybaseASE15Dialect.areStringComparisonsCaseInsensitive() method now returns true.

If the Sybase database is configured to perform case-sensitive operations, this setting will beincorrect. However, since Hibernate only uses this method for unit tests, this change has noeffect on Hibernate's internal processing.

JBPAPP-906: A bug exists within the Hibernate Core whereby the unstable synchronizedJava6 ClassLoader.loadClass method is utilized creating a deserialized String. Thiscauses a problem where if multiple threads are loading database rows containing arrays ofstrings, one thread is forced to undertake all the procedure while the other threads are leftdormant. The fix for this issue was to change SerializationHelper$CustomObjectInputStreaml to use the form Class.forName(String,Boolean,ClassLoader), and to alter the way thatdeserialization occurs so that the best effort classloader is used wherever possible,particularly the classloader or the returnedClass for various org.hibernate.type.Typeimplementations.

Remoting

JBPAPP-3707: When org.jboss.remoting.marshal.MarshallerLoaderHandlerreceives a request for a class, it returns an instance of org.jboss.remoting.loading.ClassBytes. However, if MarshallerLoaderHandlercannot locate the requested class, the returned ClassBytes object has a null value for theclass byte array. Because org.jboss.remoting.loading.ClassByteClassLoader didnot check for the possibility of a null byte array, a NullPointerException occurred. ClassByteClassLoader now checks for null values and this issue no longer occurs.

6. KNOWN ISSUES WITH THIS RELEASE

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

General Known Issues

JBPAPP-4172: Attempting to install the IBM JDK 1.5 on 64-bit Red Hat Enterprise Linux 5results in broken links to Java binaries. This prevents the application server from starting. Theworkaround for this issue is to use the Sun JDK 1.6 instead.

6. KNOWN ISSUES WITH THIS RELEASE

11

JBPAPP-4140: Xalan iterators do not update the cache correctly when they reach the endnode. This results in incorrect transform output. More information about this bug is availablefrom XALANJ-2204.

JBPAPP-4101: Sun JDK 6 does not work with JBoss Enterprise Application Platform bydefault. Refer to the JDK6 Compatibility Guide for JBoss Enterprise Application Platform 4.2.0CP09 for information about using JDK 6. This guide is not included in the documentationbundle.

JBPAPP-4085: When probe.sh terminates, it produces a list of terms that match a givenstring and a summary line that reflects the number of responses that matched the -match <string> parameter, for example:

Total responses=1, 1 matches, 3 non-matches

This summary line does not appear because a thread set up to close the multicast socket upontimeout causes the multicast socket to generate an exception and return before the summaryline can be printed.

JBPAPP-3365: UnifiedClassLoader3.cacheLoadedResource() is called from twopaths, one of which did not check for a null value. When a non-existent resource was loaded, acache entry was created with a null value, which resulted in a memory leak. A null value checkhas been added and the memory leak no longer occurs.

JBPAPP-3145: The wsrunclient.sh scripts are missing a library and fail with a ClassNotFoundException. To work around this issue on Linux, execute the followingstatements before executing wsrunclient.sh:

To work around this issue on Windows, execute the following before executing wsrunclient.bat:

JBPAPP-3143: The wsprovide.sh and wsprovide.bat scripts fail when generating a WSDLfile from the examples. To work around this issue on Linux, execute the following statementsbefore running wsprovide.sh:

To work around this issue on Windows, execute the following statements before running wsprovide.bat:

export JBOSS_HOME=<path to your JBoss EAP installation>WSRUNCLIENT_CLASSPATH="$JBOSS_HOME/client/wsdl4j.jar"export WSRUNCLIENT_CLASSPATH

set JBOSS_HOME=<path to your JBoss EAP installation>set WSRUNCLIENT_CLASSPATH=%JBOSS_HOME%/client/wsdl4j.jar

export JBOSS_HOME=<path to your JBoss EAP installation>WSPROVIDE_CLASSPATH="$JBOSS_HOME/client/jaxb-xjc.jar"WSPROVIDE_CLASSPATH="$WSPROVIDE_CLASSPATH:$JBOSS_HOME/client/jboss-ejb3x.jar"WSPROVIDE_CLASSPATH="$WSPROVIDE_CLASSPATH:$JBOSS_HOME/client/wsdl4j.jar"export WSPROVIDE_CLASSPATH

set JBOSS_HOME=<path to your JBoss EAP installation>

Release Notes CP09

12

JBPAPP-3117: If an incorrect mcast_addr value is set, users are pointed to an outdated URLfor information about cross talking. If you experience problems with mcast_addr and crosstalking, the updated URL for further information ishttps://www.jboss.org/community/docs/DOC-9469.

JBPAPP-2306: The HP-UX init script, jboss_init_hpux.sh, does not let users define a bindaddress with the -b option.

JBPAPP-1774: The JBoss Enterprise Application Platform RPM cannot be installed with onlythe OpenJDK distribution.

JBPAPP-1286: Footnotes within documentation tables and lists do not appear within PDFs.This issue resides within FOP and currently no workaround exists. Where possible footnotesare not used in the circumstances mentioned, however in documents such as the ReleaseNotes the web address of a documented issue is automatically generated as a footnote andplaces a number beside that of the documented issue, referencing a footnote that does notappear.

EJB Known Issues

JBPAPP-3908: When ValidateDTD is set to true in EJB deployer, standardjboss.xmlvalidation fails because the properties for Message Driven Beans (such as those in JMSContainerInvoker) do not exist in jboss_4_2.dtd. To work around this issue, removethe reference to jboss_4_2.dtd in standardjboss.xml.

Hibernate Known Issues

JBPAPP-4175: When Hibernate executes a cacheable query using a ResultTransformer, itwill attempt to cache the results after applying the ResultTransformer. However, the datamay be modified so that Hibernate cannot read it. In this case, a ClassCastException willoccur when attempting to cache the results.

JBPAPP-4123: PostgreSQL fails to drop SchemaExport if constraint names change.

JBPAPP-4095: When scrolling a HQL query with join fetch on a collection, FetchingScrollableResultsImpl.last() does not move to the last result if the cursoris positioned after the last result. Instead, the cursor stays in position after the last result. Thiscan cause org.hibernate.exception.GenericJDBCException: could not perform sequential read of results.

JBPAPP-3946: LikeExpression does not handle the ignoreCase flag properly when ignoreCase is set to false. It builds the correct SQL property like ?, but does not use theflag inside getTypedValues. A lowercase value is always produced.

JBPAPP-3913: In Oracle 11g R2 (both RAC and standalone), a sequence may start at 2 insteadof 1. The root cause is still under analysis.

JBPAPP-3911: In Oracle 11g R2 (both RAC and standalone), a complex query with

set WSPROVIDE_CLASSPATH=%JBOSS_HOME%/client/jaxb-xjc.jarset WSPROVIDE_CLASSPATH=%WSPROVIDE_CLASSPATH%;%JBOSS_HOME%/client/jboss-ejb3x.jarset WSPROVIDE_CLASSPATH=%WSPROVIDE_CLASSPATH%;%JBOSS_HOME%/client/wsdl4j.jar

6. KNOWN ISSUES WITH THIS RELEASE

13

LockMode.UPGRADE (that is, "for update") may cause a "No more data to read from socket"error. The workaround for this issue is to avoid using LockMode.UPGRADE on such queries.The root cause analysis is still under investigation.

JBPAPP-3565: org.hibernate.cfg.OneToOneSecondPass metadata causes an org.hibernate.PropertyValueException at runtime. If JOINs exist but do not containthe property otherSideProperty, otherSideJoin will not be null and will retain old invaliddata.

JBPAPP-3223: Hibernate does not currently support tuple syntax in HQL or Criteria ondatabases which do not support tuple syntax. For example, if a database does not support tuplesyntax:

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 ondatabases that do not support tuple syntax.

JBPAPP-3105: The number of elements that can be included in a single IN expression islimited to a certain number (for Oracle, 1000). If an Array or Collection is passed into the INmethod, Oracle throws an error stating that the IN clause must contain at most 1000 items.This affects both HQL and Criteria API. To work around this issue, users should split largearrays and collections into sub-arrays or sub-collections. If 'in', use the form in(1,2,...,1000) or in(1001+); if 'not in', use the form not(1,2,...,1000) or in(1001+), as described in the JIRA.

JBPAPP-3075: If a database reserved keyword is used as a property name with a HibernateValidator 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. Theworkaround is to map the property name to something that is not a database reservedkeyword with the @Column annotation. The fix for this issue is expected in Hibernate 4.

JBPAPP-3069: The QueryByExampleTest.testJunctionNotExpressionQBE test fails inSybase because ansinull is set to off by default. This test builds a disjunction predicatesuch as ( OR^ (ex) (NOT ex) ). This should match everything in the database, butbecause ANSI SQL evaluates all comparisons involving NULL values as UNKNOWN, not allmatches are returned.

To work around this issue, append this string to the JDBC URL:

If this is not possible, an alternative is to execute the following Java code (or similar) aftergetting a Hibernate Session, s.

JBPAPP-3056: The Hibernate test org.hibernate.test.hql.ASTParserLoadingTest.java fails on DB2 with an SQLError because of invalid use of a parameter marker. This occurs because DB2 does not support

?SQLINITSTRING=set ansinull on

s.connection().createStatement().execute("set ansinull on");

Release Notes CP09

14

untyped parameters. To work around this issue, modify your queries so that the parametersare cast to an appropriate data type.

JBPAPP-2945: The Hibernate test org.hibernate.test.annotations.query.QueryAndSQLTest.java fails onPostgreSQL 8.3.7 with the following log messages:

Caused by: org.postgresql.util.PSQLException: Method org.postgresql.jdbc3.Jdbc3PreparedStatement.setQueryTimeout(int) is not yet implemented.

This occurs because PostgreSQL JDBC driver does not support the Statement.setQueryTimeout method.

JBPAPP-2839: Failing to re-inject the interceptors for instrumented entities causes NullPointerExceptions when entities are retrieved from a deserialized PersistenceContext.

JBPAPP-2440: When a cache provider cannot be found, a NoClassDefFoundError is thrownwith the message:

net/sf/ehcache/CacheException

When a connection provider cannot be found, a HibernateException is thrown with thefollowing message:

Could not instantiate connection provider: " + providerClass

If you experience these errors, we suggest checking the cache or connection providerconfiguration to ensure that the provider is included in the classpath.

JBPAPP-2316: Hibernate does not currently provide property types that enable applications toprocess data in a long string or binary column as a Java String. This feature is expected inJBoss Enterprise Application Platform 5.1.0.GA.

JBPAPP-2315: Hibernate does not currently provide property types that enable applicationsto process data in a java.sql.Types.LONGVARCHAR or java.sql.Types.CLOB column asa Java String. Processing of a java.sql.Types.LONGVARBINARY or java.sql.Types.BLOB as a Java byte[] is also unavailable. These features are expected inJBoss Enterprise Application Platform 5.1.0.GA.

JBPAPP-1895: The Hibernate tests JoinTest.java and QueryAndSQLTest.java fail whentesting 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 anappropriate data type, as described on the JIRA.

JBPAPP-1722: Sybase fails to insert a new entity if the entity overflows the column. However,it does not throw an exception, so Hibernate cannot tell that the insert has failed. To workaround this issue, your application must validate entity properties to ensure that the value willnot overflow the underlying column.

JBPAPP-1709: The version of ejb3-persistence.jar shipped with the current version ofJBoss Enterprise Application Platform 4.x is incorrect. Hibernate Entity Manager currentlyships ejb3-persistence.jar 1.0.0.GA, but it should use ejb3-persistence.jar 1.0.1.GA.

6. KNOWN ISSUES WITH THIS RELEASE

15

There are two changes between the 1.0.0.GA and 1.0.1.GA versions of the JAR:

The JPA specification defines the constant with a value that has a typo in the classname:

Because the JAR inluded in the JBoss Enterprise Application Platform does not includethis typo, it is not compliant with the JPA specification. Seehttp://opensource.atlassian.com/projects/hibernate/browse/EJB-321 for details.

The Javadoc for javax.persistence.Query.getSingleResult() states that EntityNotFoundException will be thrown if there is no result. It should say NoResultException.

JBPAPP-1613: Null values for columns mapped as Boolean in Sybase are persisted as 0 insteadof null. The current workaround for this issue is to map these values as type="org.hibernate.test.where.NumericTrueFalseType" instead of type="boolean".

JBPAPP-1555: Sybase uses image and text instead of Blob and Clob, so there is no supportfor Blob and Clob on Sybase. This feature is expected in JBoss Enterprise ApplicationPlatform 5.1.0.GA. Currently, user-defined types can be created to process Sybase text and image properties.

JBPAPP-1554: Sybase only allows only one entry (for example, column name or '*') in asubquery select list. The HQL function, elements(), fails when the collection elements have acomposite 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.

JBPAPP-1551: Embedded classes are not considered when batch insert statements areordered. There are two possible workarounds for this issue:

Leave ORDER_INSERTS at the default value ( FALSE) when embedded classes are used.

Explicitly call session.save() on child objects to enforce their SQL insertion orders.

JBPAPP-1546: When using Sybase, SchemaExport cannot be used to create storedprocedures while in chained transaction mode. The suggested workaround for this case is toadd the following code follwing the defining of the new stored procedure:

JBPAPP-1545: On Sybase, when a query has an ANSI join with three or more joins, and onejoin involves a union subclass, the query may fail with SybSQLException because a column isnot within the scope of the joined table expression. The current recommendation is to avoidusing join fetches that involve union subclasses.

javax.persistence.Persistence.PERSISTENCE_PROVIDER = "javax.persistence.spi.PeristenceProvider"

<database-object><create>sp_procxmode paramHandling, 'chained'</create><drop/></database-object>

Release Notes CP09

16

JBPAPP-1328: When attempting to perform a delete or update statement with a subselect, thegenerated SQL will refer to an unknown table alias and cause the query to fail.

Currently the workaround is to reverse the conditions in the where clause.

Incorrect:

Correct:

JBPAPP-1230: When a DetachedCriteria is used as a subquery, the generated SQLcontains a column alias in the subquery. On Sybase, a SybSQLException is thrown becauseSybase does not allow column aliases in subqueries. The workaround for this issue is to use anHQL query instead of a DetachedCriteria in a subquery.

JBPAPP-1229: On Sybase, the text current_timestamp is not being recognised as a methodmode by the translator. Only SQL function calls with parentheses are recognized as methodmodes. There is no workaround for this issue except to avoid relying upon functionreplacement for current_timestamp.

JBPAPP-1123: When @OrderBy is used on joined classes (using a join table), the generatedSQL is invalid on MySQL, PostgreSQL, Oracle, and MSSQL because the "order by" clausequalifies the columns using the actual table name. The "order by" clause should use the tablealias instead.

JBPAPP-1082: When a char property is used and it is not initialized, then Hibernate initializesit to 0 and persists a string containing the character \u0000. PostgreSQL throws anexception because it does not allow character \u0000 embedded in a string. An email threaddescribing this problem is available from:

http://markmail.org/message/jvzlzxw6ui2rcsmv#query:\u0000%20postgresql+page:1+mid:gpu34f4iwanbyjqh+state:results

There is currently no workaround for persisting \u0000 in a char column using PostgreSQL.

If the user intends to persist a NULL for an uninitialized char property instead of \u0000, then java.lang.Character should be used instead of the primitive char type. This avoids theexception when the property is initialized. Attempting to persist a java.lang.Characterproperty that is set to \u0000 still results in an exception.

JBPAPP-1075: SchemaExport fails on Oracle and Sybase when a redundant @Column( unique = true ) or @UniqueConstraint( columnNames = { ... } ) annotation isused for a column that is implicitly defined as unique by the declared model. The workaroundis to remove the redundant @Column annotation.

JBPAPP-1071: In some cases, when there are foreign key constraints defined on columns in aprimary key, SchemaExport incorrectly declares them as nullable when it generates CREATE TABLE statements. This fails on MSSQL, DB2, and Sybase because those databases requireprimary key columns to be non-nullable.

update Person set name = ?1 where id in (select c.id from Customer c) and name <> ?2

update Person set name = ?1 where name <> ?2 and id in (select c.id from Customer c)

6. KNOWN ISSUES WITH THIS RELEASE

17

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) incase of a @CollectionOfElements using a Map

Add nullable=false in @Column when inside a @CollectionId or inside @MapKey

JBPAPP-1063: Currently MySQL does not support millisecond and microsecondmeasurements when returning database values such as TIME and TIMESTAMP.

JBPAPP-909: Within the Hibernate component of the Enterprise Application Platform theHashMap and HashSet iteration order changed from past releases because of support for JDK1.6. However this has meant that the order of columns in union clauses and union-subclasseshas changed, generating a slight impact on the components performance.

IPv6 Known Issues

JBPAPP-3146: JBoss Web Services does not handle IPv6 addresses correctly and has anumber of compatibility issues.

JBPAPP-3096: JBoss Transactions does not support the use of IPv6 addresses.

JBPAPP-2005: IPv6 link-local addresses are not handled correctly when used as bind ormulticast addresses. The workaround for this issue is to use IPv6 global addresses instead.

Seam Known Issues

JBPAPP-4153: Applications that use ajax4jsf do not work with IBM JDK 1.6. The workaroundfor this issue is to use a different cache, such as OSCache, by setting the followingenvironment variable:

org.ajax4jsf.cache.CacheFactory=org.ajax4jsf.cache.OSCacheCacheFactory

Release Notes CP09

18

A. REVISION HISTORY

Revision 1.0-12.400 2013-10-31 Rüdiger LandmannRebuild with publican 4.0.0

Revision 1.0-12 2012-07-18 Anthony TownsRebuild for Publican 3.0

Revision 1.0-0 Mon Apr 26 2010 Laura BaileyFinal draft.

A. REVISION HISTORY

19