+ All Categories
Home > Documents > Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet •...

Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet •...

Date post: 13-Jul-2020
Category:
Upload: others
View: 8 times
Download: 0 times
Share this document with a friend
41
Announcements Comments on project proposals will go out by email in next couple of days ...
Transcript
Page 1: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Announcements

• Comments on project proposals will go out by email in next couple of days ...

Page 2: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

resource

wrapper

3-Tier Using TP Monitorclient

application

program flow

registered programsrouter

resources

tran

sact

ion

man

agem

ent

communication manager

interface (API, presentation,

authentication)

TP s

ervi

ces

resource

wrapper

resource

wrapper

TP monitor

Page 3: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Message Broker

• Applications interacting by messages

DBMS applications

message broker

SmartQuotationadapter

e-mailadapter

databaseadapter

SmartQuotation

SmartForecastingadapter

SmartForecasting

XYZadapter

XYZ

integrating application (contains the composition logic)

Page 4: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

J2EE Application Server Architecture

support for communication and presentation

Servlets JavaServer Pages (JSP)

Enterprise Java Beans (EJB)

Java DataBase Connectivity (JDBC)

Java Naming/Directory Interface (JNDI)

support for the application integration

Java 2 Connector Architecture (J2CA)

Java Message Service (JMS)

Java transaction API (JTA)

Java API for XML Processing (JAXP)

JavaMail

Java Authentication and Authorization Service (JAAS)

support for access to resource managers

Page 5: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

J2EE Application Server Architecture

support for communication and presentation

Servlets JavaServer Pages (JSP)

Enterprise Java Beans (EJB)

Java DataBase Connectivity (JDBC)

Java Naming/Directory Interface (JNDI)

support for the application integration

Java 2 Connector Architecture (J2CA)

Java Message Service (JMS)

Java transaction API (JTA)

Java API for XML Processing (JAXP)

JavaMail

Java Authentication and Authorization Service (JAAS)

support for access to resource managers

Page 6: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Servlets

• Client logic in servlet code

• Avoids CGI’s process creation overhead

client

Web server

Java server process

Java thread

Page 7: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Servlets

• JVM can be separate from Web Server

• Still avoids process creation overhead

Web server

client

Servlet JVM

Java thread

Page 8: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Trivial HTTP Servlet

• Servlet reads request parameters from req

• Servlet writes HTML reply to resp

public class MyServlet extends HttpServlet { public void doGet( HttpServletRequest req, HttpServletResponse resp) ... {

String remoteHost = req.getRemoteHost(); resp.setContentType( “text/html” ); PrintWriter out = resp.getWriter(); out.println( “<html>” ); out.println( “<body><h1>Hello, ” + remoteHost + “!</h1></body></html>” ); }}

Page 9: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Forms

• HTML form items are made available in req

public class HelloServlet extends HttpServlet { public void doGet( HttpServletRequest req, HttpServletResponse resp) ... { resp.setContentType( “text/html” ); PrintWriter out = resp.getWriter(); out.println( “<html>” ); out.println( “<body><h1>Hello, ” + req.getParameter( “username” ) + “!</h1></body></html>” );}}

<form method=get action=“/servlet/HelloServlet”><input type=text name=username size=20><input type=submit value=“introduce yourself”>

Page 10: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Servlet Life Cycle

• First reference creates servlet object

• Subsequent references just invoke methods

• request and response parameters

Servlet A

Servlet B

Request for A

Request for B

Request for A

Web Server Servlet JVM

Page 11: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Servlet Life Cycle

• Servlet notified when created and destroyed

• Can save state between calls

public class HitCountServlet extends HttpServlet { int timesAccessed; public void init(ServletConfig conf) ... { timesAccessed = 0; } public void doGet( HttpServletRequest req, HttpServletResponse resp) ... { ... timesAccessed++; ... }}

Page 12: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Servlet Life Cycle

public class HitCountServlet extends HttpServlet { ... public void destroy() { ... outfile.writeInt(timesAccessed); ... }}

It is more complicated than that.Servlet may be destroyed by container anytime, it must save state to stable storage:

Page 13: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Servlet Life Cycle

• Real examples: serially reusable resources that are expensive to create

• Database connection pools

Page 14: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Concurrency - Thread Safety

• Each call has its own req and resp parameter

• But servlet code -- and all code called by the servlet -- must be thread-safe!

Servlet A

Request for A

Request for A

Web Server Servlet JVM

Page 15: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Session Context

• Server will create session context

• assign unique ID

• track session by some method such as cookies or (yuck) URL encoding

• more on sessions later

• Servlet can store (anything) in session context, it will persist between calls

... HTTPSession theSession = req.getSession(true); ...

Page 16: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

JSP

• A template engine:

Database orother resource

Template andinstructions

Templateprocessor

Web server Browser

Page 17: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

JSP

• A JSP template is HTML with snippets of Java embedded in it

• Here is a really simple one ...

<html><body> Hello, visitor. It is now <%= new java.util.Date().toString() %></body></html>

Page 18: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

JSP

• Here is one with control flow!

<html><body><% java.util.Date theDate = new java.util.Date(); %><% if (theDate.getHours() < 12) { %>Good morning,<% } else { %>Good afternoon,<% } %>visitor. It is now <%= theDate.toString() %></body></html>

Page 19: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

JSP Life Cycle

• The template is compiled (once) into a servlet

• Later references re-use existing servlet

JSP compiler Generatedservlet

Server

Request 1

