Overview
Teaches attendees the fundamentals of administering Apache Tomcat and other Java EE environments.
The course is a mixture of lectures and hands-on exercises. Delegates learn by doing, with immediate opportunities to apply the material they learn to real-world problems.
Course Outline
Introduction to the Java Platform
- The JVM, JRE, and JDK
- Java SE versus EE
- Apache Tomcat as a lightweight servlet/JSP container, and how this differs from full-blown Java EE application servers such as WebLogic, WebSphere, JBoss, and GlassFish
Architecture of Applications installed to Tomcat
- Understanding classes versus JARs
- Servlets
- JSPs
- JavaBeans
- JNDI and datasources
- Resources that your applications may call on other servers (web services, EJBs, etc.)
Installing Tomcat
- Installing the Java Runtime Environment (JRE)
- Tweaking the JRE for performance
- Performing the actual Tomcat installation
Examining the Tomcat installation directories
- bin
- conf
- lib
- logs
- temp
- webapps
- work
Configuring Tomcat
- server.xml (detailed walkthrough)
- web.xml
- context.xml
Deploying Java EE Applications
- Packaging JARs for deployment to Tomcat
- Packaging WARs for deployment to Tomcat
- Application server-neutral configuration versus application server-specific configuration
- Overview of EARs and other archive types not supported by Tomcat, but supported by other Java EE application servers
- Versioning Java EE applications
- Managing the deployment of updated applications
Tomcat Valves
- AccessLog and FastCommonAccessLog
- RequestFilterValve
- SingleSignOnValve (by request)
- RequestDumperValve (by request)
Memory management and JMX monitoring
- Understanding Java garbage collection
- Using JAVA_OPTS, JMX and JConsole to monitor and tune Tomcat memory usage
- Sizing Tomcat’s JVM memory heap
- Using JMX and JConsole to configure Tomcat via Tomcat’s MBeans
- Updating Tomcat’s configuration via JMX “on the fly” without restarting Tomcat
- Load testing with JMeter
- Using VisualVM (new monitoring tool built into JDK 6) and PSI Probe
- Controlling JMX MBeans via Ant
Logging and Troubleshooting
- JULI logging
- log4j logging
- Understanding exceptions and thread dumps
- Troubleshooting errors that occur in Tomcat
- Troubleshooting errors generated by your deployed applications
- Troubleshooting strategies applicable to application servers other than tomcat
Connecting databases with Tomcat applications
- Classic JDBC approach
- Better approach: JNDI resources
- Setting up and monitoring database connection pools
Security
- File system security
- Java security manager
- Realms, authentication, and authorization
- SSL
Java VM and Tomcat Performance tuning strategies
- Additional JVM tuning tips
- Enabling parallel garbage collection
- Building native connectors
- Disabling/removing unneeded applications
- Tuning incoming connections and database connection pools
- Turning off Jasper development mode
- Precompiling JSPs
- Preloading servlets
- Application-specific tuning suggestions
- Tuning levers available in other application servers
The World Beyond Tomcat: Understanding Java EE Applications
- Explanation of the Java EE APIs not supported by Tomcat: EJB, JMS, and many others
- 3rd party application frameworks overview (what they are and what administrators should know): Spring, Struts 1/Struts 2, JSF (including a discussion of ICEfaces, RichFaces, etc.)
- Data tier frameworks and what administrators should know (Hibernate, JPA, etc.)
- Features offered by WebLogic, WebSphere, and JBoss that are not found in Tomcat
Tomcat Other Features
- Memory leak prevention and detection
- Servlet 3.0, JSP 2.2, and EL 2.2 support (and the practical implications of this for Tomcat admins)
- Cross-site request forgery prevention (and how to configure)
- How Tomcat 7’s new session management features prevent session fixation attacks
- Alias support (which allow static content to be stored outside the WAR file)
Running Tomcat behind Apache httpd or IIS [this section would be taught using your web server and connector module of choice]
- Why run Tomcat behind Apache httpd or IIS?
- Installing mod_jk (Apache or Tomcat) or mod_proxy_ajp and mod_proxy_balancer (Apache 2.2 or later only)
- Proxying traffic to Tomcat via AJP
- Monitoring the status of your web server’s connection to Tomcat
- Load balancing Tomcat via mod_jk or mod_proxy_balancer
Tomcat Clustering
- Configuring mod_jk (in Apache or IIS) or mod_proxy_balancer (Apache 2.2 or later only) as a load balancer
- Hardware load balancing as an alternative to software load balancing
- Sticky sessions
- Configuring a shared session back-end
- FileStore/JDBCStore (older approach, generally not recommended)
- Using the <Cluster> tag
- Configuring the application to be distributable
- Setting up and testing failover