Gerrit Code Review - J2EE Installation
======================================

Description
-----------

Gerrit binary distributions include a standalone Jetty servlet
container, but are packaged as a standard WAR file to permit easy
deployment to other existing container installations if using the
standalone daemon is not desired.

Gerrit Code Review can be installed into any J2EE servlet container,
including popular open source containers such as Jetty or Tomcat, or
any commercial server which supports the J2EE servlet specification.


Installation
------------

* Complete the link:install.html#createdb[database setup] and
  link:install.html#init[site initialization] tasks described
  in the standard installation documentation.

* Stop the embedded deamon that was automatically started by 'init':
+
----
  review_site/bin/gerrit.sh stop
----

* Configure JNDI DataSource 'jdbc/ReviewDb'.
+
This DataSource must point to the database you created above.
Don't forget to ensure your JNDI configuration can load the
necessary JDBC drivers.  You may wish to ensure connection pooling
is configured and enabled within the DataSource.

* Deploy the 'gerrit.war' file to your application server.
+
The deployment process differs between servers, but typically this
can be accomplished by copying 'gerrit.war' into the 'webapps/'
subdirectory of the container's installation.

* ('Optional') Install Bouncy Castle Crypto API
+
If you enabled Bouncy Castle Crypto during 'init', copy the JAR
from `'$site_path'/lib` into your servlet container's extensions
directory so it's available to Gerrit Code Review.


Jetty 7.x
---------
These directions will configure Gerrit as the default web
application, allowing URLs like `http://example.com/4543` to jump
directly to change 4543.

Download and unzip a release version of Jetty.  From here on we
call the unpacked directory `$JETTY_HOME`.

* link:http://www.eclipse.org/jetty/downloads.php[Jetty Downloads]

If this is a fresh installation of Jetty, move into the installation
directory and do some cleanup to remove the sample webapps:
----
  cd $JETTY_HOME
  rm -rf contexts/* webapps/*
----

Copy Gerrit Code Review into the deployment:
----
  cp ~/gerrit.war webapps/gerrit.war
  java -jar webapps/gerrit.war cat extra/jetty7/gerrit.xml >contexts/gerrit.xml
----

Install the required additional libraries by copying them into the
`'$JETTY_HOME'/lib/ext` directory:

----
  cp ../review_db/lib/* lib/ext/
  java -jar webapps/gerrit.war cat lib/commons-dbcp-1.2.2.jar >lib/ext/commons-dbcp-1.2.2.jar
  java -jar webapps/gerrit.war cat lib/commons-pool-1.5.4.jar >lib/ext/commons-pool-1.5.4.jar
  java -jar webapps/gerrit.war cat lib/h2-1.2.128.jar >lib/ext/h2-1.2.128.jar
  java -jar webapps/gerrit.war cat lib/postgresql-8.4-701.jdbc4.jar >lib/ext/postgresql-8.4-701.jdbc4.jar
----

Edit `'$JETTY_HOME'/contexts/gerrit.xml` to correctly configure
the database and outgoing SMTP connections, especially the user
and password fields.

If OpenID authentication (or certain enterprise single-sign-on
solutions) is being used, you may need to increase the
header buffer size parameter, due to very long header lines
being used by the OpenID authentication handshake process.
Add the following to `'$JETTY_HOME'/etc/jetty.xml` under
`org.eclipse.jetty.server.nio.SelectChannelConnector`:

----
  <Set name="headerBufferSize">16384</Set>
----

To start automatically when the system boots, create a start
script and modify it for your configuration:

----
  java -jar webapps/gerrit.war --cat extra/jetty7/gerrit-jetty.sh >/etc/init.d/gerrit-jetty
  vi /etc/init.d/gerrit-jetty
----

[TIP]
Under Jetty, restarting the web application (e.g. after modifying
`system_config`) is as simple as touching the context config file:
`'$JETTY_HOME'/contexts/gerrit.xml`


GERRIT
------
Part of link:index.html[Gerrit Code Review]
