Chapter 1. Installing JBoss
Before installing the server, you need to check your system to make sure you have a suitable Java
installation. JBoss 4 requires either a Java 1.4 or Java 5 (sometimes referred to as Java 1.5) JVM (Java
Virtual Machine) to run. Java 5 is only required to use the newer simplified EJB3 technologies. The choice
of JVMs is yours otherwise, but we do recommend considering the Java 5 JVM where possible to take advantage
of the latest JVM performance improvements and monitoring capabilities. No matter what JVM is chosen, you
should generally prefer the latest stable versions and keep an eye on future bug fix releases for issues
that might affect your installation.
To verify your Java environment execute the
java -version command. This will ensure
that the
java executable is in your path and that you are using the intended Java
version. The following output shows a Java 5 (sometimes called Java 1.5) JVM. If you don't see the
appropriate version, check your JVM installation instructions.
$ java -version
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_02-56)
Java HotSpot(TM) Client VM (build 1.5.0_02-36, mixed mode, sharing)
JBoss AS is distributed as part of the Red Hat JBoss Media Kit. Recent JBoss releases are also available
(both in binary and source form) online from the JBoss AS downloads page,
http://labs.jboss.org/portal/jbossas/download/, and as part of the JEMS distribution, available
online at
http://labs.jboss.com/portal/jemsinstaller/downloads.
JBoss is released in two forms. The first is a ZIP or tgz archive containing a base JBoss installation.
We'll talk about the ZIP version, as any system containing a Java installation will have the tools to
extract the archive. The gzipped tar file requires a gnutar-compatible tar program that can handle the long
pathnames in the archive. The default tar binaries on Solaris and OS X do not currently support the long
pathnames.
The standard JBoss 4.0.4 ZIP distribution is named
jboss-4.0.4.GA.zip. If service pack
releases later become available, they will contain the
SP designation,
jboss-4.0.4SP1.zip for example. You can use the JDK
jar tool (or
any other ZIP extraction tool) to extract the archive contents into a directory of your choice. It does not
matter where on your system you install JBoss. Note, however, that installing JBoss into a directory that
has a name that contains spaces causes problems on some platforms with Sun-based VMs.
The resulting JBoss installation is a raw installation containing the entire set of JBoss AS services in a
completely unconfigured state. It is the quickest way to get a runnable JBoss instance, but the latter work
to configure the server can be quite intensive. JBoss now provides a GUI installer that can simplify the
installation process. In addition to the basic installation, the installer allows you to select the which
services are installed, ensuring all service dependencies are met, secure the installation and configure a
default datasource. Using a custom JBoss install created by the installer can greatly simplify the
installation and configuration of JBoss.
The installer can be run directly from a web browser using Java Web Start or can be downloaded as an
executable JAR file. If you choose the Java Web Start option, you only need to click the Run Installer link
for the desired JBoss version on the downloads page. The Java Web Start installer is quick and easy.
However, options like command-line install will require manually downloading and running the installer
executable JAR. On many operating system, you can run executable JARs by double-clicking them. If your
system doesn't support that, you can run the installer directly from the command line: (The remainder of
this guide will assume the JEMS 1.2.0 installer, available from
http://labs.jboss.com/portal/jemsinstaller/downloads)
$ java -jar jems-installer-1.2.0.jar
When you launch the installer, you will be given the option to select the installer language as shown in
Figure 1.1, “The installer language selection screen.”. This screen only selects the language that the installer will
display choices in and has no effect on the language used by JBoss or the applications deployed in JBoss.
After language selection, the installer will present a series of screens presenting the release notes and
asking you to accept the JBoss license. JBoss is completely open source and is released under the GNU LGPL
license. The license screen (shown in
Figure 1.2, “The license screen”) displays the full text of the LGPL
license. More information on why JBoss uses the LGPL license and the advantages the LGPL provides to JBoss
users can be found at
http://www.jboss.com/company/licensing.
The installer will ask for the directory to use for the installation. This is shown in
Figure 1.3, “Selecting the installation directory”. The installer does not write the installation directory into any of the
scripts or into any form of registry, so you will be free to move or rename the JBoss installation directory
after installation. On some platforms, installation directories that contains spaces can cause problems, so
we recommend sticking to simple directory names.
After that you able to select the starting server configuration set, as shown in
Figure 1.4, “Selecting the installation group”.
The starting configuration determine which sets of packages are available for installation. The following
table describes each of the configuration sets.
Table 1.1. The JBoss AS installer configuration sets
| Name | Description | Notes |
| all | A full J2EE 1.4 server profile with enterprise extensions such as clustering and IIOP. | |
| default | A base J2EE 1.4 server profile. | |
| ejb3 | An EJB3 profile supporting the full EJB3 specification with Tomcat | This requires a Java 5 runtime and is not a J2EE 1.4 compatible configuration. |
| ejb3-clustered | An EJB3 profile supporting the full EJB3 specification with Tomcat and clustering. | This requires a Java 5 runtime and is not a J2EE 1.4 compatible configuration. |
| jms | A JMS 1.1 server profile | This is not a J2EE 1.4 compatible configuration. |
| minimal | A minimal JMX microkernel | This is not a J2EE 1.4 compatible configuration. |
| portal | A JBoss Portal 2.4 profile | This is not a J2EE 1.4 compatible configuration. |
| tomcat | A Servlet 2.4 container profile | This is not a J2EE 1.4 compatible configuration. |
After selecting the configuration set, you have the option to further customize the installation,
customizing the set of services installed.
Figure 1.5, “Selecting the packages to install” shows the package
selection screen. The installer knows the dependencies between services and will not allow you to configure
services in an incompatible way. This is much safer than the trial and error approach of configuring
services by hand from a raw ZIP install. When choosing configuration sets, be aware that you can not add
packages that are not a part of the selected configuration set. If you wanted a simple web container (the
tomcat configuration) that also had JMS support (the jms configuration), it would be necessary to go to a
larger configuration, such as the default configuration, and remove the unwanted packages. There are some
combinations of JEMS components that are not supported directly through the installer.
The following screen (
Figure 1.6, “Name the configuration”) allows for the customization of the server
configuration name. Unless you need to create multiple configurations, you should use a configuration name
of
default. Using any other configuration name requires you to start JBoss with the
-c option to specify the configuration JBoss should use.
Almost all applications require a datasource to connect to a back-end database. JBoss provides an
embedded Hypersonic database along with a default datasource to connect applications to. Being able to run
applications out of the box makes JBoss very developer friendly. All projects will eventually need to move
to a more capable database, but most will choose to do so at the very beginning of the project. The
datasource configuration screen, shown in
Figure 1.7, “Configure the default datasource”, gives you the option to use
the default hypersonic datasource to configure a replacement datasource.
If you want to configure the datasource, choose the configure option and select the database type. You'll
then be given the opportunity to enter database connection information as shown in
Figure 1.8, “Configure the default datasource”.
Note that when installing a datasource this way, you must place the correct JDBC driver JAR file the lib
directory of your server configuration. The datasource will not be usable until this is done. See
Chapter 3, Directory Structure for more information about JBoss directory structure, including the lib directory.
The next screen allows you to enable applications isolation, completely separating the classloading space
of all applications. Application isolation can be helpful in some instances, but it comes with the cost of
requiring slow pass-by-value semantics for passing data between applications. In most cases, it is
preferable to use loader repositories to control the sharing of classes on an application-by-application
basis rather than enabling isolation for the entire server.
When installed from a raw archive, all JBoss services are left in a developer-friendly state requiring no
authentication to access most JBoss services, including administrative services. The installer gives you a
chance to secure those services on the security screen, shown in
Figure 1.10, “JBoss security settings”. It is
recommended that you enable security for all services. You will be required to enter a password for the
admin user. We strongly recommend not using the default password, "admin".
The following screens will ask you to confirm your installation and then show you the installation
progress. When your installation is done, the completion screen (
Figure 1.11, “The installation is completed”) gives you
the option to save an installation script that can be used to recreate your installation configuration. The
installation script will be covered in
Chapter 2, Command-line installation
Your JBoss installation can be found in the directory that you specified at the beginning of the install.
The installer image may contain different services than the archive distribution, depending on the type of
installation performed. However, the basic structure and layout of all JBoss instances are the same. The
JBoss directory structure will be explained in
Chapter 3, Directory Structure.
Chapter 3. Directory Structure
Installing the JBoss distribution creates a
jboss-4.0.4 directory that contains server
start scripts, JARs, server configuration sets and working directories. You need to know your way around the
distribution layout to locate JARs for compiling code, updating configurations, deploying your code, etc.
Figure 3.1, “The JBoss AS directory structure” illustrates the installation directory of the JBoss server.
Throughout this book we refer to the top-level
jboss-4.0.4 directory as the
JBOSS_DIST directory. In
Figure 3.1, “The JBoss AS directory structure”, the
default server configuration file set is shown expanded. It contains a number of
subdirectories:
conf,
data,
deploy,
lib,
log, and
tmp. In a clean installation, only
the
conf,
deploy, and
lib directories will exist.
Several of the locations may be overridden. For these locations, the
org.jboss.system.server.ServerConfig interface constant and its corresponding system
property string are shown. The names ending in
URL correspond to locations that can be
specified using a URL to access remote locations, for example, HTTP URLs against a web server.
Table 3.1, “The JBoss top-level directory structure” shows the top-level directories and their function.
Table 3.1. The JBoss top-level directory structure
| Directory | Description |
| bin | All the entry point JARs and start scripts included with the JBoss distribution are
located in the bin directory. |
| client | The JARs that are required for clients that run outside of JBoss are located in the
client directory. |
| server | The JBoss server configuration sets are located under the
server directory. The default server configuration set is the
server/default set. JBoss ships with minimal,
default and all configuration sets. The
subdirectories and key configuration files contained default
configuration set are discussed in more detail in Chapter 4, The Default Server Configuration File Set |
| lib | The lib directory contains startup JARs used by JBoss. Do not place
your own libraries in this directory. |
Table 3.2, “The JBoss server configuration directory structure” shows the directories inside of the server configuration directory
and their function.
Table 3.2. The JBoss server configuration directory structure
| Directory | Description |
| conf | The conf directory contains the jboss-service.xml
bootstrap descriptor file for a given server configuration. This defines the core services
that are fixed for the lifetime of the server. |
| data | The data directory is available for use by services that want to
store content in the file system. |
| deploy | The deploy directory is the default location the hot deployment
service looks to for dynamic deployment content. This may be overridden through the
URLDeploymentScanner URLs attribute. |
| lib | The lib directory is the default location for static Java libraries
that should not be hot deployed. All JARs in this directory are loaded into the shared
classpath at startup. |
| log | The log directory is the directory log files are written to. This may
be overridden through the conf/log4j.xml configuration file. |
| tmp | The tmp directory is used by JBoss to store temporarily files such as
unpacked deployments. |
The contents of the
conf and
deploy directories will be shown in
the following section.
Chapter 5. Starting and Stopping JBoss
After you have installed the JBoss distribution, it is wise to perform a simple startup test to validate
that there are no major problems with your Java VM/operating system combination. To test your installation,
move to the
bin directory and execute the
run.bat or
run.sh script, as appropriate for your operating system. Your output should look like the
following and contain no error or exception messages:
$ sh run.sh
=========================================================================
JBoss Bootstrap Environment
JBOSS_HOME: /tmp/jboss-4.0.4.GA
JAVA: java
JAVA_OPTS: -server -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000 -Dprogram.name=run.sh
CLASSPATH: /tmp/jboss-4.0.4.GA/bin/run.jar:/lib/tools.jar
=========================================================================
23:28:48,561 INFO [Server] Starting JBoss (MX MicroKernel)
...
23:29:09,249 INFO [Server] JBoss (MX MicroKernel) [4.0.4.GA (build:
CVSTag=JBoss_4_0_4_GA date=200605151000)] Started in 20s:679ms
If your output is similar to this (accounting for installation directory differences), you are now be
ready to use JBoss.
Using
run.sh without any arguments starts the server using the
default server configuration file set. To start with an alternate configuration file set,
you pass in the name of the directory under
JBOSS_DIST/server that you want to use as the
value to the
-c command line option. For example, to start with the
minimal configuration file set you would specify:
$ ./run.sh -c minimal
...
23:37:41,582 INFO [Server] JBoss (MX MicroKernel) [4.0.4.GA (build:
CVSTag=JBoss_4_0_4_GA date=200605151000)] Started in 2s:212ms
The
run script supports the following options:
usage: run.sh [options]
-h, --help Show this help message
-V, --version Show version information
-- Stop processing options
-D[=] Set a system property
-d, --bootdir= Set the boot patch directory; Must be absolute or url
-p, --patchdir= Set the patch directory; Must be absolute or url
-n, --netboot= Boot from net with the given url as base
-c, --configuration= Set the server configuration name
-B, --bootlib= Add an extra library to the front bootclasspath
-L, --library= Add an extra library to the loaders classpath
-C, --classpath= Add an extra url to the loaders classpath
-P, --properties= Load system properties from the given url
-b, --host= Bind address for all JBoss services
-g, --partition= HA Partition name (default=DefaultDomain)
-u, --udp= UDP multicast address
-l, --log= Specify the logger plugin type
To shutdown the server, you simply issue a Ctrl-C sequence in the console in which JBoss was started.
Alternatively, you can use the
shutdown.sh command.
[bin]$ ./shutdown.sh -S
The
shutdown script supports the following options:
A JMX client to shutdown (exit or halt) a remote JBoss server.
usage: shutdown [options]
options:
-h, --help Show this help message (default)
-D[=] Set a system property
-- Stop processing options
-s, --server= Specify the JNDI URL of the remote server
-n, --serverName= Specify the JMX name of the ServerImpl
-a, --adapter= Specify JNDI name of the MBeanServerConnection to use
-u, --user= Specify the username for authentication
-p, --password= Specify the password for authentication
operations:
-S, --shutdown Shutdown the server
-e, --exit= Force the VM to exit with a status code
-H, --halt= Force the VM to halt with a status code
Use of the shutdown command requires a server configuration that contains
jmx-invoker-service.xml service, so the shutdown command cannot be used with the
minimal configuration.