JEE – Design Patterns Front Controller Intercepting Filter Transfer Object

IMPORTANT NOTICE TO STUDENTS
These slides are NOT to be used as a replacement for student notes.
These slides are sometimes vague and incomplete on purpose to spark class discussions
JEE – Design Patterns
Front Controller
Intercepting Filter
Transfer Object
CS 446/646 ECE452
Jun 13th, 2011
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
Overview
JEE Core Design Patterns
Presentation
Tier
Business
Tier
Integration
Tier
Intercepting Filter
Business Delegate
Data Access Object
Front Controller
Service Locator
Service Activator
Context Object
Session Facade
Domain Store
App Controller
Application Service
Web Service Broker
View Helper
Business Object
Composite View
Composite Entity
Service to Worker
Transfer Object
Dispatcher View
TO Assembler
Value List Handler
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
2
Front Controller
Intent
●
provide a single point for processing user requests
http://java.sun.com/blueprints/corej2eepatterns/Patterns/FrontController.html
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
3
Front Controller
Motivation
●
single processing point for all
client requests
–
–
across views & session
can be used to inject cross-cutting concerns
●
●
–
–
logging
security
can we have multiple controllers?
we can map multiple requests to the same controller?
http://java.sun.com/blueprints/corej2eepatterns/Patterns/FrontController.html
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
4
Front Controller
Motivation
●
separation of concerns
–
business code from presentation code
http://www.corej2eepatterns.com/Patterns2ndEd/FrontController.htm
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
5
Front Controller
WATERLOO
http://www.corej2eepatterns.com/Patterns2ndEd/FrontController.htm
CHERITON SCHOOL
OF
COMPUTER SCIENCE
6
Front Controller
Motivation
●
provides resource mapping
–
physical
●
–
http://server/resource.jsp
virtual/logical
●
●
●
http://server/servlet/resourceController
http://server/servlet/page1.help
logical partitioning of application views?
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
7
Front Controller
Motivation
●
organic growth
–
controllers can be specialized (sub-classing)
●
●
GWTServlet
reusability
–
–
–
declarative vs. non-decalrative mapping
what is declarative mapping?
why do we care?
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
8
Intercepting Filter
Intent
●
common mechanism for pre & post processing of user
requests
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
9
Intercepting Filter
Filter chain
request
request
request
controller
filter1
filter2
response
response
response
how is this different from traditional pipes & filters?
how is this different from batch pipes & filters?
what type of data flows through the pipes?
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
10
Intercepting Filter
Context
●
“presentation-tier request handling mechanism receives many
different types of requests, which require varied types of
processing”*
Common Examples*
●
has the client been authenticated?
●
does the client have a valid session?
●
is the client's IP address from a trusted network?
●
does the request path violate any constraints?
●
what encoding does the client use to send the data?
●
do we support the browser type of the client?
* http://java.sun.com/blueprints/corej2eepatterns/Patterns/InterceptingFilter.html
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
11
Intercepting Filter
Easy Solution
●
if-then-else in the controller (why not?)
An Elegant Solution
●
common reusable processing
●
easy to add/modify/delete filtering functionality
–
even better if declarative
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
12
Intercepting Filter
Sounds like Decorator (how?)
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
13
http://en.wikipedia.org/wiki/Decorator_pattern
Intercepting Filter
Sounds like Decorator
http://msdn.microsoft.com/en-us/library/ff647251.aspx
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
14
Intercepting Filter
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
http://msdn.microsoft.com/en-us/library/ff647251.aspx
15
Intercepting Filter
What is the different between the two?
●
structure
–
FilterChain is no longer required
●
runtime behaviour
●
take another look at the diagram
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
16
Intercepting Filter
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
http://msdn.microsoft.com/en-us/library/ff647251.aspx
17
Intercepting Filter
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
http://msdn.microsoft.com/en-us/library/ff647251.aspx
18
Intercepting Filter
Evolution
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
19
Intercepting Filter
Evolution
What is the impact of this?
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
20
Intercepting Filter
Evolution
What is the impact of this?
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
21
Intercepting Filter
List some drawback of this design?
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
22
Intercepting Filter
Motivation
●
functionality injection
●
improved reusability
–
●
filter chains can be defined in a number of ways
declarative configuration
Difficulties
●
information sharing
●
fault-tolerance
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
23
Transfer Object
Intent
●
to transfer multiple data elements over a tier
getUserName()
getUserAge()
Client
getUserPrefs()
Business
Component
User
Looks harmless??
http://java.sun.com/blueprints/corej2eepatterns/Patterns/TransferObject.html
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
24
Transfer Object
Solution
●
use a
Transfer Object
to encapsulate
the data
http://java.sun.com/blueprints/corej2eepatterns/Patterns/TransferObject.html
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
25
Transfer Object
WATERLOO
26
CHERITON SCHOOL OF
http://java.sun.com/blueprints/corej2eepatterns/Patterns/TransferObject.html
COMPUTER SCIENCE
Transfer Objects
Scope & Complexity?
●
●
●
can we have multiple types of
transfer objects to represent data (a user)?
create the transfer
objects required
how complex?
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
27
Transfer Object
Consequences
●
simplified remote interface
●
fewer remote calls
●
stale objects: very common problem for web apps
–
–
●
what are stale objects?
how would you deal with it?
serialization over the wire?
WATERLOO
CHERITON SCHOOL OF
COMPUTER SCIENCE
28