PROFESSIONAL APACHE TOMCAT 5
CONTENTS CHAPTER 1: APACHE AND JAKARTA TOMCAT HUMBLE BEGINNINGS: THE APACHE PROJECT THE APACHE SOFTWARE FOUNDATION THE JAKARTA PROJECT TOMCAT OTHER JAKARTA SUBPROJECTS DISTRIBUTING TOMCAT COMPARISON WITH OTHER LICENSES GPL LGPL OTHER LICENSES THE BIG PICTURE: J2EE JAVA APIS THE J2EE APIS J2EE APPLICATION SERVERS “AGREE ON STANDARDS, COMPETE ON IMPLEMENTATION” TOMCAT AND APPLICATION SERVERS TOMCAT AND WEB SERVERS SUMMARY CHAPTER 2: JSP AND SERVLETS FIRST CAME CGI THEN SERVLETS WERE BORN SERVLET CONTAINERS ACCESSING SERVLETS AND ON TO JSPS JSP TAG LIBRARIES WEB APPLICATION ARCHITECTURE JAVA SITE ARCHITECTURE CHAPTER 3: TOMCAT INSTALLATION INSTALLING THE JAVA VIRTUAL MACHINE INSTALLING THE SUN JVM ON WINDOWS INSTALLING TOMCAT TOMCAT WINDOWS INSTALLER FINISHING THE INSTALLATION SETTING ENVIRONMENT VARIABLES TESTING THE INSTALLATION INSTALLING TOMCAT ON WINDOWS USING THE ZIP FILE INSTALLING TOMCAT ON LINUX THE TOMCAT INSTALLATION DIRECTORY THE BIN DIRECTORY THE SHARED DIRECTORY THE COMMON DIRECTORY THE CONF DIRECTORY THE LOGS DIRECTORY THE SERVER DIRECTORY THE WEBAPPS DIRECTORY THE WORK DIRECTORY TROUBLESHOOTING AND TIPS THE PORT NUMBER IS IN USE RUNNING MULTIPLE INSTANCES A PROXY IS BLOCKING ACCESS CHAPTER 4: TOMCAT ARCHITECTURE AN OVERVIEW OF TOMCAT ARCHITECTURE THE SERVER THE SERVICE THE REMAINING CLASSES IN THE TOMCAT ARCHITECTURE CHAPTER 5: BASIC TOMCAT CONFIGURATION TOMCAT 5 CONFIGURATION ESSENTIALS TOMCAT 5 WEB-BASED CONFIGURATOR ENABLING ACCESS TO CONFIGURATOR FILES IN $CATALINA_HOME/CONF BASIC SERVER CONFIGURATION SERVER CONFIGURATION VIA THE DEFAULT SERVER XML OPERATING TOMCAT IN APPLICATION SERVER CONFIGURATION WEB APPLICATION CONTEXT DEFINITIONS AUTHENTICATION AND THE TOMCAT-USERS XML FILE THE DEFAULT DEPLOYMENT DESCRIPTOR – WEB XML HOW SERVER XML, CONTEXT DESCRIPTORS, AND WEB XML WORK TOGETHER FINE-GRAINED ACCESS CONTROL: CATALINA POLICY CATALINA PROPERTIES: FINER-GRAINED CONTROL OVER ACCESS CHECKS CONFIGURATOR BOOTSTRAPPING AND THE FUTURE OF TOMCAT CONFIGURATION A FINAL WORD ON DIFFERENTIATING BETWEEN CONFIGURATION AND MANAGEMENT CHAPTER 6: WEB APPLICATION CONFIGURATION THE CONTENTS OF A WEB APPLICATION PUBLIC RESOURCES THE WEB-INF DIRECTORY THE META-INF DIRECTORY THE DEPLOYMENT DESCRIPTOR (WEB XML) SERVLET 2 3-STYLE DEPLOYMENT DESCRIPTOR SERVLET 2 4-STYLE DEPLOYMENT DESCRIPTOR CHAPTER 7: WEB APPLICATION ADMINISTRATION SAMPLE WEB APPLICATION TOMCAT MANAGER APPLICATION ENABLING ACCESS TO THE MANAGER APPLICATION MANAGER APPLICATION CONFIGURATION TOMCAT MANAGER: USING HTTP REQUESTS LIST DEPLOYED APPLICATIONS INSTALLING/DEPLOYING APPLICATIONS IN TOMCAT 4 X DEPLOYING A NEW APPLICATION INSTALLING A NEW APPLICATION INSTALLING/DEPLOYING APPLICATIONS IN TOMCAT 5 X DEPLOYING A NEW APPLICATION REMOTELY RELOADING AN EXISTING APPLICATION LISTING AVAILABLE JNDI RESOURCES LISTING AVAILABLE SECURITY ROLES LISTING OS AND JVM PROPERTIES STOPPING AN EXISTING APPLICATION STARTING A STOPPED APPLICATION REMOVING AN INSTALLED APPLICATION (TOMCAT 4 X ONLY) UNDEPLOYING A WEB APPLICATION DISPLAYING SESSION STATISTICS QUERYING TOMCAT INTERNALS USING THE JMX PROXY SERVLET SETTING TOMCAT INTERNALS USING THE JMX PROXY SERVLET TOMCAT MANAGER: WEB INTERFACE DISPLAYING TOMCAT SERVER STATUS MANAGING WEB APPLICATIONS DEPLOYING A WEB APPLICATION TOMCAT MANAGER: MANAGING APPLICATIONS WITH ANT POSSIBLE ERRORS SECURITY CONSIDERATIONS TOMCAT DEPLOYER CHAPTER 8: ADVANCED TOMCAT FEATURES VALVES — INTERCEPTION TOMCAT-STYLE STANDARD VALVES ACCESS LOG IMPLEMENTATION SCOPE OF LOG FILES TESTING THE ACCESS LOG VALVE SINGLE SIGN-ON IMPLEMENTATION MULTIPLE SIGN-ON WITHOUT THE SINGLE SIGN-ON VALVE CONFIGURING A SINGLE SIGN-ON VALVE RESTRICTING ACCESS VIA A REQUEST FILTER REMOTE ADDRESS FILTER REMOTE HOST FILTER CONFIGURING REQUEST FILTER VALVES REQUEST DUMPER VALVE PERSISTENT SESSIONS THE NEED FOR PERSISTENT SESSIONS CONFIGURING A PERSISTENT SESSION MANAGER JNDI RESOURCE CONFIGURATION WHAT IS JNDI? TOMCAT AND JNDI TYPICAL TOMCAT JNDI RESOURCES CONFIGURING RESOURCES VIA JNDI CONFIGURING A JDBC DATASOURCE CONFIGURING MAIL SESSIONS CONFIGURING LIFECYCLE LISTENERS LIFECYCLE EVENTS SENT BY TOMCAT COMPONENTS THE <LISTENER> ELEMENT TOMCAT 5 LIFECYCLE LISTENERS CONFIGURATION CHAPTER 9: CLASS LOADERS CLASS LOADER OVERVIEW STANDARD J2SE CLASS LOADERS MORE ON CLASS LOADER BEHAVIOR CREATING A CUSTOM CLASS LOADER SECURITY AND CLASS LOADERS CLASS LOADER DELEGATION CORE CLASS RESTRICTION SEPARATE CLASS LOADER NAMESPACES SECURITY MANAGER TOMCAT AND CLASS LOADERS SYSTEM CLASS LOADER COMMON CLASS LOADER CATALINA CLASS LOADER SHARED CLASS LOADER WEB APPLICATION CLASS LOADER DYNAMIC CLASS RELOADING COMMON CLASS LOADER PITFALLS PACKAGES SPLIT AMONG DIFFERENT CLASS LOADERS SINGLETONS XML PARSERS CHAPTER 10: HTTP CONNECTORS HTTP CONNECTORS TOMCAT 4 0: HTTP/1 1 CONNECTOR TOMCAT 4 1: COYOTE HTTP/1 1 CONNECTOR TOMCAT 5 X: COYOTE HTTP/1 1 CONNECTOR CONFIGURING TOMCAT FOR CGI SUPPORT CONFIGURING TOMCAT FOR SSI SUPPORT RUNNING TOMCAT BEHIND A PROXY SERVER PERFORMANCE TUNING CHAPTER 11: WEB SERVER CONNECTORS REASONS FOR USING A WEB SERVER CONNECTOR ARCHITECTURE COMMUNICATION PATHS CONNECTOR PROTOCOLS CHOOSING A CONNECTOR JSERV WEBAPP CHAPTER 12: TOMCAT AND APACHE SERVER INTRODUCING THE JK2 CONNECTOR THE MOD_ JK2 APACHE MODULE THE APACHE JSERV PROTOCOL (AJP) COYOTE JK2 CONNECTOR UNDERSTANDING TOMCAT WORKERS PLUG-IN VERSUS IN-PROCESS MULTIPLE TOMCAT WORKERS TYPES OF WORKERS CONNECTING TOMCAT WITH APACHE INSTALLING THE APACHE MOD_ JK2 MODULE CONFIGURING THE AJP 1 3 CONNECTOR IN SERVER XML CONFIGURING TOMCAT WORKERS ADDING DIRECTIVES TO LOAD THE JK2 MODULE (HTTPD CONF) CONFIGURING THE JK2 PROPERTIES FILE TESTING THE FINAL SETUP CONFIGURING SSL CONFIGURING SSL IN TOMCAT CONFIGURING SSL IN APACHE TESTING THE SSL-ENABLED APACHE-TOMCAT SETUP TOMCAT LOAD BALANCING WITH APACHE CHANGING CATALINA_HOME IN THE TOMCAT STARTUP FILES SETTING DIFFERENT AJP CONNECTOR PORTS SETTING DIFFERENT SERVER PORTS DISABLING THE COYOTE HTTP/1 1 CONNECTOR SETTING THE JVMROUTE IN THE STANDALONE ENGINE COMMENTING OUT THE CATALINA ENGINE TOMCAT WORKER CONFIGURATION IN JK2 PROPERTIES TOMCAT WORKER CONFIGURATION IN WORKERS2 PROPERTIES SAMPLE WORKERS2 PROPERTIES FILE TESTING THE LOAD BALANCER TESTING STICKY SESSIONS TESTING ROUND-ROBIN BEHAVIOR TESTING WITH DIFFERENT LOAD FACTORS CHAPTER 13: TOMCAT AND IIS ROLE OF THE ISAPI FILTER CONNECTING TOMCAT WITH IIS TESTING TOMCAT AND IIS INSTALLATIONS CONFIGURING THE CONNECTOR IN TOMCAT’S SERVER XML FILE INSTALLING THE ISAPI FILTER UPDATING THE WINDOWS REGISTRY FOR THE ISAPI FILTER CONFIGURING TOMCAT WORKERS (WORKERS2 PROPERTIES) CREATING A VIRTUAL DIRECTORY UNDER IIS ADDING THE ISAPI FILTER TO IIS TROUBLESHOOTING TIPS WEB SITE HITS PER DAY KEEP ALIVE AND TCP CONNECTION TIMEOUT TUNING THE AJP CONNECTOR LOAD-BALANCED AJP WORKERS USING SSL CHAPTER 14: JDBC CONNECTIVITY JDBC BASICS ESTABLISHING AND TERMINATING CONNECTIONS TO RDBMSS EVOLVING JDBC VERSIONS JDBC DRIVER TYPES DATABASE CONNECTION POOLING TOMCAT AND THE JDBC EVOLUTION JNDI EMULATION AND POOLING IN TOMCAT PREFERRED CONFIGURATION: JNDI RESOURCES RESOURCE AND RESOURCEPARAMS TAGS HANDS-ON JNDI RESOURCE CONFIGURATION TESTING THE JNDI RESOURCE CONFIGURATION ALTERNATIVE JDBC CONFIGURATION ALTERNATIVE CONNECTION POOL MANAGERS ABOUT POOLMAN DEPLOYING POOLMAN POOLMAN’S XML CONFIGURATION FILE OBTAINING JDBC CONNECTIONS WITHOUT JNDI LOOKUP TESTING POOLMAN WITH A LEGACY HARD-CODED DRIVER OBTAINING A CONNECTION WITH JNDI MAPPING TESTING POOLMAN WITH JNDI-COMPATIBLE LOOKUP DEPLOYING THIRD-PARTY POOLS CHAPTER 15: TOMCAT SECURITY SECURING THE TOMCAT INSTALLATION ROOT AND TOMCAT-DOCS ADMIN AND MANAGER FURTHER SECURITY JSP-EXAMPLES AND SERVLETS-EXAMPLES CHANGING THE SHUTDOWN COMMAND RUNNING TOMCAT WITH A SPECIAL ACCOUNT CREATING A TOMCAT USER RUNNING TOMCAT WITH THE TOMCAT USER SECURING THE FILE SYSTEM WINDOWS FILE SYSTEM LINUX FILE SYSTEM SECURING THE JAVA VIRTUAL MACHINE OVERVIEW OF THE SECURITY MANAGER USING THE SECURITY MANAGER WITH TOMCAT RECOMMENDED SECURITY MANAGER PRACTICES SECURING WEB APPLICATIONS AUTHENTICATION AND REALMS AUTHENTICATION MECHANISMS CONFIGURING AUTHENTICATION SECURITY REALMS ENCRYPTION WITH SSL JSSE PROTECTING RESOURCES WITH SSL HOST RESTRICTION CHAPTER 16: SHARED TOMCAT HOSTING VIRTUAL HOSTING IP-BASED VIRTUAL HOSTING NAME-BASED VIRTUAL HOSTING VIRTUAL HOSTING WITH TOMCAT EXAMPLE CONFIGURATION INTRODUCTION TO VIRTUAL HOSTING WITH TOMCAT TOMCAT COMPONENTS TOMCAT 5 AS A STANDALONE SERVER TOMCAT 5 WITH APACHE FINE-TUNING SHARED HOSTING CREATING SEPARATE JVMS FOR EACH VIRTUAL HOST SETTING MEMORY LIMITS ON THE TOMCAT JVM CHAPTER 17: SERVER LOAD TESTING THE IMPORTANCE OF LOAD TESTING LOAD TESTING WITH JMETER INSTALLING AND RUNNING JMETER MAKING AND UNDERSTANDING TEST PLANS WITH JMETER JMETER FEATURES DISTRIBUTED LOAD TESTING INTERPRETING TEST RESULTS SETTING GOALS AND TESTING THEM ESTABLISHING SCALABILITY LIMITATIONS FURTHER ANALYSIS OPTIMIZATION TECHNIQUES JAVA OPTIMIZATIONS TOMCAT OPTIMIZATIONS EXPLORING ALTERNATIVES TO JMETER CHAPTER 18: JMX SUPPORT THE REQUIREMENT TO BE MANAGEABLE ALL ABOUT JMX THE JMX ARCHITECTURE INSTRUMENTATION LEVEL AGENT LEVEL DISTRIBUTED SERVICES LEVEL JMX REMOTE API AN ANTHOLOGY OF MBEANS STANDARD MBEANS DYNAMIC MBEANS MODEL MBEANS OPEN MBEANS JMX MANAGEABLE ELEMENTS IN TOMCAT MANAGEABLE TOMCAT 5 ARCHITECTURAL COMPONENTS MANAGEABLE NESTED COMPONENTS MANAGEABLE RUN-TIME DATA OBJECTS MANAGEABLE RESOURCE OBJECT ACCESSING TOMCAT 5’S JMX SUPPORT VIA THE MANAGER PROXY WORKING WITH THE JMX PROXY MODIFYING MBEAN ATTRIBUTES ACCESSING TOMCAT JMX SUPPORT REMOTELY VIA THE RMI CONNECTOR SETTING UP THE JNDI INITIAL CONTEXT REMOTE TOMCAT PROBING WITH QUERYJMX SECURITY CONCERNS CHAPTER 19: TOMCAT 5 CLUSTERING CLUSTERING BENEFITS SCALABILITY AND CLUSTERING THE NEED FOR HIGH AVAILABILITY CLUSTERING BASICS MASTER-BACKUP TOPOLOGICAL PATTERN FAIL-OVER BEHAVIORAL PATTERN TOMCAT 5 CLUSTERING MODEL LOAD BALANCING SESSION SHARING WORKING WITH TOMCAT 5 CLUSTERING SESSION MANAGEMENT IN TOMCAT THE ROLE OF COOKIES AND MODERN BROWSERS CONFIGURING A TOMCAT 5 CLUSTER BACK-END 1: IN-MEMORY REPLICATION CONFIGURATION BACK-END 2: PERSISTENT SESSION MANAGER WITH A FILE STORE BACK-END 3: PERSISTENT SESSION MANAGER WITH A JDBC STORE TESTING A TOMCAT CLUSTER WITH JDBC PERSISTENT SESSION MANAGER BACK-END AN APPLICATION-LEVEL LOAD BALANCING ALTERNATIVE (BALANCER) LOAD BALANCING WITH THE BALANCER FILTER WORKING WITH THE BALANCER FILTER TESTING THE BALANCER FILTER REDIRECTION AND THE COOKIE PROBLEM HARDWARE-ASSISTED REQUEST DISTRIBUTION WITH COMMON NAT THE COMPLEXITY OF CLUSTERING CLUSTERING AND PERFORMANCE CLUSTERING AND RESPONSE TIME SOLVING PERFORMANCE PROBLEMS WITH CLUSTERING CHAPTER 20: EMBEDDED TOMCAT IMPORTANCE OF EMBEDDED TOMCAT IN MODERN SYSTEM DESIGN TYPICAL EMBEDDED APPLICATION SCENARIOS THE ROLE OF THE ADMINISTRATOR WITH EMBEDDED TOMCAT OVERVIEW OF EMBEDDED MODE IN TOMCAT THE MBEAN SERVER AND OBJECT BUS INTERNAL VERSUS EXTERNAL CONTROL APACHE ANT AS A SCRIPTING ENGINE THE APACHE JAKARTA COMMONS MODELER CUSTOM JMX ANT TASKS IN THE COMMONS MODELER <JMX-SERVICE> TASK <MBEAN> SUBELEMENT <ATTRIBUTE> SUBELEMENT <MODELERREGISTRY > OR <MBEAN-DESCRIPTOR> TASK <JMX-OPERATION> TASK ANT SCRIPT OPERATIONAL FLOW USING AN ANT SCRIPT TO START UP A MINIMAL EMBEDDED SERVER DOWNLOADING AND INSTALLING EMBEDDED TOMCAT THE MIN XML MINIMAL EMBEDDED STARTUP SCRIPT TESTING THE EMBEDDED TOMCAT SERVER STARTING UP A MINIMAL SERVER ACCESSING EMBEDDED TOMCAT SHUTTING DOWN THE EMBEDDED SERVER ADDING THE MANAGER WEB APPLICATION ADDING THE MANAGER ROLE FOR AUTHENTICATION ADDING AN <MBEAN> ELEMENT TO THE MANAGER CONTEXT USING THE MANAGER APPLICATION ON THE EMBEDDED SERVER