JBoss.orgCommunity Documentation

Chapter 1. What's new In JBossAS 5

1.1. Overview
1.2. Component Highlights
1.3. Major Component Upgrades
1.4. Project Structure Changes
1.4.1. SVN Information
1.4.2. The Project Directories
1.5. Configuration Notes
1.5.1. JBoss VFS
1.5.2. Hibernate Logging
1.5.3. jbossall-client.jar
1.5.4. EJB3
1.5.5. Other JBossAS
1.5.6. Clustering
1.6. New Configurations

This is the final release of the JBoss 5.0 series for the Java EE5 codebase that fully complies with the Java EE5 conformance testing certification requirements. It brings us to the end of a 3+ year marathon of redesigning the most popular open-source application server over a completely new kernel architecture, the JBoss Microcontainer. It also marks the beginning of a new era of innovation for JBoss as we will be exploring the capabilities and limitations of the new architecture in the releases to come. In our view, JBossAS 5 provides a healthy foundation and the most advanced and fully extensible, cross component model, aspect integration, server runtime environment. For information on the APIs that make up Java EE5, see Java EE APIs. A tutorial on Java EE 5 can be found here. Please visit also the JBoss AS docs pages as we'll be updating the documents with the latest information, and post your questions to the JBossAS 5 User Forum.

JBossAS 5 is the next generation of the JBoss Application Server build on top of the new JBoss Microcontainer. The JBoss Microcontainer is a lightweight container for managing POJOs, their deployment, configuration and lifecycle. It is a standalone project that replaces the famous JBoss JMX Microkernel of the 3.x and 4.x JBoss series. The Microcontainer integrates nicely with the JBoss framework for Aspect Oriented Programming, JBoss AOP. Support for JMX in JBoss 5 remains strong and MBean services written against the old Microkernel are expected to work. Further, it lays the groundwork for JavaEE 6 profiles oriented configurations and JBoss AS embedded that will allow for fine grained selection of services for both unit testing and embedded scenarios.

JBossAS 5 is designed around the advanced concept of a Virtual Deployment Framework (VDF), that takes the aspect oriented design of many of the earlier JBoss containers and applies it to the deployment layer. Aspectized Deployers operate in a chain over a Virtual File System (VFS), analyze deployments and produce metadata to be used by the JBoss Microcontainer, which in turn instantiates and wires together the various pieces of a deployment, controlling their lifecycle and dependencies. The VDF allows for both customization of existing component modules including JavaEE and JBoss Microcontainer, as well as introduction of other models such as OSGi and Spring.

Many key features of JBoss 5 are provided by integrating other standalone JBoss projects:

  • JBoss Microcontainer is the next generation POJO based kernel that is used as the core of the server. It supports an extensible deployment model and advanced dependency relationships.

  • The definition of the non-kernel deployers and deployment is now defined a Profile obtained from the ProfileService. The ProfileService also provides the ManagementView for ManagedDeployments/ManagedObjects used by the OpenConsole admin tool.

  • JBoss EJB3 included with JBoss 5 provides the implementation of the latest revision of the Enterprise Java Beans (EJB) specification. EJB 3.0 is a deep overhaul and simplification of the EJB specification. EJB 3.0's goals are to simplify development, facilitate a test driven approach, and focus more on writing plain old java objects (POJOs) rather than coding against complex EJB APIs.

  • JBoss Messaging is a high performance JMS provider in the JBoss Enterprise Middleware Stack (JEMS), included with JBoss 5 as the default messaging provider. It is also the backbone of the JBoss ESB infrastructure. JBoss Messaging is a complete rewrite of JBossMQ, which is the default JMS provider for the JBoss AS 4.x series.

  • JBossCache that comes in two flavors. A traditional tree-structured node-based cache and a PojoCache, an in-memory, transactional, and replicated cache system that allows users to operate on simple POJOs transparently without active user management of either replication or persistency aspects.

  • JBossWS is the web services stack for JBoss 5 providing Java EE compatible web services, JAX-WS-2.0.

  • JBoss Transactions is the default transaction manager for JBoss 5. JBoss Transactions is founded on industry proven technology and 18 year history as a leader in distributed transactions, and is one of the most interoperable implementations available.

  • JBoss Web is the Web container in JBoss 5, an implementation based on Apache Tomcat that includes the Apache Portable Runtime (APR) and Tomcat native technologies to achieve scalability and performance characteristics that match and exceed the Apache Http server.

  • JBoss Security has been updated to support pluggable authorization models including SAML, XACML and federation.

JBossAS 5 includes features and bug fixes, many of them carried over upstream from the 4.x codebase. See the Detailed Release Notes section for the full details, and Section 1.3, “Major Component Upgrades” for the major component versions included in JBossAS as well as their project page locations.

Some rather important JBoss project versions are listed below. You are encouraged to browse the individual project's documentation and view the release notes at www.jboss.org.

For a full list of the JBoss and thirdparty libraries used with JBoss AS 5.0.0.GA check the pom.xml found in the component-matrix directory of the source code distribution. To see the maven dependency tree you can run 'mvn dependency:tree' from the thirdparty directory of the source code distro.

With the reworking of the server kernel and evolution of various JBoss technologies to indepdnent projects, the JBossAS project is moving towards becoming largely an integration project. Many key pieces are now integrated as thirdparty jars that integration code/configuration makes avaialble as part of a server configuration/profile.

