# JBoss 4.0.2

The jboss-4.0.2 release for the J2EE™ 1.4 codebase. For information on the APIs that make up J2EE 1.4, see J2EE v1.4 Documentation. For a comprehensive tutorial on J2EE 1.4, see The J2EE™ 1.4 Tutorial. A jboss-4.0.x getting started guide that is based on contents from the tutorial can be found on the JBoss web site documentation section, 4.0 Getting Started Guide.

# Release Notes

## Highlights

- The default class loading model in the web container has been changed to use the standard servlet model that isolates the wars from other deployments, and loads classes/resources preferentially from the war. In addition the, classes from packages that cannot be overriden due to their use in the web container are simply ignored. An example is the commons logging packages. Prior to 4.0.2 a removal of such packages had to be removed from the war. The changes are detailed in JBAS-1691
- Several improvements to the JACC support to work better with thirdparty providers has been made.
- The embedded tomcat version has been upgraded to 5.5.9
- The Hibernate deployer version has been upgraded to use the hibernate 3.0.3 release (tagged jboss_4_0_2 in the hibernate cvs tree as its not quite 3.0.3). For info on switching back to the 2.1.x based deployer, see: JBossHibernate.
- Numerous bug fixes and feature enhancements as listed below

## Feature Request

- [JBAS-1365] - Allow arbitrary creation of filters in ListenerServiceMBeanSupport
- [JBAS-1391] - Add support for datasource failover
- [JBAS-1401] - Tomcat 5.5.9 integration
- [JBAS-1448] - Update the ServerInfo listThreadDump to use the jdk 5 stack traces
- [JBAS-1449] - Update the ServerInfo memory ops to use the jdk 5 mbeans
- [JBAS-1460] - Add an option to relax the JaasSecurityDomain certificate validation
- [JBAS-1468] - Add support for IP address reporting inside a Login Module
- [JBAS-1473] - Add support for customization of the login module password hash mechanism
- [JBAS-1508] - JBoss AS needs JSF
- [JBAS-1509] - CMT EJB should throw an exception if transaction marked rollback
- [JBAS-1562] - Expose getEntityLockMonitor in the MBean EntityLockMonitorMBean
- [JBAS-1604] - Add detailed logging to the jms resource adapter
- [JBAS-1610] - Integrate jdk5 MXBeans (platform MBeans) to JBoss
- [JBAS-1645] - The MDB should not automatically create JBossMQ destinations
- [JBAS-1680] - Add a descriptors list attribute to the JarDeployer
- [JBAS-1722] - Allow for a Principal instance as the Context.SECURITY_PRINCIPAL in LoginInitialContextFactory
- [JBAS-1736] - twiddle should support username and password options
- [JBAS-1739] - Add default users/roles properties to the UsersRolesLoginModule
- [JBAS-1758] - A BarrierController service to allow start/stop dependecies triggered by notifications
- [JBAS-1764] - Add MySQLConnectionValidator

## Bug

