JBoss has very very simple and modular directory structure. You can mold it very easily according to your needs. The pattern of directory structure follows as per following categories,
- JBoss AS 3.x – 4.x Directory Structure
- JBoss AS 5.x – 6.x Directory Structure
- JBoss AS 7.x – Onward Directory Structure
We are going to discuss the structure of JBoss AS 5.x – 6.x. The directory structure of [JBoss AS 5.x - 6.x] is almost similar to [JBoss AS 3.x - 4.x]. However, the major update in [JBoss AS 5.x - 6.x] family is, its refactored stack of Microcontainer.
Moreover on this, The [JBoss AS 5.x - 6.x] family implements EJB3 Specs, runs on JDK6, supports replaceable Messaging broker such as HornetQ Messaging etc.
The directory structure of JBoss AS 7.x is enormously transformed. We will discuss about JBoss AS 7.x family in our upcoming posts. For an immediate post, I am going to write a dedicated post on the difference between the [JBoss AS 3.x - 4.x] and [JBoss AS 5.x - 6.x] family soon.
Lets check out the structure of JBoss AS 5.x – 6.x family,
Description of each directory is as following,
- bin: It contains all the start up, shut down scripts for running JBoss Server.
- client: It contains all the libraries to run client applications.
- common/lib: It contains all the common or shared libraries used by all the profiles of JBoss Server.
- docs: It contains all the definitions of DTDs and XSDs which tells how your xml structure should be, which part of JBoss server configuration. E.g. Datasource XML Files, deployment discriptor xml files etc.
- lib: It contains all the necessary library files required for JBoss bootup. It also contains microcontainer implementation libraries in this directory.
- server: This is the heart of JBoss application server. It contains various pre-built server configurations, or let’s call it “profile“. A profile is nothing but the replica of a JBoss Server. Each profile under sever directory is itself a server or an application server engine that is responsible for running all the containers or specs implementations. Each profile follows similar sub-directory structure. Server directory contains following pre-built profiles by default,
default – The Basic JBoss configuration profile which contains default set of services required for ready-to-use JavaEE application deployment.
all – This is a full Java EE compliant profile having cluster services enabled profile having clustering configurations of JBoss.
standard – The standard JavaEE 5 compliant profile.
web – Lightweight web container profile which is Java EE 6 Web Profile compliant.
minimal – This is a very minimal configuration of JBoss profile which hardly contains basic Java EE services. E.g. it does not contain any web container, EJB container or any JMS broker. This is a rarely used profile.
Each profile inside server directory follows similar sub-directory structure as following,
- conf: It contains all the configuration files related to the current profile. E.g. logging, ports config, container config, jndi config etc.
- data: It contains all the extracted artifacts of deployed application archives.
- deploy: This is the place where you can deploy your application. Along with your application, the core services of JBoss are also deployed under this directory. E.g. Web container service, http invoker service, admin console service, jmx console services etc.
- deployers: It contains all the deployers configurations which defines how JBoss core artifacts should be deployed.
- lib: Library files supporting current profile/application.
- log: All the application and JBoss services logs are logged in this directory.
- tmp: It holds all the temporary data created by application container.
- work: It holds all the temporary data created by web container.
In nutshell, if we compare the structure of JBoss AS with an analogy, then it is something very much similar to a Car,
The server profile is the primary server similar to engine in a car.
The scripts in bin directory helps in start/stops and controlling which is similar to car key and the starring of a car.
The other supportive artifacts such as docs, lib etc helps in running the server which is similar to car wheels.