Introductions Two decades in software development Software Engineering Solutions, Inc. ...

Preview:

Citation preview

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.

Java EE

Uniform Resource Locators

http:// www.swengsol.com

:80/myWebApp /adobe/invoices/EditInvoice ?id=x123;jsessionid=…

scheme porthostcontext path

servlet path

path info

path parameters

query string

HTML over HTTP

Servlet Specification

WAR file format Servlet Filter Listener Session web.xml

Servlet Container Interaction

Concurrency

The Tomcat Servlet Container

Top Level Components

Containers

Nested Components

Connectors

Container Overview

Note the shading …

our “baby server”

Pipeline pattern

Context helpers

Containment: Server and Service

<Server port="8005" shutdown="SHUTDOWN"><Service name="Catalina">

Protocol-specific processing

Protocol-agnostic processing

Containment: Connectors

<Connector port="80" protocol="HTTP/1.1" … />

Containment: Catalina Engine

<Engine name="Catalina" defaultHost="localhost” baseDir=“…”> …

</Engine>

Containment: Virtual Host

IP-based

Each FQHN resolves to a specific IP address

Needs dedicated IP addresses

Containment: Virtual Host

Name-based

Multiple FQHNs resolve to a single IP address

Host: request header interrogated Simple but requires help with SSL

Containment: Virtual Host

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" … >

Relative to CATALINA_BASE

CATALINA_HOME/conf/<EngineName>/<HostName>/<contextPath>.xml

Containment: Context

<Context path="/examples" ...> Relative to appBaseContext Fragment locations:

META-INF/context.xml

Vendor-specific Vendor-agnostic

Containment: Another View

BenefitsLate Binding (assembly of functionality)Security (single choke point)Customization (encrypt, generate, locate)Variance across TimeVariance across SpaceIsolation Zones

Advanced Topics: Java Class Loading First Principles

RulesConsistency (always return same instance)Delegation (security)Visibility (Delegation hierarchy + CL inversion)

Advanced Topics: Java Class Loading First Principles

Available OptionsImplicit 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 First Principles

Advanced Topics: Java Class Loading

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 to all web apps

WEB-INF/classes and WEB-INF/lib

Delegates to parent for standard Java classes

Directory configured in [catalina.properties]

Visible only to Tomcat code

Lets you override core JDK classes

JAVA_HOME/lib/endorsed

Advanced Topics: Web Application Class Loading

[1]

[2]

[3]

Thank You!

damodarchetty@gmail.com www.swengsol.com 651 270 8457

for training/consulting opportunities.

Recommended