The largest Interview Solution Library on the web


« Previous | 1 | 2 | 3 | Next »

JBoss - Overview


his 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 www.javatechnologycenter.com. 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 www.javatechnologycenter.com. A tutorial on Java EE 5 can be found here www.javatechnologycenter.com. Please visit also the JBoss AS docs [https:/ javatechnologycenter.com pages as we'll be updating the documents with the latest information, and post your questions to the JBossAS 5 User Forum www.javatechnologycenter.com
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.

1.2. Component Highlights

Many key features of JBoss 5 are provided by integrating other standalone JBoss projects:
  • JBoss Microcontainer www.javatechnologycenter.com 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 www.javatechnologycenter.com. The ProfileService also provides the ManagementView for ManagedDeployments/ManagedObjects www.javatechnologycenter.com 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 [https://sourceforge.net/project/ shownotes.php?release_id=645033&group_id=22866] 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.

1.3. Major Component Upgrades

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.
  • JBoss Microcontainer www.javatechnologycenter.com v2.0.2.GA
  • JBoss Transactions www.javatechnologycenter.com v4.4.0.GA
  • JBoss WebServices www.javatechnologycenter.com v3.0.4.GA
  • JBoss Messaging www.javatechnologycenter.com v1.4.1.GA
  • JBoss Web www.javatechnologycenter.com v2.1.1.GA
  • JBoss AOP www.javatechnologycenter.com v2.0.0.SP1
  • JBoss EJB3 www.javatechnologycenter.com v1.0.0-Beta10
  • JBoss Security www.javatechnologycenter.com v2.0.2.SP3
  • Hibernate www.javatechnologycenter.com v3.3.1.GA
  • Hibernate Entity Manager www.javatechnologycenter.com v3.4.0.GA
  • Hibernate Annotations www.javatechnologycenter.com v3.4.0.GA
  • JBoss Cache POJO www.javatechnologycenter.com v3.0.0.GA
  • JBoss Cache Core www.javatechnologycenter.com v3.0.1.GA
  • JGroups www.javatechnologycenter.com v.2.6.7.GA
  • JGroups www.javatechnologycenter.com v.2.6.7.GA
  • JBoss Remoting www.javatechnologycenter.com v.2.5.0.SP2
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.

1.4. Project Structure Changes

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 [http://repository.jboss.org/maven2/]. 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-downloadsources to true either on the command line or in your maven settings.xml.

1.4.1. SVN Information

The project source is rooted at Anonymous SVN [http://anonsvn.jboss.org/repos/jbossas/] for public access, and Committer SVN [https://svn.jboss.org/repos/jbossas/] for committer access.

The directories under these roots follow the usual svn conventions:
  • trunk [http://anonsvn.jboss.org/repos/jbossas/trunk] - the development branch for the next major version
  • branches [http://anonsvn.jboss.org/repos/jbossas/branches] - the location for stable branches associated with release series.
  • Branch_5_0 [http://anonsvn.jboss.org/repos/jbossas/branches/Branch_5_0/] - the branch for 5.0.x series development.
  • tags [http://anonsvn.jboss.org/repos/jbossas/tags] - locations for tagged releases
  • JBoss_5_0_0_GA [http://anonsvn.jboss.org/repos/jbossas/tags/JBoss_5_0_0_GA/] - The 5.0.0.GA release tag.
1.4.2. The Project Directories

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 Console [http://www.jboss.org/jopr/]project 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 [http://anonsvn.jboss.org/repos/jbossas/projects/embedded/] for further development. See the Design of Embedded JBoss [http://www.jboss.com/ index.html?module=bb&op=viewforum&f=266] 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

1.5. Configuration Notes

This section describes additional changes in JBossAS 5.

1.5.1. JBoss VFS

JBoss VFS provides a set of different switches to control it's internal behavior. JBoss AS sets boss.vfs.forceCopy=true by default. To see all the provided VFS flags check out the code of the VFSUtils.java class.
  • jboss.vfs.forceCopy, useCopyJarHandler option, force copy handling of nested jars if true.
  • jboss.vfs.forceVfsJar, true if forcing fallback to vfsjar from default vfszip
  • jboss.vfs.forceNoReaper, noReaper option, true if use of the ZipFileLockReaper background closing of ZipFiles should be disabled. VFS uses an internal caching mechanism to speed up access to deployment artifacts. This means that files in deploy/ remain open as long as they are accessed and then closed by a reaper thread after a 5 seconds inactivity. On window platforms this may cause locking issues if files are re-deployed too quickly. Use jboss.vfs.forceNoReaper=true to disable reaping.
  • jboss.vfs.forceCaseSensitive, true if case sensitivity should be enforced
  • jboss.vfs.optimizeForMemory, true if zip streams should be kept in memory with their entries in ZipEntry.STORED format.
  • jboss.vfs.cache, specifies the org.jboss.util.CachePolicy implementation to use for VFSCache implementations that support an external CachePolicy.
1.5.2. Hibernate Logging

Hibernate-core is now using slf4j-api as a logging facade. To properly integrate that in JBossAS we have created an slf4j-to-jboss-logging adapter (slf4j-jboss-logging.jar) that creates a static binding between sl4j and jboss-logging-spi.

1.5.3. jbossall-client.jar

The client/jbossall-client.jar library that used to bundle the majority of jboss client libraries, is now referencing them instead through the Class-Path manifest entry. This allows swapping included libraries (e.g. jboss-javaee.jar) without having to re-package jbossall-client.jar. On the other hand, it requires that you have jbossall-client.jar together with the other client/*.jar libraries, so they can be found.

1.5.4. EJB3

If using proprietary JBoss/EJB3 annotations, those have moved (since Beta4) into the org.jboss.ejb3.annotation package, EJBTHREE-1099. Those are now included in a new artifact, jboss-ejb3-ext-api.jar

Interoperating with previous JBoss EJB3 implementations may present problems due to serialVersionUIDs issues, EJBTHREE-1118.

Use of JBoss Cache 3.x. has a significantly different API from the 1.x releases used in JBoss AS 4.x and 3.2.x.

@EJB injections should now work from servlets, JBAS-5646.

EJB3 configuration is now controlled by deployers/ejb3.deployer/META-INF/ejb3-deployersjboss- beans.xml as described in http://www.jboss.org/community/docs/DOC-12407

1.5.5. Other JBossAS

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 [http://www.jboss.org/community/ docs/DOC-9038].

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 [http:/ /www.jboss.org/community/docs/DOC-12199] wiki.

1.5.6. Clustering

A new jboss.jgroups.udp.mcast_port property is to control easy configuration of multicast port. It defaults to ${jboss.jgroups.udp.mcast_port:45688}.

Clustering configurations are now in a deploy/clustering subdirectory A separate cache is now used for Clustered SSO (JBAS-4676).

Per webapp configuration of useJK, snapshot mode and snapshot interval (JBAS-3460). Default for useJK is whether jvmRoute is set (JBAS-4961).

Total replication (rather than buddy replication) is the default setting for session replication (JBAS- 5085).

Loopback is now set to true for all JGroups UDP stacks (JBAS-5323).

1.6. New Configurations

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:
  • deployers/ear-deployer-jboss-beans.xml has callByValue and isolated properties set to true
  • The "jboss:service=Naming" mbean in conf/jboss-service.xml has CallByValue set to true.
  • conf/jndi.properties has
    java.naming.factory.initial=org.jboss.iiop.naming.ORBInitialContextFactory
  • There are additional JacORB configuration files and jars:
  • conf/jacorb.properties
  • deploy/iiop-service.xml
  • lib/avalon-framework.jar
  • lib/jacorb.jar
  • A UDDI implementation deployed as deploy/juddi-service.sar
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:
  • jboss.common.base.url defaulting to ${jboss.home.url}/common
  • jboss.common.lib.url defaulting to ${jboss.common.base.url}/lib
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/)
« Previous | 1 | 2 | 3 | Next »


copyright © 2014 - all rights riserved by javatechnologycenter.com