- [JBAS-20] - Multiple ports wsdl service element
- [JBAS-21] - Cannot find wsdl in client deployment
- [JBAS-897] - invalid ejb-link
- [JBAS-1021] - Virtual host problem
- [JBAS-1065] - No redeployment possible after unsuccessful first deployment
- [JBAS-1070] - Warning message not found when deploying WS4EE Web Service
- [JBAS-1099] - Missing EJB verifier message
- [JBAS-1115] - bad path to included xsd gets built in WSDLFilePublisher
- [JBAS-1183] - Verifier warning message not found
- [JBAS-1235] - TimedObject id persistence fails on restart
- [JBAS-1270] - UserTransaction with non default ProviderURL
- [JBAS-1358] - Tomcat session replication breaks if there is already an active transaction
- [JBAS-1363] - JACC DelegatingPolicy will not work with a SecurityManager installed
- [JBAS-1377] - bad path to included xsd gets built in WSDLFilePublisher
- [JBAS-1378] - Need tcp configuration variation of the cluster unit tests
- [JBAS-1480] - Web Console: Monitors: Errors in the log
- [JBAS-1495] - Looking up a session bean on one server from within another in JBoss 3.2.7
- [JBAS-1512] - misspelling of UserPrinicpalRequest and UserPrinicipalServletRequest
- [JBAS-1516] - Tomcat5: StandardContext getConfigBase tries to create a directory
- [JBAS-1517] - SAR detection broken
- [JBAS-1544] - Wrong MBean attribute name in jboss:service=Mail (POP3SererHost )
- [JBAS-1545] - FileURLConnection breaks if path has spaces
- [JBAS-1551] - Classloader bug (version > 3.2.3)
- [JBAS-1552] - JBoss use wrong version of javax.resource.ResourceException class file
- [JBAS-1555] - HTTP Status 403 on using org.jboss.web.tomcat.security.JaccAuthorizationRealm
- [JBAS-1560] - Clustered stateful session bean removal of expired passivated instances causes deadlock
- [JBAS-1561] - Fix for Hibernate/JBossCache integration
- [JBAS-1564] - Prepared Statement Cache does not take into account autocommit semantics
- [JBAS-1574] - SerializableResultSetMetaData.getColumnCount is off by one
- [JBAS-1576] - Hibernate TransactionSynch should rollback transaction on session.flush exception
- [JBAS-1577] - white-space in ServiceMBean EVENT types
- [JBAS-1578] - Duplicate Messages
- [JBAS-1579] - Need to cleanup the serialVersionUIDs for Serializable/Externalizable classes
- [JBAS-1580] - Problem when Submitting Massive Load into HttpSession
- [JBAS-1581] - JDBC StateManager - CREATE_TABLES_ON_STARTUP is wrong
- [JBAS-1582] - NullPersistenceManager, DelegateName is wrong
- [JBAS-1583] - Primary key violation on JMS_TRANSACTIONS
- [JBAS-1588] - Collection synchronization into cmp2
- [JBAS-1589] - Typo in JBossMQ's TxManager
- [JBAS-1590] - Container does not call commit or refresh for the JACC provider
- [JBAS-1592] - JaccAuthorizationRealm always returns false on subsequent requests
- [JBAS-1599] - EJB Pools Strict Maximum Pool Permits Leak
- [JBAS-1600] - Stateless sesion ejbCreate CreateException are not propagated correctly
- [JBAS-1602] - Can't use container level taglibs
- [JBAS-1619] - LoadLibrary should be done through the deployment classloader
- [JBAS-1622] - findSessions doesn't find all sessions in http session replication
- [JBAS-1632] - clustering unit test failure
- [JBAS-1633] - Random IllegalStateException when session id is recycled
- [JBAS-1636] - Don't try to delist a track-connection-by-tx connection that is already broken and has been closed.
- [JBAS-1639] - Integrate Critical JBWS bug fixes
- [JBAS-1640] - JACC web application validation fails when Tomcat Connector is secure
- [JBAS-1669] - NullPointerException in DLQHandler
- [JBAS-1673] - ClassCastException in JmsActivation in setupQueueConnection
- [JBAS-1674] - web-console depends on UseJBossWebLoader=true
- [JBAS-1675] - Integrate Critical CTS bug fixes
- [JBAS-1677] - createConsumer and temporaries
- [JBAS-1679] - http session timeout is not implemented when distributed
- [JBAS-1682] - LDAP support: Roles in root context (empty searchBase) not supported
- [JBAS-1683] - The JACC subject policy context handler always returns null
- [JBAS-1684] - JaccAuthorizationRealm incorrectly returns false when unauthenticated caller attempts to access an unprotected resource
- [JBAS-1685] - JACC Web*Permission do not handle an empty
- [JBAS-1686] - AbstractWebDeployer adds more unchecked permissions to the JACC policy provider than it should
- [JBAS-1688] - Incorrect war parent class loader used when UseJBossWebLoader=false
- [JBAS-1695] - JACC: incorrect * mapping of web.xml
- [JBAS-1718] - JACC javax.servlet.http.HttpServletRequest PolicyContext data is null
- [JBAS-1723] - The JACC policy should be consulted for an 'unauthenticated caller'
- [JBAS-1737] - jmx-console fails to pass java.lang.Object values to op invocations
- [JBAS-1738] - JndiLoginInitialContextFactory is missing from jbossall-client.jar
- [JBAS-1741] - Deadlock can occur when acting on startup notification from jboss.system:type=Server and trying to access the web server.
- [JBAS-1749] - JMX invoker authentication interceptor example doesn't make sense
- [JBAS-1756] - Questionable management of the security association in StatefulSessionInstanceInterceptor
- [JBAS-1765] - Check the SQLStatus for MySQLExceptionSorter == 8
- [JBAS-1771] - MainDeployer.parseManifestLibraries does not log underlying exceptions

