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 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6898593 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: https://jira.jboss.org/jira/browse/JBPAPP-2306.
The -e and -H arguments of the shutdown.sh 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/java.security when IBM JDK 6 is used. By default org.apache.harmony.security.fortress.DefaultPolicy is used and this should be policy.provider=sun.security.provider.PolicyFile. 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 java.security.debug 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 jmx-console-users.properties and jmx-console-roles.properties 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 http://download.oracle.com/docs/cd/E11882_01/server.112/e10595/tables002.htm#ADMIN13319 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 http://sourceforge.net/tracker/index.php?func=detail&aid=2796998&group_id=56933&atid=482368 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 session.save() 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 DB2JccConfiguration.properties, 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 JoinTest.java and QueryAndSQLTest.java 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 jbossws-cxf-installer.zip 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 jboss-eap-noauth-5.1.0.zip. 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 (https://svn.jboss.org/repos/jbossas/projects/jpa/trunk/deployers/src/main/java/org/jboss/jpa/resolvers/DynamicPersistenceUnitDependencyResolver.java) 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 https://svn.jboss.org/repos/jbossas/projects/jpa/trunk/deployers/src/main/java/org/jboss/jpa/resolvers/strategy/JBossSearchStrategy.java.

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.