A common theme for JBossAS 5 is the breaking out of internal subsystems into stand-alone projects and the introduction of SPIs throughout the server codebase. Those changes should not affect directly the end user but they are an important part of the JBoss strategy for making available the various EE services as independent projects, so that they can be wired-together and be consumed à la carte inside different runtime environments and not only inside the JBoss Application Server. If you are building JBossAS from source you'll notice we are migrating to a maven2 build. At this point the build is a hybrid one because it declares all JBoss dependencies as maven2 artifacts, however after the dependencies are resolved/imported the legacy ant based build is used to compile and build the distribution. This will change to a full maven build at some point in time. The jboss maven repo can be found here. Starting from AS5 CR2, please note how the -sources.jar are also downloaded to thirdparty by default. To disable downloading of the sources to thirdparty, define the property skip-download-sources to true either on the command line or in your maven settings.xml.

The project source is rooted at Anonymous SVN for public access, and Committer SVN for committer access. The directories under these roots follow the usual svn conventions:

  • trunk - the development branch for the next major version

  • branches - the location for stable branches associated with release series.

  • Branch_5_0 - the branch for 5.0.x series development.

  • tags - locations for tagged releases

  • JBoss_5_0_0_GA - The 5.0.0.GA release tag.

When you checkout the project the resulting subdirectories are:

aspects

Server aspects

bootstrap

The server bootstrap that loads the JBoss Microcontainer

build

The server build directory which contains the main build.xml. See Section 5.3, “Building with Apache ANT”Building with ANT for more on building the server.

client

A maven project that declares the dependcies for the jboss-all-client.jar

cluster

Clustering related services and integration

component-matrix

A maven project the declares the external dependencies consumed by the server. This is used to build the thirdparty/* library structure.

connector

JCA implementation and integration code.

console

Obsolete admin console. See JBoss Embedded Consoleproject for the future direction of the server admin console.

deployment

JSR88 deployment services code.

ejb3

EJB3 integration code.

embedded

Obsolete JBossAS emebedded project that has been moved toSVN embedded for further development. See the Design of Embedded JBoss forum for design discussions.

hibernate-int

Hibernate deployment integration code.

iiop

JacORB integration code for IIOP support.

j2se

jbossas

JMX remoting and JTS integration code

jmx

javax.management.* package implementations

jmx-remoting

A javax.management.remote.JMXConnector implementation

main

The main() entry point code

management

JSR77 mbean view generation code

mbeans

JBoss JMX extensions

messaging

JBoss Messaging integration code

pom.xml

The JBossAS root maven pom

profileservice

The ProfileService, ManagementView, and DeploymentManager implementations.

security

JBoss Security integration code

server

The legacy EJB2 containers, deployers and detached invokers

spring-int

Spring bean deployment integration

system

ProfileServiceBootstrap implementation and management code

system-jmx

MBean service component model and deployers

testsuite

The JBossAS testsuite

thirdparty

The maven2 thirdparty project which builds the local thirdparty jars used by the ant build.

tomcat

JBossWeb integration code and deployers

tools

build tool jars

varia

Various misc services

webservices

JBossWS integration code and deployers

This section describes additional changes in JBossAS 5.

The ClassPathExtension MBean has been replaced with a VFS classloader definition, see JBAS-5446.

The old JMX-based ServiceBindingManager has been replaced by a POJO-based ServiceBindingManager, see AS5ServiceBindingManager Wiki.

The Farm service from 4.x has been removed, and replaced with a HASingletonDeploymentScanner that integrates with the ProfileService.

JBoss 5 is stricter when it comes to verifying/deploying JavaEE artifacts. EJB3 deployments that run in AS 4.2 may fail in AS5. We have tried to keep the validation messages as accurate as possible in order to help you modify your deployment descriptors/annotations to be in-line with the JavaEE 5 requirements.

A new jboss.server.log.threshold system property can be used to control the log/server.log threshold. It defaults to DEBUG.

The default conf/jboss-log4j.xml configuration now includes the thread name for entries in log/server.log (JBAS-5274).

The transaction manager configuration has moved from conf/jboss-service.xml to deploy/transaction-service.xml.

All the security related configuration files are now grouped under the deploy/security directory (JBAS-5318). The security configuration changes are further described in SecurityInJBoss5 wiki.

JBossAS 5.0.0.GA introduces two new configuration, the standard and the web config. The standard config is the configuration that has been tested for JavaEE compliance. The major differences with the existing configurations is that call-by-value and deployment isolation are enabled by default, along with support for rmiiiop and juddi (taken from the all config). The configurations that are modified include:

The web config is a new experimental lightweight configuration created around JBoss Web that will follow the developments of the JavaEE 6 web profile. Except for the servlet/jsp container it provides support for JTA/JCA and JPA. It also limits itself to allowing access to the server only through the http port. Please note that this configuration is not JavaEE certified and will most likely change in the following releases.

Another notable change is that the majority of the libraries common to the different configurations have moved to a new shared location, JBOSS_HOME/common/lib/. This is so we avoid having multiple copies of the same libraries in the distribution. The location of the common library directory can be controlled by the following properties:

The common library directory is shared by all the configurations except for the minimal config. It is referenced in the very beginning of every configuration's conf/jboss-service.xml:

                
            <classpath codebase="${jboss.server.lib.url}" archives="*"/>
            <classpath codebase="${jboss.common.lib.url}" archives="*"/>
                
            

You can see that the library directory of the individual configurations is still in place, although in some cases it's empty (e.g. JBOSS_HOME/server/default/lib/)