Chapter 10. Container architecture - design notes

Table of Contents

Introduction
Client Objects
JMX - foundation of JBoss infrastructure
ContainerInvoker - Container entry point
Container
Transaction support
Security
Tracing the call through container

Author:Vladimir Blagojevic <[email protected]> Rickard Oberg <[email protected]>

Introduction

JBoss 1.0 (a.k.a EJBoss/NextGen)

JBoss 1.0, a.k.a EJBoss was started in March 1999 and reached 1.0 status in February 2000. The long march towards the promised land of 1.0'ness was not taken lightly. JBoss 1.0 established itself as a technological leader with many ease of use features pioneered here before finding their way to the broader audience of commercial container developers. Mostly thanks to Rickard Oberg, the design of 1.0 introduced many standard setting features such as Proxy based deployment and distributed containers.

Marc Fleury had been working for almost 6 months on a traditional, compilation heavy approach to the container design, when Rickard came along with the logical skeletons and the dynamic proxies as the basis for a radically new design. Marc started coding feverishly and codenamed the container "NextGen" truly believing it was a blueprint of things to come, a "next generation" container.

JBoss 2.0

JBoss 2.0 that we are about to explore is truly a 3rd generation container. It takes the patterns and ideas that were investigated in 1.0 and then does it right. Designed from the ground up to be modular, JBoss introduces yet again many ground breaking features, such as automated re-deploy, but most importantly a plug-in approach to container implementation. Borrowing from the success that met with Linux 2.0 and a it's modular approach to Open Source software implementation, JBoss 2.0 is meant to be developed by distributed parties each working on a cleanly separated part of the server.

JBoss 2.0 also standardizes on JMX, the Java Management eXtension (TM) to offer standard interfaces to the management of its components as well as the applications deployed on it. Ease of use is still the number one priority here at JBoss, and JBoss 2.0 will set a new standard.

We have to admit that it was hard to decide where to begin and how to proceed on this journey through JBoss. Although it's architecture is clean, modular, and a mecca of best programming practices we know of, the inhereted complexity of a distributed system carries it's weight.

In order to understand how JBoss 2.0 works one could go many ways. The approach we chose could be loosely described as "follow the call". We'll not dwelve into container architecture directly, but in contrast will build the foundation first on understanding client object structures, how they pass the call to container over the network layer. Finally, before we discuss container architecture in detail, we'll focus on the container entry point.

With regard to container architecture, we'll explore all the slices from the container entry point to database access structures, focusing on various patterns, the renowned container plugin-in approach, and how they relate to key points in EJB in general.

Now, let's not spoil all the fun parts. Put your helmets on, we are going straight to the trenches!!!