The typical application flow is as follows:
1. A Web client requests a URL in the browser (input page).
2. The request is routed to the Web server over the Internet.
3. The Web server immediately passes the request to the Web server plug-in.
All requests go to the Web server plug-in first.
4. The Web server plug-in examines the URL, verifies the list of host name
aliases from which it will accept traffic based on the virtual host information,
and chooses a server to handle the request.
5. A stream is created. A stream is a connection to the Web container. It is
possible to maintain a connection (stream) over a number of requests. The
Web container receives the request and, based on the URL, dispatches it to
the proper servlet.
6. If the servlet class is not loaded, the dynamic class loader loads the servlet
(servlet init(), then doGet() or doPost()).
7. JNDI is used for lookup of either datasources or EJBs required by the servlet.
8. Depending upon whether a datasource is specified or an EJB is requested,
the JNDI directs the servlet:
– To the corresponding database and gets a connection from its connection
pool in the case of a data source.
– To the corresponding EJB container, which then instantiates the EJB when
an EJB is requested.
9. If the EJB request involves an SQL transaction, it goes back to the JNDI to
look up the datasource.
10.The SQL statement is executed and the retrieved data is sent back either to
the servlet or to the EJB.
11.Data beans are created and handed off to JSPs in the case of EJBs.
12.The servlet sends data to JSPs.
13.The JSP generates the HTML that is sent back through the plug-in to the Web
server.
14.The Web server sends the output page (output HTML) to the browser.