= Tomcat =
Apache Tomcat is an open source software implementation of the Java Servlet and JavaServer Pages technologies. 

== Installation on Slackware ==
 * cd ~/Downloads
 * wget http://mirrors.fe.up.pt/pub/apache/tomcat/tomcat-7/v7.0.53/bin/apache-tomcat-7.0.53.tar.gz
 * su
 * cp apache-tomcat-7.0.53.tar.gz /opt
 * cd /opt
 * tar xvzf apache-tomcat-7.0.53.tar.gz
 * chown vitor * -R
 * chgrp users * -R
 * exit

== Start Tomcat ==
/opt/apache-tomcat-7.0.53/bin/
./startup.sh
http://localhost:8080/

== Add admin user ==
 * cd /opt/apache-tomcat-7.0.53/conf

Edit tomcat-users.xml
{{{
  <role rolename="admin"/>
  <role rolename="manager"/>
  <role rolename="manager-gui"/>
  <user username="admin" password="12345678" roles="admin,manager,manager-gui"/
}}}
 * ./shutdown.sh
 * ./startup.sh

== WebApps location ==
 * /opt/apache-tomcat-7.0.53/webapps
A WAR file can be copied or exploded in the webapps folder.

== Sample App ==
Download http://localhost:8080/docs/appdev/sample/sample.war and deploy in the webapps folder.
After the deploy the WAR file is exploded.

== Configuration values in web.xml for WAR file ==
Adapted from http://stackoverflow.com/questions/372686/how-can-i-specify-system-properties-in-tomcat-configuration-on-startup

{{{#!highlight xml
<env-entry>
    <env-entry-name>SMTP_PASSWORD</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>abc123ftw</env-entry-value>
</env-entry>
}}}

Get values in code:
{{{#!highlight java
// Obtain our environment naming context
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");

// Look up our data source
String s = (String)envCtx.lookup("SMTP_PASSWORD");
}}}

== Change HTTP from port 8080 to port 8081 and AJP from 8009 to 8010 ==
Edit file conf/server.xml

Change the HTTP Connector from 8080 to 8081. Change AJP1.3 connector from 8009 to 8010.
{{{#!highlight xml
    <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

}}}

== Copy JBoss5 client libs to Tomcat ==
{{{#!highlight bash
cd /opt/jboss-5.1.0.GA/client
cp commons-logging.jar /opt/apache-tomcat-7.0.53/lib
cp concurrent.jar  /opt/apache-tomcat-7.0.53/lib
cp ejb3-persistence.jar hibernate-annotations.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-aop-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-appclient.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-aspect-jdk50-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-common-core.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-deployers-client-spi.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-deployers-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-deployers-core-spi.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-deployers-core.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-deployment.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-ejb3-common-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-ejb3-core-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-ejb3-ext-api.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-ejb3-proxy-clustered-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-ejb3-proxy-impl-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-ejb3-proxy-spi-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-ejb3-security-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-ha-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-ha-legacy-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-iiop-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-integration.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-j2se.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-javaee.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-jsr77-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-logging-jdk.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-logging-log4j.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-logging-spi.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-main-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-mdr.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-messaging-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-remoting.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-security-spi.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-serialization.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-srp-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-system-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jboss-system-jmx-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jbosscx-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jbossjts-integration.jar  /opt/apache-tomcat-7.0.53/lib
cp jbossjts.jar  /opt/apache-tomcat-7.0.53/lib
cp jbosssx-as-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jbosssx-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jmx-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jmx-invoker-adaptor-client.jar  /opt/apache-tomcat-7.0.53/lib
cp jnp-client.jar  /opt/apache-tomcat-7.0.53/lib
cp slf4j-api.jar  /opt/apache-tomcat-7.0.53/lib
cp slf4j-jboss-logging.jar  /opt/apache-tomcat-7.0.53/lib
cp xmlsec.jar /opt/apache-tomcat-7.0.53/lib
}}}