| = 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 daemon 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. | 
 |  | 
 | * ('Optional') link:config-auto-site-initialization.html[ | 
 | Configure Automatic Site Initialization on Startup] | 
 |  | 
 |  | 
 | == 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` | 
 |  | 
 | [[tomcat]] | 
 | == Tomcat 7.x | 
 |  | 
 | If a reverse proxy is used in front of Tomcat then see the | 
 | link:config-reverseproxy.html[configuration instructions for encoding | 
 | slashes]. Otherwise Tomcat must be configured to encode slashes, by adding | 
 | `-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true` to the | 
 | `CATALINA_OPTS` environment variable. | 
 |  | 
 | Excerpt from the | 
 | link:https://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html[ | 
 | documentation]: | 
 |  | 
 | ---- | 
 | Property org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH: | 
 | If this is true '%2F' and '%5C' will be permitted as path delimiters. | 
 | If not specified, the default value of false will be used. | 
 | ---- | 
 |  | 
 | GERRIT | 
 | ------ | 
 | Part of link:index.html[Gerrit Code Review] | 
 |  | 
 | SEARCHBOX | 
 | --------- |