## Task

- [JBAS-58] - Complete testing of JMS Message Inflow
- [JBAS-1271] - Scout/jUDDI based JAXR Implementation
- [JBAS-1359] - Remove the castor dependency for the snmp adapter, use jbossxb
- [JBAS-1446] - org.jboss.resource.deployment.RARDeployment needs TRACE logging
- [JBAS-1478] - Move axis-ws4ee to package org.jboss.org.apache.axis
- [JBAS-1559] - Check all serverSocket accept threads
- [JBAS-1597] - Update docs for the 4.0.2 release
- [JBAS-1609] - Backport latest JBossCache (1.2.2)
- [JBAS-1617] - Merge fixes for JacORB bugs #562 and #568 into the JacORB lib shipped w/ JBoss
- [JBAS-1618] - Update 4.0.2 to use the latest hsql release
- [JBAS-1631] - Cleanup System.out from console servlets and mbeans
- [JBAS-1637] - Add the j2ee dtd/schema redistribution terms to the release
- [JBAS-1644] - Cleanup the license headers in the source code
- [JBAS-1691] - Switch to UseJBossWebLoader=false as the default web container configuration
- [JBAS-1696] - OIL and RMI ILs are still present in the distribution
- [JBAS-1730] - Cleanup the commons jar usage
- [JBAS-1757] - Cleanup the error reporting output about faulty deployments

## Patch

- [JBAS-64] - javax.naming.StateFactory/ObjectFactory support
- [JBAS-1506] - CDROutputStream.create_input_stream is wrong when there are deferred writes
- [JBAS-1556] - SingletonStatelessSessionInstancePool doesn't work properly now

## Configuration Issues

##

Note that as of the 4.0.1 release, the distributed configurations have switched back to the 3.2.x types of distribution configurations:

- minimal: a minimal microkernel with logging, JNDI and hot deployment support
- default: a base level J2EE 1.4 application server configuration
- all: a full J2EE 1.4 server configuration with clustering and all optional services

The standard configuration from the 4.0.0-4.0.1RC1 releases has been dropped and the default flat class loading model from 3.0.x-3.2.x has been restored for the default configuration. This change in behavior was done to restore consistency with the 3.2.x class loading model. The 4.0.0 scoped class loading behavior and call by value JNDI lookup behavior can be restored by:

1. Editing conf/jboss-service.xml and setting the NamingService CallByValue to true:

          <mbean code="org.jboss.naming.NamingService"
             name="jboss:service=Naming">
             <!-- The call by value mode. true if all lookups are unmarshalled using
             the caller's TCL, false if in VM lookups return the value by reference.
             -->
             <attribute name="CallByValue">true</attribute>
             <!-- The listening port for the bootstrap JNP service. Set this to -1
               to run the NamingService without the JNP invoker listening port.
             -->
             ...
          </mbean>

2. Editing the deploy/ear-deployer.xml and setting the Isolated and CallByValue attribute to true:

       <server>
          <!-- EAR deployer, remove if you are not using ear deployments -->
          <mbean code="org.jboss.deployment.EARDeployer"
             name="jboss.j2ee:service=EARDeployer">
             <!-- A flag indicating if ear deployments should have their own scoped
             class loader to isolate their classes from other deployments.
             -->
             <attribute name="Isolated">true</attribute>
             <!-- A flag indicating if the ear components should have in VM call
             optimization disabled.
             -->
             <attribute name="CallByValue">true</attribute>
          </mbean>
       </server>

# Documentation and Help

Documentation and help may be obtained from the JBoss site.

- 4.0 Getting Started Guide
- JBoss Wikis
- JBoss Forums

# Licenses

JBoss is licensed under the LGPL. The licence texts for JBoss and the thirdparty components it uses may be found in the docs/licenses directory of the distribution. Browse Licences

# About JBoss Inc.

JBoss Inc. is in the business of providing superior technical support to our customers. Our goal is to make Professional Open Source™ the SAFE CHOICE for you. We accomplish this by backing up our open source Java products with technical support services that are delivered by the core developers themselves. We can help you to train your staff and provide you with support at every stage of the application lifecycle - from development and integration through deployment and maintenance. Visit the JBoss Services page for more information.