260 likes | 341 Views
Introductions. Two decades in software development Software Engineering Solutions, Inc. www.swengsol.com Technical Reviewer: Core JavaServer Faces 3 rd Edition “Top 1000” reviewer at Amazon.com. Why another Tomcat book?. Current focus is on administrators
E N D
Introductions • Two decades in software development • Software Engineering Solutions, Inc. www.swengsol.com • Technical Reviewer: Core JavaServer Faces 3rd Edition • “Top 1000” reviewer at Amazon.com.
Why another Tomcat book? • Current focus is on administrators • Tend to view Tomcat as a black box • Exactly HOW does it do what it does?
Pieces of the Puzzle • Java EE • HTML over HTTP • Servlet Container.
Uniform Resource Locators context path servlet path path info query string path parameters scheme host port http:// www.swengsol.com :80 /myWebApp ?id=x123 ;jsessionid=… /invoices/EditInvoice /adobe
Servlet Specification • WAR file format • Servlet • Filter • Listener • Session • web.xml
The Tomcat Servlet Container Nested Components Top Level Components Containers Connectors
Container Overview • A valve: • Extends Tomcat functionality • Is Tomcat-specific • Must be super-efficient Note the shading … Pipeline pattern Context helpers our “baby server”
Containment: Server and Service Protocol-specific processing Protocol-agnostic processing <Server port="8005" shutdown="SHUTDOWN"> <Service name="Catalina">
Containment: Connectors <Connector port="80" protocol="HTTP/1.1" … />
Containment: Catalina Engine <Engine name="Catalina" defaultHost="localhost” baseDir=“…”> … </Engine>
Containment: Virtual Host • Each FQHN resolves to a specific IP address • Needs dedicated IP addresses IP-based
Containment: Virtual Host • Multiple FQHNs resolve to a single IP address • Host: request header interrogated • Simple but requires help with SSL Name-based
Containment: Virtual Host Relative to CATALINA_BASE <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" … >
Containment: Context Vendor-agnostic Vendor-specific <Context path="/examples" ...> Relative to appBase Context Fragment locations: META-INF/context.xml CATALINA_HOME/conf/<EngineName>/<HostName>/<contextPath>.xml
Advanced Topics: Java Class Loading First Principles • Benefits • Late Binding (assembly of functionality) • Security (single choke point) • Customization (encrypt, generate, locate) • Variance across Time • Variance across Space • Isolation Zones
Advanced Topics: Java Class Loading First Principles • Rules • Consistency (always return same instance) • Delegation (security) • Visibility (Delegation hierarchy + CL inversion)
Advanced Topics: Java Class Loading First Principles • Available Options • Implicit class loading:MyClass myClass = new MyClass() • Explicit class loading:ClassLoader ldr = ClassLoader.getSystemClassLoader();Class cls = ldr.loadClass("MyClass");MyClass myClass = (MyClass) cls.newInstance();
Advanced Topics: Java Class Loading • Lets you override core JDK classes • JAVA_HOME/lib/endorsed • No parent • Native code in JVM • Core Java classes from rt.jar • JRE_HOME/jre/lib/ext(implicit CLASSPATH) • Classes on CLASSPATH • Truncated by Tomcat • CATALINA_HOME/lib • Visible to web apps and Tomcat code • Directory configured in [catalina.properties] • Visible only to Tomcat code • Directory configured in catalina.properties • Visible to all web apps • WEB-INF/classes and WEB-INF/lib • Delegates to parent for standard Java classes
Advanced Topics: Web Application Class Loading [1] [3] [2]
Thank You! • damodarchetty@gmail.com • www.swengsol.com • 651 270 8457for training/consulting opportunities.