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
 21 Hours

Testimonials (5)

Related Categories