introductions two decades in software development software engineering solutions, inc. ...

26

Upload: thomasina-garrison

Post on 20-Jan-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core
Page 2: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

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.

Page 3: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

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?

Page 4: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

Pieces of the Puzzle

Java EE HTML over HTTP Servlet Container.

Page 5: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

Java EE

Page 6: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

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

Page 7: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

HTML over HTTP

Page 8: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

Servlet Specification

WAR file format Servlet Filter Listener Session web.xml

Page 9: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

Servlet Container Interaction

Page 10: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

Concurrency

Page 11: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

The Tomcat Servlet Container

Top Level Components

Containers

Nested Components

Connectors

Page 12: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

Container Overview

Note the shading …

our “baby server”

Pipeline pattern

Context helpers

Page 13: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

Containment: Server and Service

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

Protocol-specific processing

Protocol-agnostic processing

Page 14: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

Containment: Connectors

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

Page 15: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

Containment: Catalina Engine

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

</Engine>

Page 16: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

Containment: Virtual Host

IP-based

Each FQHN resolves to a specific IP address

Needs dedicated IP addresses

Page 17: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

Containment: Virtual Host

Name-based

Multiple FQHNs resolve to a single IP address

Host: request header interrogated Simple but requires help with SSL

Page 18: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

Containment: Virtual Host

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

Relative to CATALINA_BASE

Page 19: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

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

Page 20: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

Containment: Another View

Page 21: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

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

Page 22: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

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

Advanced Topics: Java Class Loading First Principles

Page 23: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

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

Page 24: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

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

Page 25: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

Advanced Topics: Web Application Class Loading

[1]

[2]

[3]

Page 26: Introductions  Two decades in software development  Software Engineering Solutions, Inc.    Technical Reviewer: Core

Thank You!

[email protected] www.swengsol.com 651 270 8457

for training/consulting opportunities.