Copyright © 2008 Red Hat, Inc
1801 Varsity Drive
Raleigh, NC 27606-2072 USA
Phone: +1 919 754 3700
Phone: 888 733 4281
Fax: +1 919 754 3701
PO Box 13588 Research Triangle Park, NC 27709 USA
JAVA_OPTS settings in the file JBOSS_DIST/jboss-as/server/production/run.conf with these recommended values:
-Xms1303m -Xmx1303m -XX:PermSize=256m -XX:MaxPermSize=256m
JBOSS_DIST/doc/seam/Seam_Reference_Guide.pdf) for important information regarding the deployment of Seam examples and detailed information on developing applications using Seam.
jboss-eap-docs-<version>.zip.
jboss-seam-docs-<version>.noarch.rpm, and rh-eap-docs-<version>.noarch.rpm. For help with installing rpm packages on Red Hat Enterprise Linux, please refer to the Red Hat Knowledge base article located at http://kbase.redhat.com/faq/FAQ_35_198.shtm
Installation Guide explains how to install and verify the installation of JBoss Enterprise Application Platform using different installation modes.
Getting Started details the directory structure of the platform and a quick tour of the Application Server and different configuration sets and services. Using a simple web application it illustrates the use of JSF-EJB3 components and how to use Seam to integrate the JSF and EJB3 components.
Server Configuration Guide explains all administrative and configuration functions in detail.
MessagingXAResource.isSameRM(XAResource) method whereby the method delegates checking to the ResourceManager serverID. This instigates the case where the xasess2.start(xid, TMJOIN) method is called and the MessagingXAResource.isSameRM(XAResource) method returns true but the resource manager does not hold the transaction state required to perform a TMJOIN. Further to this when a session is closed the SessionAspect.handleClose() method is called, yet the tx was removed from the transaction manager meaning it is no longer in the conn1 resource manager.
MessagingXAResource.isSameRM method and ResourceManager have the same serverID and the same map of transactions, ensuring that if the ResourceManager was to ever return true, the call to start(TMJOIN) would correctly succeed. To note is that the transaction will rollback at completion time and any message delivered in the tx will be redelivered.
validatorPingPeriod and validatorTimeout to be used with default values within Remoting instead of the configured values. In correcting this issue, the JMSRemotingConnection.java file has been updated so that when the client.addConnectionListener method is called within the addConnectionListener and addPlainConnectionListener methods, it also passes the configured parameters.
default profile for JBoss without any reconfiguration uses the ClusteredConnectionFactory with a non-clustered post-office, however warnings would be logged about this behavior when the log messages should be reduced from a WARN level to an INFO level. The upgrade to this version of JBoss Messaging sees this implemented within the log.
ClusterViewUpdateTest was broken and did not work correctly in previous releases with the cause being that the expected time until failure detection for some clustering tests was too long. In order to correct this the values for validatorPingPeriod and validatorPingTimeout have been changed to be 2 seconds each, combining to 4 seconds as the total time until expected failure detection.
JMSRemotingConnection.java has been updated so that the Client.addConnectionListener method is used with listener and serverLocator.gerParameters() as parameters.
removeAllMessages() method was being called, causing the messages to be re-queued as soon as the application server or queue is restarted. ChannelSupport.java has been updated to import the TimeoutExt library in order to cast the timeout value to TimeoutExt in order to obtain the reference value via the get TimeoutTarget() method. With this new reference value information, the scheduled messages can be correctly removed from the queue.
Illegal StateException would be generated, however this was not considered enough of a prominent warning about not deploying clustered queues correctly. Messaging PostOffice.java has now been updated to log a warning which outlies that clustered destinations must be deployed on all nodes of a cluster, instead of generating an Illegal StateException.
Client, SecurityAspect.check() and ServerConnection FactoryEndpoint needed to be able to obtain TLC within a privileged block, otherwise an Access ControlException is produced. To fix this bug, the settle, gettable and other TLC methods have been set within security blocks; this prevents access denied exceptions from Client, SecurityAspect.check() and ServerConnection FactoryEndpoint.
ClientConsumer.java file has been updated to log warning messages and debug information pertaining to the move of messages to the expiry or dead letter queues; Server SessionEndpoint.java has also been updated in the same mannor.
Delivery.java file, messages are now marked with a boolean value detailing if they are for delivery with a X transaction and if this transaction is prepared and SimpleDelivery.java now implements this new information.
shutdownNow() method was not synchronized and may cause a NoSuchElementException during runtime as a result. A synchronization block has been placed around the shutdownNow() code within OrderedExecutorFactory.java.
org.jboss.jms.server.messagecounter.MessageCounter class not being able to be serialized as it caused an UndeclaredThrowableException. MessageCounter.java has been updated to now import and implement the Serializable library and be given a serialVersionUID, allowing the org.jboss.jms.server.messagecounter.MessageCounter class to be serializable.
unregisterSucker() or registerSucker() was called a ConcurrentModificationException would be generated by the time the HashSet containing the suckers was iterated. The issue would present itself on clusters with a magnitude of nodes (for instance it appeared on a 8 node cluster but not a 4 node cluster). This bug was corrected by creating an iterator that used a private set of suckers for iteration through the HashSet of suckers in order to avoid the exception.
Bridge.java and BridgeService.java files have undergone extensive modification and now the factory is set to the bridge which undertakes the lookup itself instead of looking up the destinations.
JDBCCacheLoader implementation did not work with Sybase as it would try to set a null BLOB column which is unsupported within Sybase. To correct this the JDBCCacheLoader.java file has been updated so that the Sybase Driver sets a null LONGVARBINARY value, allowing the JDBCCacheLoader implementation to work correctly.
JDBCExtCacheLoader did not handle persistent state transfer correctly since the JDBCExtCacheLoader.storeState() method would use available bytes on the MarshalledValueInputStream rather than on the ByteArrayInputStream when storing the persistent state. This was an issue because the MarshalledValueInputStream always returns a null value, meaning the persistent state was never written. In fixing this issue the JDBCExtendedCacheLoader.java file has been modified so that it specifies to check for available space on the ByteArrayInputStream.
ConnectionValidator.run() method had the ability to be called by a user before the private method ConnectionValidator.start() was called, resulting in the clientInvoker and timer fields being set to null and generating a NullPointerException. Within the ConnectionValidator.java file the fields are now checked to see if they are null upon execution of the ConnectionValidator.run() method, one or both are then an IllegalStateException is displayed to the user outlining that ConnectionValidator.run() should not be called directly but addConnectionListener() should be used instead.
org.jboss.remoting.marshal.MarshallerLoaderHandler.loadClassBytes() method that prohibited remote classloading to work correctly with isolated EARs. The first was that a while loop in the code needed a break and the second was that the call to the org.jboss.mx.loading.LoaderRepository.getCachedClass() method should have been a general call to LoaderRepository.loadClass(). These two issues have been rectified with this Remoting update, allowing remote classloading to function correctly.
ServerInvokerCallbackHandler class would become unresponsive when calling the BlockingCallbackStore.add() method after locking the callback field with a true responce from the persistCallback() method. This would occur because the BlockingCallbackStore.getNext() needed to control the lock on the callback field to break the waiting period, however this could not be achieved because of the wait period. To fix this issue the call to the BlockingCallbackStore.add() method has been removed as it was an unnecessary step.
HTTPClientInvoker did not support Beginner's All-purpose Symbolic Instruction Code (BASIC) authentication for proxies when the proxy was configured through system property options of http.proxyHost and http.proxyPort. The issue appears because the HTTPClientInvoker would not check for the existence of these options and in tern it would never create a Proxy-Authorization request header, which is necessary for normal operation. To fix this the HTTPClientInvoker has been modified to check for the existence of the http.proxyHost option and if it detects its use, creates a Proxy-Authorization request header.
HTTPClientInvoker would generate a NullPointerException when the HTTP server returned an error code without any content and then the java.net.HttpUrlConnection.getInputStream() method returned a null value. In order to improve control over this behavior, the new variable UNMARSHAL_NULL_STREAM has been added to the HTTPClientInvoker. If this variable is set to true (the default value) the default behavior is executed, however if it is set to false the call to the UnMarshaller.read() is skipped.
InvokerRegistry an error existed associated with the sequencing of events and serverLocators would return a null on occasion. To correct this race condition, the sequencing of events within the InvokerRegistry has been rearranged so that references to transportClientFactoryClasses and clientLocators are governed by clientLock and references to transportServerFactoryClasses, serverLocators, and registeredLocators are governed by serverLock.
ConnectionValidator would be ignored when the overloaded org.jboss.remoting.Client method was called and the DEFAULT_PING_PERIOD variable value was placed into the metadata map passed to the ConnectionValidator. This has been corrected by updating org.jboss.remoting.Client.addConnectionListener so that DEFAULT_PING_PERIOD is only passed if the value of VALIDATOR_PING_PERIOD within the client's configuration map has not been set.
ConnectionValidator may become unresponsive then the run() method is executed and utilizes the lock variable. The methods within the run() method are meant to time out so that the lock variable can become available to the notifyListeners() in the event of a network failure; however run() may execute again before notifyListeners() can. The synchronization on the lock variable has been modified to avoid this issue to enable correct operation.
IllegalStateException would occur within the ConnectorValidator.run() method because further synchronization on the lock variable was necessary. This issue was fixed during the rectification of the above problem.
MarshalFactory was allowing a subsystem to add a marshaller at the same time as EJB3 was trying to extract one causing users to receive an InvalidMarshallingResource exception; this also applied to unmarshallers. The error has been fixed by updating the jboss-remoting.jar file to include synchronized static Maps within the MarshalFactory.
SocketServerInvoker had an issue when shutting down ServerThreads causing a user to possibly receive an invocation to a closed SocketServerInvoker on the client side, causing an InvalidStateException. Allowing this exception would cause a clustered EJB3 system to generate a UndeclaredThrowableException instead of trying alternative servers. To allow for alternatives to be attempted, an optional behavior of allowing the MicroRemoteClientInvoker to interpret an InvalidStateException as a CannotConnectException, allowing for other servers to be attempted.
WebdavServlet.java that overrides the DefaultServlet implementation for servlet request processing and testing for input before launching the DocumentBuilder.
deferAccept option would be set to false in the AprEndpoint. This may lead to a NullPointerException as the accepter thread starts to process a request while also calling for a poller before initialization. The issue has been resolved by moving the acceptor threads to being executed last when starting the AprEndpoint.
xalan.jar and xercesImpl.jar in WEB-INF/lib, the JBossWeb servlet container classloader returns JBoss provided version of the SAXParser from SAXParserFactory.newInstance().newSAXParser() rather than the version provided in the war deployment. To fix this bug the WebAppClassLoader.java has been updated to ensure the correct parser is used.
glassfigh-jaxb component of the Enterprise Application Platform has been upgraded to version 2.1.4.patch01. A list of the included fixes is as follows:
com.sun.xml.bind.v2.runtime.reflect.opt package contains classes to optimize field and method access by dynamically generating classes. Within the Injector class there is a HashMap value that is wrapped within a WeakReference however since there is only a WeakReference to the Injector class within this, the HashMap is garbage collected. To fix this the reference has been changed to a StrongReference and in order to maintain the original requirements, the Injector is now passed a reference to the ClassLoader instead of containing one specifically.
JBossWSEntityResolver would not resolve any schemas causing Web Services for Remote Portlets (WSRP) to produce an error. This issue has been fixed by modifying JBossWSEntityResolver within WSDL11Reader.java to resolve schemas locally when an internet connection is unavailable.
SOAPBinding declaration specified in the EJB3 stateless session bean. To correct this and allow SOAPBinding to work as expected the following files have been modified: WSDLGenerator.java, SOAPEndpoint.java, Constants.java, WSDLWriter.java, SOAPBindingTestCase.java and WSDL11Writer.java.
Deffered Node Expansion.This defers node expansion until the nodes are accessed, improving performance where not all nodes need to be visited. However memory overheads are increased, which can be considerable for large messages.
Deffered Node Expansion feature and have all nodes expand. To achieve this the following system property needs to be set:
-Dorg.jboss.ws.disable_deferred_node_expansion=true
TCK5 SAAJ in the SOAPBody class was introduced with a fix to a previous bug and this has now been rectified by modifying the SOAPBodyImpl.java file to perform a break after assigning the childElement property.
transport-guarantee that is set to be confidential would see an attempt to exactly map the URL pattern in the WSDL. However since the servlet and security constraints will not be defined exactly the same a bug occurred whereby JBoss Web Services would assume the transport-guarantee was not confidential when generating the address, causing the WSDL to be generated with a http address. The transport-guarantee would still be enforced by JBoss Web Services as confidential but the WSDL would contain the wrong address, leading to clients attempting to connect to an incorrect address.
MetaDataBuilder.java file has been modified so that when testing the servlet pattern it also tests correctly for the security constraint instead of assuming both with be of the same value.
SOAPMessageImpl class sets the contentType variable to text/xml, which was incorrect. This has now been rectified by amending contentType to use the value application/soap+xml by adding the getSAPContentType() method to SOAPMessageImpl.java and updating DispatchImpl.java to correctly reference the SOAP message context.
IllegalAnnotationsException as JBoss Web Services attempted to process the JBoss AOP methods. JAXWSMetaDataBuilder.java has been updated to mark JBoss AOP methods as synthetic which allows them to be skipped.
WSDLRequestHandler.java file has been modified to use a new URL and protocol instead of the original URL and protocol in order to use the dynamically generated port and protocol numbers.
MappingFileGeneratorHelper.java file has been corrected to ensure that the generated mapping matches the source of the information.
MetaDataBuilder.java has been modified for each individual service that uses the default port.
DOMUtils.clearThreadLocals() method was not cleared for incoming client calls. In order to fix this the call to DOMUtils.clearThreadLocals() has been moved to the MessageContextAssociation class and is executed once the last message has been processed. The files that have been updated in order to incorporate the fix are: DOMUtils.java, XMLContent.java, ProviderImpl.java, MessageContextAssociation.java, MessageContextJAXWS.java and RequestHandlerImpl.java.
webServiceHost property was not set, the http://localhost:8080/jbossws/services page presented the host name as jbossws.undefined.host. A createAddress method has been added to ContextServlet.java which dynamically updates the WSDL and XSD files with the address from the request URL before displaying information to the user.
parseRequest() method of the org.jboss.seam.web.MultipartRequest class uploaded a large file, there were occurrences when this would cause an endless loop and use 100% of the computers CPU. In order to break out of the loop, a loopCounter has been implemented within the MultipartRequest.java file.
chatroom, mail, registration, booking and dvdstore would generate a NullPointerException during undeployment. In correcting this issue, the RootInterceptor.java file was updated to check if an applications context still active upon undeployment and deal with this appropriately.
org.hibernate.jdbc.AbstractBatcher#closeQueryStatement() method was changed to check for the existence of the prepared statement in the statementsToClose collection instead of closing it unconditionally. This has now caused a properties leak as the org.hibernate.persister.entity.AbstractEntityPersister#processGeneratedProperties() used org.hibernate.jdbc.AbstractBatcher#closeQueryStatement() and the statement within org.hibernate.persister.entity.AbstractEntityPersister#processGeneratedProperties() is not added to the statementsToClose collection.
AbstractEntityPersister.java has been updated to execute a prepared statement on the result set and after calculating the propValue the result set is closed if it is not null; ensuring that no leak can occur.
SybaseASE15Dialect is included with this CP release to support Sybase ASE 15 and this dialect now becomes apart of the Enterprise Application Platform certified configuration. Previous Sybase dialects are now considered deprecated and may be removed from future releases; however support will still be maintained for users who do not wish to move to the new dialect.
second(), minute(), hour() and extract() caused a GenericJDBCException when used. Moving these functions from the SQLServerDialect.java file to the SybaseDialect.java file allows for these functions to work correctly.
SQLServerDialect.java file has been updated to include a new supportsCascadeDelete() method which returns true and SybaseDialect.java has been updated to include a new supportsCascadeDelete() method which returns false.
AbstractEntityPersister.java file was updated so that the columnNumber variable is passed to the subclassColumnSelectableClosure method instead of an increment of the for loop variable i.
CollectionTest.java has also been updated and Animal.java, Mammal.java, Zoo.hbm.xml and Zoo.java have been added for testing purposes.
PropertyValueException would occur when merging a detached instance of a One class that contains a new Many class instance and if and only if the One class was previously loaded as a proxy during the same transaction. The files StatefulPersistenceContext.java, BackrefPropertyAccessor.java, BackrefTest.java and Child.java have been updated to check for the proxy issue in the merging and once the proxy entity is found the mergeMap is updated to deal with this eventuality.
addDuplicateAlias method would include an entry into the hash map even when the classAlias variable was set to null; causing a NullPointerException when the CrazyJPARRequirements() method is called. To correct this issue the FromClause.java file has been modified to correct the addDuplicateAlias method by testing if the alias variable is null and if it is not null then the fromElementByClassAlias.put is now called, instead of this method being called even if alias contained a null value.
dynamicUpdate to generate SQL and the version field is specified by the user to not be updated, the AbstractEntityPersiter.getPropertiesToUpdate method would still update the field causing exceptions to appear in certain cases. Within this Enterprise Application Platform update AbstractEntityPersister.java has been corrected to check if the user has explicitly said that the version field should not be updated and does not update the field if this is the case.
AppServerJDBCXARecovery class was using the Java 1.5 syntax when it should compile with Java 1.4. This error has been rectified with this release by modifying the AppServerJDBCXARecovery.java file to use Java 1.4.
AppServerJDBCXARecovery class and adding the createConnection() throws SQLException method which makes sure a connection exists before deploying the transaction manager.
AppServerJDBCXARecovery class would contain information to an invalid connection because of database failure. This bug was fixed with the same correction as the above issue, which is, by modifying the AppServerJDBCXARecovery class and adding the createConnection() throws SQLException method which makes sure a connection exists.
beforeCompletion method would be run even when the tx state was set to ABORT_ONLY, when this method should only be executed before commit attempts and not rollbacks. In order to correct this and make sure the beforeCompletion method does not get executed for rollback events the SubordinateAtomicAction.java file has been modified.
TransactionImple.doOnePhaseCommit would generate a HeuristicRollbackException when the commit was aborted. This meant that XATerminatorImple.commit was unable to distinguish between a successful rollback and one in error. Fixed in this CP release, the TransactionImple.java file has been modified so that the TransactionImple.doOnePhaseCommit method now generates a RollbackException instead of a heuristic when a successful rollback is performed.
tx had been set to rollbackOnly and the XATerminatorImple.prepare method was called, a XA_RBROLLBACK exception would be generated and yet the rollback would not be undertaken and the tx reference would be removed meaning no cleanup via the commit or rollback methods were possible. The XATerminatorImple.java file has been updated to correct this by improving the cleanup and exception reporting for rollbacks in XATerminatorImple.prepare.
SubordinateAtomicAction.doPrepare method called beforeCompletion but did not call afterCompletion when the return status was Read Only. SubordinateAtomicAction.java now has corrected synchronization handling for transaction termination.
SubordinateAtomicAction.java file.
phase2Commit and phase2Abort methods.
&resource=path/of/an/xmlfile.xml was applied to the end of any WSDL (Web Services Definition Language) access URL. The WSDLRequestHandler.java file has been updated to only allow the parent of a WSDL file, a servers data or WSDL or overridden WSDL publish directories access to xml file resources. Additional test files are also included which were created to ensure proper operation was being undertaken. (CVE-2009-0027 )
-Djboss.messaging.controlchanneludpport and -Djboss.messaging.datachanneludpport have been includedin section 19.7.10 with example ports and the text addressing the concern of Why do I need to change the multicast port if I change the address? has been updated to reflect what is happening in an improved way.
default server configuration file set and the contents of the conf, deploy and all directory sections.
-b option (and equivalents) that can be used on the command line to change the binding addresses of the Enterprise Application Platform for remote connectivity.
ZIP installation of the server locally or remotely because a different username and password may be used. The Getting Started Guide has now been updated to explain that user credentials for the operating system will be used for local authentication and JBoss server credentials for remote authentication.
JacORB 2.3.0.jboss5 to become unresponsive during shutdown. In rectifying this issue, the POA.java file has been modified so that instead of executing:
throw new org.omg.CORBA.OBJECT_NOT_EXIST();
throw new ObjectNotActive();
ExecutionContext class contained a value in seconds, from which the getCompletionTimeout method of org.jboss.resource.work.WorkWrapper obtains its information. An issue arises with getCompletionTimeout expecting the value to be in milliseconds, creating an error where the initially set timeout value may be 6 seconds but be passed to the thread pool as 6 milliseconds. The WorkWrapper.java file has been updated and correctly converts the timeout value from seconds to milliseconds.
OracleExceptionSorter has been enhanced for this release with new error codes of 17002 (connection reset) and 17008 (connection closed) now able to be handled. These enhancements have been applied to the OracleExceptionSorter.java file.
ConcurrentModificationException would occur when a classloader would be undeployed while another user was attempting to load a class from the package. This error arose because the packagesMap within UnifiedLoaderRepository3 had a TreeSet that was not correctly synchronized with changes. In order to rectify this, the ClassLoaderUtils.java file has been updated to import the Collections library and use the synchronizedSet method of the library in returning the TreeSet of the newPackageSet method.
GossipRouter and GossipClient (TCPGOSSIP) did not have socket read timeouts, socket linger timeouts and backlog set to provide the best behavior when heavily utilized or under network situations in need of improvement. This fix provides default values and configuration options for these in order to avoid problematic situations.
storeState method would use available space on the MarshalledValueInputStream instead of on the ByteArrayInputStream. To correct the stream usage, JDBCExtendedCacheLoader.java has been updated to store the new state using the in_stream value as long as there is space available.
BLOB (Binary Large OBject) column which is unsupported in Sybase. To correct this the JDBCCacheLoader.java and AdjListJDBCCacheLoader.java files have been updated to select the Sybase Driver if Sybase is to be used, ensuring that null values are set as LONGVARBINARY rather than BLOB.
MulticastSocket constructor is now used in combination with a SocketAddress when JGroups is used on the Linux platform.
Gossip Router component of JGroups provided options to set backlog, socket read timeout and socket linger timeout within the code, however these options are not available via the command line. This update of the JGroups component, now includes the availability of these options to be set through the command line.
Gossip Router component of JGroups Math.min was used in calculating the socket linger timeout which caused incorrect results since this meant that the socket linger timeout would always be 1. Gossip Router has been updated to instead use Math.max in the calculation of the socket linger timeout.
RouterStub and GossipRouter classes have the setSoLinger value set incorrectly to use a seconds value when setSoLinger uses millisecond values. This meant that a value of 500 was 500 seconds rather than 500 milliseconds. The RouterStub class has had its setSoLinger corrected and the GossipRouter class has had the setSoLinger value corrected and timouts configurable.
JmsServerSession.java file has been updated with added logic to the local transaction separation strategy as to allow for non-xa sessions to be rolled back using transaction session.
CleanShutdownInterceptor class would log a GenericClusteringException when the container had failed to shut down correctly or failed to start correctly and because of this behavior the error message displayed because of the exception should be updated to indicate that it may be an issue with the container failing to start instead of only failing to shut down. In this latest Enterprise Application Platform update, the error message has been updated to reflect both situations which may be the cause of the exception.
XAResourceRecovery even though it is stated in the JBM user guide. This CP release modifies the build-distr.xml file to all XAResourceRecovery to be enabled for JTA recovery.
JBossMQ and JBoss Messaging application policies have been present within the login-config.xml file, when JBossMQ is only included in the 4.2 distribution and JBoss Messaging is similarly only included in the 4.3 distribution.
build.xml and login-config.xml to differentiate between requirements for each individual distribution.
IgnoreUndeployLegacyClusteredSessionNotificationPolicy within clustering didn't correctly call isHttpSessionListenerInvocationAllowed, which would lead to the repeated calling of itself and eventually StackOverflow errors. In order to correct this the IgnoreUndeployLegacyClusteredSessionNotificationPolicy.java file has been modified to correctly call isHttpSessionListenerInvocationAllowed.
TIMERS table fails when the Oracle schema is specified. To correct this the GeneralPurposeDatabasePersistencePlugin.java file has been updated with a calling to an new SQLUtil.fixConstraintName function which changes all dots in a constraint name to underscores. This ensures that constraint names are compatible with Oracle.
.jar files. The root PU was being detected as the first nested .jar encountered instead of being the deployment which contains the persistence.xml file. To make sure that the PU root is always set correctly, the JmxDeploymentUnit.java file has been updated with the removal of testing for the url being null and the deploymentInfo.parent not being null. This means that the url is now always taken straight from the extractDescriptorUrl of META-INF/persistence.xml.
org.jboss.jaxr.juddi.JUDDIServlet and org.jboss.jaxr.juddi.transport.SaajTransport files the namespace value for xml:lang contained http://www.w3.org/TR/REC-xml/, which caused an exception within the metro stack. The namespace value should instead be null and this has been applied for this JAXR update.
UserTransaction (UT) was not able to be deployed with a clustered proxy that supported sticky transactions correctly. This has been fixed by modifying numerous files which make UserTransaction deployable with transaction sticky load balance policies.
BeanBuilder.java file was updated with the removal of ELUtils.getScope(this.expressionString, segment); in order to fix this issue.
LifecycleImpl and RestoreViewPhase forced the responseComplete() method for the status of an existing view. To correct this problem the RestoreViewPhase.java file has been edited with the code facesContext.responseComplete(); removed and replaced with facesContext.renderResponse();.
var attribute, if the UIData component is created using a binding and calls the setVar() method to set the var attribute, it would be overwritten as a null value by the <h:dataTable> tag. This bug has been fixed by modifying the HtmlTaglib21Generator.java file so that component properties are not set if the tag attribute has not been set.
BindingValidator would generate a ConverterException instead of a ValidatorException. For this update, BindingValidator has been modified to generate the correct exception; ValidatorException.
PostConstruct exception within the BeanBuilder was not communicated to the user correctly. To correct the issue so that no information is hidden from the user, the ManagedBeanCreationException has been updated to provide more information about the cause of the exception.
faces-config.xml initialization files twice, creating duplicate operations. This was caused since a record was not kept of which files had been initialized and which had not. File initialization tracking has been implemented to correct this issue and this has seen the modification of the following files: ConfigManager.java, ConfigureListener.java, WebConfiguration.java, ConfigurationResourceProvider.java, MetaInfResourceProvider.java, RIConfigResourceProvider.java and WebResourceProvider.java.
com.sun.faces.renderkit.ApplicationObjectInputStream extends the functionality of java.io.ObjectInputStream but failed to preserve the functionality as com.sun.faces.renderkit.ApplicationObjectInputStream would fail when primitives were used, unlike the java.io.ObjectInputStream class which contains a special case to handle such a case. This would cause problems for UIComponents. ApplicationObjectInputStream.java has been updated to explicitly handle primitive cases and catch the ClassNotFoundException which may be generated.
com.sun.faces.renderkit.html_basic.OutputLinkRenderer did not encode parameters correctly, missing the URLEncoding. URLEncoding has been added, correcting this bug, along with the parameter names.
com.sun.faces.renderkit.html_basic.BaseTableRenderer did not allow for empty columnClasses when generating columns from user input. The issue was realizing when to create numerous columns rather just one; for instance if the user input foo, with a trailing space then the expected output would be one column with the name foo and another empty column. This was not the case though, as foo, would generate just one column with foo, in its entirety as the column name, instead of splitting the columns on the comma. This behavior has now been corrected so that com.sun.faces.renderkit.html_basic.BaseTableRenderer no generates columns correctly, and in order to achieve this the following files have been updated: BasetableRenderer.java, GridRenderer.java and TableRenderer.java.
com.sun.faces.renderkit.html_basic.MenuRenderer class did not correctly differentiate between Objects; for instance the different between Boolean and boolean, noting the capitalization of the first. The error was with the logic in UISelect and MenuRenderer. To correct this, proper use of the converter for these classes has been implemented to deal with Objects correctly.
com.sun.faces.lifecycle.RestoreViewPhase called DebugUtil.printTree after restoring the view if debugging was enabled, causing incorrect initialization of calls when a listbox is being used and returning an incorrect value in the RenderResponse phase. Method calls have been restructured with the removal of references to the DebugUtil.printTree() method from ViewHandlerImpl.java and RestoreViewPhase.java and RenderResponsePhase.java has been modified to call DebugUtil.printTree (if FINEST logging is enabled) at the end of the RenderResponse phase, fixing the issue (with the above changes also) and providing a more accurate view of the tree.
CGLIB Enhanced UIComponents in a component tree would return a value of null for their class when calling getPackage() causing HtmlInputText.handleAttribute to fail as it relies on a not-nulll value. This issue has been corrected by ignoring a returned value of null from the getPackage() method for every instance in the codebase.
UIComponentBase did not allow for the children of a tree to be iterated through in reverse order using a list iterator as it would produce an IndexOutOfBoundsException when the execution tries to calculate the size of the children. ChildrenListIterator method has been modified within the UIComponentBase class by changing the line of code if ((index < 0) || (index >= list.size())) { to if ((index < 0) || (index > list.size())) {.
faces-config.xml were processed out of order depending on if ICEfaces or Mojara 1.2_09 is in use. This occurred due to containing all renderer DOM nods in a list associated with a namespace. This was done so that the renderer nodes could then be processed prior to the RenderKits being created and the nodes could be processed using the proper namespace. However, by placing all the renderers into this list, we lost the document ordering. The issue has been fixed by associating the renderer nodes with their owning document and processed in the parsing order.
Class.getPackage() method calls to synchronized methods, inhibiting scalability if the method has to be repeatedly executed. Use of the Class.getPackage() method has now been removed from UIComponent.java, RenderKitUtils.java and HtmlComponentGenerator.java. Instead, the class name is now checked if it starts with the package name that is of interest, javax.faces.component.. This includes the components that are generated by the HtmlComponentGenerator since they are packaged in javax.faces.component.html.
RenderKitUtils class when a semicolon (;) followed a forward-slash (/) in a header Accept value (for instance: text/;q=0.5). To rectify this issue the RenderKitUtils class has been updated to assume * as the subtype for an Accept header that contains no subtype.
@Service and XMBean XML . In order to correct this the behavior has been re-written to improve the mimicking of ServerCreator.
getMBeanInfo method is called within MBeanServerImpl and RawDynamicInvoker, the underlying exception to NotCompliantMBeanException is not expressed to the user. RawDynamicInvoker.java has now been updated to provide this useful information to the user.
commons-beanutils.jar file within the Enterprise Application Platform had the incorrect version in the manifest.mf file. Through the course of correcting this bug, it was found that the beanutils component was outdated and a newer version contained many advantages. In this update to the EAP beanutils has been upgraded to version 1.8.0, which sees the significant improvement that fixes a memory leak caused by a circular reference concerning the WeakHashMap.
sample-bindings.xml file. These include:
ports-03 section was missing the EJB remoting connector and the remoting connector sections.
mq was used in the name property of the HAJNDIJMSProvider instead of jms.
ports-01, ports-02, and ports-03 schemes defined the timeout attribute twice in the JBoss Messaging section:
beanutils 1.8.0 which fixes this OutOfMemoryError.
HTTP Status 500 exception would occur. To correct this, an error page genericError.jsp has been created and is now displayed whenever a HTTP Status 500 exception occurs.
DefaultRedeliveryDelay or RedeliveryDelay is set to a value apart from zero, messages will not be redelivered even though the method session.rollback() had been called. This issue will not be fixed because redelivery delay is handled on the server side and the message is already acknowledged before delivery of the message with a non durable subscription. For the Enterprise Application Platform, this means that redelivery delays with non durable subscriptions cannot be supported.
PreparedStatement.setNull( index, java.sql.Types.BIT ) method is executed in the Sybase environment, Sybase JDBC converts the null value to a zero because Sybase does not allow null bit columns.
The method com.sybase.jdbc2.jdbc.SybResultSet.getBlob(String) is not supported and should not be called.
FumTest.testCompositeKeyPathExpressions() method within Hibernate fails since Sybase currently only allows one column in a subquery select list, with the only exception to this being that a subquery in an EXISTS() predicate can have * as the select list.
elements() method if the elements have a composite key. Instead the HQL should be reformatted to ensure there is no subquery with more than one item in the select list.
SchemaExport cannot be used to create stored procedures while in chained transaction mode. The suggested workaround for this case is to add the following code follwing the defining of the new stored procedure:
<database-object> <create> sp_procxmode paramHandling, 'chained' </create> <drop/> </database-object>
join fetches involving union subclasses.
Incorrect syntax near the keyword 'as' error. This bug impacts the following tests such that at present they are expected to fail: CriteriaQueryTest.testSubselect, CriteriaQueryTest.testDetachedCriteriaAsSubQuery, DynamicFilterTest.testCriteriaControl and DynamicFilterTest.testCriteriaSubqueryWithFilters.
DetachedCriteria method in a subquery.
javax.persistence.RollbackException. This occurs when the char property is used without a value set as Hibernate then persists a string containing the character \u0000, which causes PostgreSQL to generate an exception as it does not allow this character to be embedded in a string.
\u0000 character in a char column using PostgreSQL does not exist. Instead it is reconmended that to persist a null value for the char property when it is uninitialized, the java.lang.Character method should be used.
update clauses, however at present this is not the case. To fix this, the code has to be modified to remove the identification variable in SQL for PostgreSQL, Microsoft SQL 2005 and Sybase.
@Type(type="text") in creating a table, the field is correctly created as "text" however when a delete operation is issued the field becomes set as a varchar, forcing the Microsoft SQL driver to return the error:
The data types text and nvarchar are incompatible in the equal to operator.
TIME and TIMESTAMP.
NullPointerExceptions are being investigated in relation to the EJB3 configuration, transaction operations when they are extended and packaging.
ClassLoader.loadClass method is utilized creating a deserialized String. This causes a problem where if multiple threads are loading database rows containing arrays of strings, one thread is forced to undertake all the procedure while the other threads are left dormant.
-Dsun.lang.ClassLoader.allowArraySyntax=true, which can be a default setting within the run.conf file.
| Revision History | |||
|---|---|---|---|
| Revision 1.0 | |||
|
| |||