Following is a list of issues fixed in this release:
Security Issues
- CVE-2009-3555: A vulnerability in the TLS protocol allowed an attacker to inject arbitrary requests into a TLS stream during renegotiation. The JBoss Web blocking IO (BIO) connector uses the JSSE implementation of TLS provided by the JVM; therefore, the BIO connector is vulnerable because the JSSE version used is vulnerable. Until a fix is available in JSSE, a new connector attribute,
allowUnsafeLegacyRenegotiationhas been added to the BIO connector to work around this issue. It should be set tofalse(the default) to protect against this vulnerability. Users should be aware that the impact of disabling renegotiation will vary with both application and client. In some circumstances disabling renegotiation may result in some clients being unable to access the application. - JBPAPP-3079: Session expiration did not trigger flushing of the JBoss Authentication Cache. The
PrincipalSessionAttributeFilterhas been created in order to place the principal as an attribute of the HTTP session. This attribute is checked when the session expires and, if found, triggers flushing of the authenticated cache. You must uncolmment this filter in Tomcat'sweb.xmlto use this feature. - JBPAPP-2873: Twiddle logged all command line arguments, including the JMX password, to
twiddle.log. This log file is publicly readable and is created in the current directory. The password argument is now masked in the log file.
JBoss Application Server
- JBPAPP-3430: Undefined behavior occurred on remote clients that used
NestedTransactionwhen nested transactions were disabled injbossjta-properties.xml. No nested transaction checking was performed, despite this being unsupported. This update adds aNotSupportedExceptionto be thrown when clients attempt to start a nested transaction. - JBPAPP-3328: Farming's
AddContentStreamActionattempted to close thisInputStreamas part of cleanup processing, even though it was not responsible for opening the stream. This caused failures inClusteredDeploymentRepoAddContentTestCase, which is responsible for the stream.AddContentStreamActionno longer attempts to close the input stream. - JBPAPP-3326:
ClusteredDeploymentRepositoryfailed when an exploded deployment was removed because the logic that iterated over the contents of the deployment removed items incorrectly. This meant that when an exploded deployment was placed in thefarmdirectory and later removed, aConcurrentModificationExceptionoccurred andClusteredDeploymentRepositoryfailed. Items are now removed correctly viaiterator.remove(). - JBPAPP-3234: Setting
HDScanner'sscanEnabledattribute totruevia XML would not disable scanning if set tofalse, and caused aNullPointerExceptionif set totrue. Both issues have been resolved. - JBPAPP-3213: Deploying EJB3 methods with zero parameters led to
NullPointerExceptions. This fix ensures that the deployment will not fail on these grounds. - JBPAPP-3180: Hibernate integration code for unsupported second-level caches and connection pools were not included in JBoss Enterprise Web Platform 5.0. The following JARs have been included in
common/libto provide integration for this module:hibernate-ehcache.jarhibernate-oscache.jarhibernate-swarmcache.jarhibernate-c3p0.jarhibernate-proxool.jar
- JBPAPP-3029: The
jboss_init_redhat.shscript is used to start and stop a server instance under a given user name. When using a non-loopback bind address, callingjboss_init_redhat.sh stopresulted in aCommunicationExceptionbecause of a missing hostname parameter for the remote server the script attempts to contact. - JBPAPP-2866: The JGroups protocol stack included an incorrect diagnostic address,
224.0.0.75. The address has been corrected to224.0.75.75. - JBPAPP-2818: The
main/src/bin/run.shdid not allow users to override$JBOSS_HOME/bin/run.confwith a profile-specific$JBOSS_HOME/server/$PROFILE/run.conf. This update allows the use of a customrun.conf, if specified.
JBoss Web
- JBPAPP-3220: When cookies were disabled for the current context, a session cookie from the parent context overwrote the session ID encoded in a URL. The fix for this issue specifies that when cookies are disabled for the current context, the parent context's session cookie should not be sought, and prevents the session ID in the URL from being overwritten.
- JBPAPP-2929: With buddy replication, when multiple concurrent requests are made with the same session ID after failover, the requests may abort with an
org.jboss.cache.lock.UpgradeExceptionwhile attempting to migrate the cache data to the local node. This no longer occurs, and multiple concurrent web requests made after failover with buddy replication enabled now works correctly.
JBoss Seam
- JBPAPP-3954: When a Seam
ManagedDrivenBeancomponent calls a stateless session bean component in a Seam-managed persistence context, anIllegalStateException("No event context active") may occur. The component now checks ifContextEventis active. - JBPAPP-3541: Seam could not be compiled from source because its
root.pom.xmlreferenced an incorrect version ofjavax.transaction:jta:jar. The JAR referenced has been corrected to the correct versionjavax.transaction:jta 1.1. - JBPAPP-3380:
jboss-seam-resteasy.jarwas not included in the Seam distribution in JBoss Enterprise Web Platform 5.0. This JAR, and relevant documentation, have been added. - JBPAPP-3334: The
basevariable inorg.jboss.seam.bpm.JbpmELResolverwas passed intoresolveVariableinstead of thepropertyvariable. This meant that the method returned null where it should have returned the task instance.propertyis now passed correctly. - JBPAPP-3292:
com.sun.faces.config.ConfigureListenerwas missing fromweb.xml. This meant that JavaServer Faces was not initialized when Seam bootstrapped its application scope components, so the JavaServer Faces application context was not available. This class has been added toweb.xmland JavaServer Faces now initializes correctly. - JBPAPP-3048: The Seam booking example and its derivatives contained outdated page footers. These have been updated for Seam 2.2.
- JBPAPP-3001: Bash script
seam/seam.shhas executable permission only on some Linux systems. This is caused by a different zip util implementation included in the distribution. This has been fixed on Fedora 12 and Red Hat Enterprise Linux 4 and executable permissions are now assigned toseam/seam.shcorrectly. The fix is not available for the zip util used on other operating systems such as Ubuntu. - JBPAPP-2733: When the Seam examples were tested with the TestNG plugin in JBDS, a java.lang.AssertionError was thrown. To avoid this error it is important to test the examples according to the following instructions:
- From the example's home directory (e.g.
bookingfor the booking example), runant test. - In Eclipse, click on
File>New>Project.... - Select
Java Project from Existing Ant Buildfilefrom the New Project Wizard, and clickNext. - Select the example's
build.xmlfile as the base for the new Java project. - Select
Testing SuiteorTesting Class. - From the
Run Asmenu, chooseTestNG Test. You can cancel the processing of the test run at any time. - Go to
Run>Run configurationsand edit the created TestNG runner. - If JDK 1.6 is used as runtime, add the following JVM argument on the
Argumentstab:-Dsun.lang.ClassLoader.allowArraySyntax=true
- Go to the
Classpathtab and remove allUserentries. - Add the JARs and folders specified by http://seamframework.org/Community/GettingStartedDevelopingTheSeamFramework#H-RunningIntegrationTestsFromTheTestNGEclipsePlugin.
JBoss Hibernate
- JBPAPP-3384: Hibernate collection mapping encountered exceptions if
@MapKeywas used without an explicit@Typeannotation. Without an explicit@Typeannotation, Hibernate assumed that the property key type wasSerializableand attempted to deserialize an object stream from the database column value. With this update, if@MapKeyis not given an explicit@Type, Hibernate uses the original property type instead of the serializable type. - JBPAPP-3371: The
roundfunction is meant to return values of the same type as the first argument provided (integer, double, or decimal). Previously, it rounded all values regardless of type. All values should now return as the correct type. - JBPAPP-3191: The
hibernate-ehcache.jarwas missing from JBoss Enterprise Web Platform 5.0. This meant that applications that used ehcache as the Hibernate second-level cache provider failed with aNoClassFoundException. A signed version ofhibernate-ehcache.jaris available from CSP: https://support.redhat.com/jbossnetwork/restricted/softwareDetail.html?softwareId=1037. This JAR should be placed into the following directories:$JBOSS_HOME/server/all/lib$JBOSS_HOME/server/production/lib$JBOSS_HOME/server/web/lib
- JBPAPP-3173: Using Javassist as the bytecode provider to instrument your domain model caused errors if an entity extended a parent class with an abstract method. Hibernate code used
returninstead ofcontinuein awhilestatement, which caused the statement to skip all other attributes that should have been used. This has been corrected. - JBPAPP-3115: The Hibernate Javadoc referenced the wrong version of the JDK objects. These references have been updated to http://java.sun.com/j2se/1.5.0/docs/api/.
- JBPAPP-3098: When a filter with a collection type parameter was used, and the number of parameters in that collection changed during the lifetime of the
SessionFactory, the SQL would not be updated to reflect the change in the number of parameters. This typically resulted in the following error: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 element like
where x in (:x)or a manually-constructedwhere x in (1,2,3,...)could generate a stack overflow if the number of elements referenced byxexceeded a number dependent on available stack space. For Java Virtual Machines, the limit is between 9000 and 10000, assuming a relatively empty stack at the point of query execution.The stack overflow occurred inorg.hibernate.hql.ast.util.NodeTraverserbecause it 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 whenNodeTraverser's internal methodvisitDepthFirstcalls itself too many times. This recursive algorithm has been replaced with an iterative tree-walking implementation to fix this issue. - JBPAPP-2957: The
evictAll()method inEntityRegionAccessStrategyandCollectionRegionAccessStrategyshould remove objects from the cache immediately, without regard for transaction isolation. The Hibernate/JBoss Cache integration did not handle this correctly, as the JBoss CacheremoveNodecalls it made did not deal with transactional issues. This usually results in aIllegalStateExceptionor a JBoss CacheCacheExceptionwhen a transaction that had made a bulk update was committed, or when using the HibernateSessionFactoryevict methods.To fix this issue, any ongoing transaction inevictAll()will now be suspended before invoking JBoss Cache'sremoveNode. To cater for transactional issues, state is now stored in the integration layer's Region to track where eviction has occurred but may not yet be reflected in JBoss Cache. JBoss Cache is used as a notification bus to propagate the eviction to other nodes. Eviction occurs locally, and fails immediately where lock conflicts occur. State is also checked in theget()andputFromLoad()methods. - JBPAPP-2922: Hibernate warns that the cglib BytecodeProvider impl is considered deprecated and is not recommended for use. cglib is not deprecated, so this warning can be safely ignored.
- JBPAPP-2900: MySQL uses the
TEMPORARYkeyword to bypass implicit transaction commits. Previously, Hibernate used<CREATE TEMPORARY TABLE>with<DROP TABLE>. Omitting theTEMPORARYkeyword caused an implicit commit, and immediate failure within an XA Transaction.<DROP TEMPORARY TABLE>is now supported and this issue no longer presents. - JBPAPP-2892: When Enterprise JavaBean 3.0 entities were used with optimistic caching,
org.jboss.ejb3.entity.OptimisticJBCCache.DataVersionAdapter.newerThanincorrectly returnedtrueforA.newerThan ( A ). This caused aDataVersioningExceptionwhen JBoss Cache attempted to remove the entry. The method has been corrected so that it returnsfalse. Note that the recommended approach is to use Multiversion Concurrency Control (mvcc-entity) instead of optimistic caching. - JBPAPP-2858: Native queries were automatically paginated in
getSingleResult(), which causedgetSingleResult()to fail for some databases and queries. This behaviour has been changed so that Hibernate no longer alterssetMaxResultfor native queries ingetSingleResult(). - JBPAPP-2277: Hibernate uses
ClassLoader.loadClass()was used inSerializationHelper$CustomObjectInputStream, but is no longer supported by default as of JDK 6 (see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6500212 for further information). Attempting to load an array using this method resulted in aClassNotFoundException.SerializationHelper$CustomObjectInputStreamnow usesClass.forName(className,false,myClassLoader)to resolve classes. - JBPAPP-2082: Associations marked as mappedBy must not define database mappings like @JoinTable or @JoinColumn. This fix adds an
AnnotationsException, which is thrown when Hibernate receives this invalid mapping. - JBPAPP-1998:
EntityNotFoundExceptionis incorrectly thrown upon an optimistic locking failure when oneEntityManagertries to delete an entity that has been updated by a differentEntityManagerandhibernate.jdbc.batch_versioned_datais set tofalse(the default value).OptimisticLockExceptionis now thrown instead. - JBPAPP-1547:
org.hibernate.dialect.SybaseASE15Dialect.areStringComparisonsCaseInsensitive()now returnstrue. This was done because, by default, Sybase ASE 15 string comparisons are case-insensitive. Since Sybase can be configured to be either case-sensitive or case-insensitive, if the Sybase database is configured for case-sensitive comparisions, the previous setting (false) was incorrect.
RESTEasy
- JBPAPP-2992: the readme file for the Spring MVC example located at
doc/examples/resteasy-examples/resteasy-springMVC/README.txtcontained an invalid URL. The URL has been corrected. - JBPAPP-2991: The readme file for the API Clients example located in
doc/examples/resteasy-examples/api-clientscontained an invalid command for the Twitter example startup. The command has been corrected and two superfluous Eclipse project files have been removed.
Documentation
- JBPAPP-3380: RESTEasy integration information has been added to the Seam Reference Guide.
- JBPAPP-3863: The Administration and Configuration Guide indicated that the JDBC
blocking-timeout-millisproperty's default value is 5000 milliseconds. This incorrect value has been replaced with the true default value, 30000 milliseconds. - JBPAPP-2948: The
deploy/jmx-remoting.sarservice instantiates a JSR-160 adapter for standardized remote access to the JBoss MBeanServer. This service is used with tools such as the JConsole. At present, this service does not support secure access. In production environments where the server binds to a specific address other thanlocalhostthis presents a potential security risk, so the adapter has been moved from thedeploydirectory intodocs/examples/jmx. We do not recommend enabling it for production usage. If during development you wish to re-enable the adapter, copy it back to thedeploydirectory.The adapter has been moved to/docs/examples. If you wish to re-enable it, move it back to thedeploydirectory. - JBPAPP-2802: The JBoss Cache documentation did not indicate that Non-Blocking State Transfer was unsupported. Unsupported information about Non-Blocking State Transfer has now been removed from the JBoss Cache documentation associated with JBoss Enterprise Web Platform.