Request 2

Request 3

...

Servlet JVM

Page 20: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

J2EE Application Server Architecture

support for communication and presentation

Servlets JavaServer Pages (JSP)

Enterprise Java Beans (EJB)

Java DataBase Connectivity (JDBC)

Java Naming/Directory Interface (JNDI)

support for the application integration

Java 2 Connector Architecture (J2CA)

Java Message Service (JMS)

Java transaction API (JTA)

Java API for XML Processing (JAXP)

JavaMail

Java Authentication and Authorization Service (JAAS)

support for access to resource managers

Page 21: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

JavaMail

• Send and receive mail objects

• Straightforward

Page 22: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

J2EE Application Server Architecture

support for communication and presentation

Servlets JavaServer Pages (JSP)

Enterprise Java Beans (EJB)

Java DataBase Connectivity (JDBC)

Java Naming/Directory Interface (JNDI)

support for the application integration

Java 2 Connector Architecture (J2CA)

Java Message Service (JMS)

Java transaction API (JTA)

Java API for XML Processing (JAXP)

JavaMail

Java Authentication and Authorization Service (JAAS)

support for access to resource managers

Page 23: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

JNDI Architecture

Binding

Context

Attributes

DirContext

Initialcontext

Service provider interface

Application

Service Provider

Naming Directory

Page 24: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Naming and Directory

• Naming service

• context = bindings of names to objects or contexts

• enumerate subcontexts

• Directory service

• dircontext = bindings of names to objects with attributes or dircontexts

• enumerate attributes

• Initial Context = where you start looking for objects / services

• (like X.500 or LDAP)

Page 25: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

J2EE Application Server Architecture

support for communication and presentation

Servlets JavaServer Pages (JSP)

Enterprise Java Beans (EJB)

Java DataBase Connectivity (JDBC)

Java Naming/Directory Interface (JNDI)

support for the application integration

Java 2 Connector Architecture (J2CA)

Java Message Service (JMS)

Java transaction API (JTA)

Java API for XML Processing (JAXP)

JavaMail

Java Authentication and Authorization Service (JAAS)

support for access to resource managers

Page 26: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

JDBC Architecture

ResultSet

Statement

ResultSet

CallableStatement

Connection

Service provider

Application

Service Provider

ResultSet

PreparedStatement

Page 27: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

JDBC Architecture II

Oracledriver

Sybasedriver

Connection

Application

Service Provider

ODBCdriver

JDBC/ODBCbridge

SybaseOracle

ODBC DB

Page 28: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Capabilities

• Connections

• pooling support

• SQL queries

• precompiled queries

• database stored queries

• Result sets

• enumeration

• scrollable

Page 29: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Capabilities

• Transaction control

• auto-commit

• explicit commit/rollback

• savepoints

• Isolation levels

• READ_(UN)COMMITTED

• REPEATABLE_READ

• SERIALIZABLE

Page 30: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Capabilities

• Distributed transactions

• if supported by the database and driver

Page 31: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

J2EE Application Server Architecture

support for communication and presentation

Servlets JavaServer Pages (JSP)

Enterprise Java Beans (EJB)

Java DataBase Connectivity (JDBC)

Java Naming/Directory Interface (JNDI)

support for the application integration

Java 2 Connector Architecture (J2CA)

Java Message Service (JMS)

Java transaction API (JTA)

Java API for XML Processing (JAXP)

JavaMail

Java Authentication and Authorization Service (JAAS)

support for access to resource managers

Page 32: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Point-to-Point

sender receiver

Page 33: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Topic Based (pub/sub)

sender

receiver

receiver

receiver

. . .

. . .

Page 34: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Capabilities

• Message filtering (Boolean predicates) at receiver

• Durable subscriptions if desired

• Transactional support

• JMS queues only

• or other resource managers as well

Page 35: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

J2EE Application Server Architecture

support for communication and presentation

Servlets JavaServer Pages (JSP)

Enterprise Java Beans (EJB)

Java DataBase Connectivity (JDBC)

Java Naming/Directory Interface (JNDI)

support for the application integration

Java 2 Connector Architecture (J2CA)

Java Message Service (JMS)

Java transaction API (JTA)

Java API for XML Processing (JAXP)

JavaMail

Java Authentication and Authorization Service (JAAS)

support for access to resource managers

Page 36: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

What is a bean?

• Java Object

• Container provides many standard services

• location

• life cycle

• persistence

• transactions

• etc

Page 37: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Classes of Beans

• Session

• embodies business logic associated with a session’s business process

• always given a session context

• not persistent

• stateful or stateless

Page 38: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Classes of Beans

• Entity

• represents a real-world entity

• may be shared by multiple sessions

• persistent beyond session or EJB container lifetime

• persistence may be bean-managed (JDBC/JTA) or container-managed

Page 39: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Classes of Beans

• Message-Driven

• communication by queueing (JMI) rather than RPC

Page 40: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

EJB Classes and Stubs

client

container

homeinterface

homestub

homeimpl

clientinterface

clientstub

client i/fimpl

create/find/remove

business methods/remove

beanimpl

create/find/remove

business methods/remove

notify

client server

Page 41: Announcements - Cornell UniversityWeb server Java server process ... Trivial HTTP Servlet • Servlet reads request parameters from req • Servlet writes HTML reply to resp public

Deployment

• XML deployment descriptors

• identify programmer-provided code

• dependencies

• transactional behavior

• security properties

• Container generates stubs


Recommended