my dog learned polymorphism
The moose likes EJB and other Java EE Technologies and the fly likes few doubts in MVC design pattern and EJB Concepts Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

JavaRanch » Java Forums » Java » EJB and other Java EE Technologies
Bookmark "few doubts in MVC design pattern and EJB Concepts" Watch "few doubts in MVC design pattern and EJB Concepts" New topic

few doubts in MVC design pattern and EJB Concepts

Jam Khan

Joined: Dec 15, 2002
Posts: 1
Hello Java experts...
I have few doubts in EJB, wolud like to share it with you people... Few of my doubts are from MVC Design pattern and other doubts are from EJB concepts. First MVC doubts...
(1) In a MVC design pattern, normally JSPs are used for rendering the EIS data to the client, and hence they are part of View tier in MVC.My doubt is Can i use a servlet instead of JSP?? Will that violate the MVC concepts??
(2) I have seen one J2EE architecture of a project which was based on MVC design pattern. The architecture was as follows...
Client loads the JSP page( which is view in MVC) , jsp calls one normal java bean(which is model i guess, correct r not???) n then java bean calls one session bean(acting as a controller n session facade i guess, plz clarify this one too), which then further calls an entity bean( acting as Model in MVC), and this entity bean interacts with DB.
So communication from client to BD happens as follows
<b>JSP--->>>Java Bean--->>Session Bean---->>> Entity Bean---->>DB(Oracle8i)</b>
First question abt this .. (a)Is this architecture really based on
MVC?? why i m asking is because, i found
servlet missing here n sessions beans are
used in place of servlets as controller.
(b)what is the reason for using session
bean in between Java Bean and Entity
bean?? Can't i use Java Bean inplace of
Session bean?? Coz what i guess is Session
beans are little heavy as compared to
normal java bean. Ultimately a session
bean will be having a method which will be
calling a bunch of entity bean's method,
and i guess the same thing can be achieved
using java bean also.Plz explain this..
(c) If session beans are used as session
facade which are excellent way to minimise
the network level calls, then where is the
network call happening??? Since java bean
is communicating with Session bean, n both
of them are on the same application
server. Java bean is in web container part
of application serevr and session being in
ejb container. so i don't find any network
level calls happening over here. So why
session facade here??
(d) One good reason i find in using
session bean over here is...maintainance
of transaction. If normal java bneans are
used in place of sesssion beans, then we
need to use JTA to handle transaction, but
since we are using session bean, so we can
have container managed transactions here,
so more transaction has to be maintained
by the programms himself, rather he will
be using containers capability to use
transaction, which would not had been
possible if v were using normal java bean.
Is this correct???
Few doubts from EJB Concepts---
(3) In case of stateful session bean, when container passivates then bean, then where does the container saves the client specific data?? PLz tell me in context of weblogic serevr.Few ppl say that, weblogic server maintains the cache, n it stores there, but other say like, it stores in a file which will beon local hard disk, n it uses java's seriliazation mechanism to do this?? which 1 is correct???
(4) How does the container recognises the previous client in caseof stateful session bean?? Let me explain this point in little detial.
Lets say a client C1 is calling one stateful session bean, n that client times out, so container will passivate that bean in order to conserve the resources. So during passivation it will store client specific data to somehere(may be in cache or in a flat file (3rd doubt)). Now lets say the same client C1 again comes so container will activate that bean. and during activation container will actually read the client specific data (from the place where it earlier stored those data may be cache or flat file), and then it will populate the instance variable with client related information. Am i correct upto this point??? If not then plz clarify.So my doubt here is .. how does the server/conrtainer recognizes the previous client C1, i mean if it would had been a different client lets say C2, in that case, the container would had picked brand new bean instace, to service the client, but doesn't do this if the client is C1. I hope i have explained my problem/doubt properly.
Thats it...I hope good answers to these doubts will really be healpful to others as well
Hoping to get the answers soon..
Thanx in advance.
Kyle Brown
Ranch Hand

Joined: Aug 10, 2001
Posts: 3892
The answers to quite nearly every single one of your questions could be found by reading the Sun Java Blueprints, or Deepak Alur's book "Core J2EE Patterns". I'd probably start there and then come back and see which of these questions you can answer on your own.

Kyle Brown, Author of Persistence in the Enterprise and Enterprise Java Programming with IBM Websphere, 2nd Edition
See my homepage at for other WebSphere information.
George Jay

Joined: Dec 11, 2002
Posts: 3
Hello :
In Fact they should be arranged/designed
with MVC:
Model contain Enterprise Bean (Entity ),
View include JSP pages and Java Bean,
Controller include Session Bean and Controller classes.
Leena Diwan
Ranch Hand

Joined: Jun 18, 2001
Posts: 351
Hello !
Kyle I appreciate that you always give some input on queries on which one can build up and learn on his/her own.
Here is what I feel about this.
For web server layer -
Model - JavaBean
Controller - Servlet
View - JSP
For app server level -
Model - Entity Bean (with the DB)
Controller - Session Bean
View - no view.. send it to the webserver level
Please correct me..
About the network call, think of the middle tier.. the app server will be somewhere else.. webserver separate and also.. a diff location for the DB. This is what the game is about.. if you cannot visualise where a network call comes into picture.. you need to get the idea behind 3 tier arch.
Thanks and Regards,

sandy gupta
Ranch Hand

Joined: Jan 30, 2001
Posts: 228
App Server Implementation of The Controller:
I am not sure if there needs to be a controller at that level. The App Server is too tied to the Model to do that. As per the MVC Pattern, the controller has to be the one that handles the business of delegating requests so i would definately feel that that job is best left to the Servlets in the Web Server layer itself.
Session Beans are still thinkable as business logic handlers but still, i would rather have the Servlets work as controllers for me.

Tim Holloway
Saloon Keeper

Joined: Jun 25, 2001
Posts: 17026

Actually, TRUE MVC isn't possible under anything using HTTP to get components talking to each other, since HTTP can't send unsolicited messages and a View needs them to update itself when the model is changed internally. Which is why the most popular adaptation of MVC to the HTTP/Java Server platform is known as Model 2 (the 2 is because the first "MVC" they tried didn't quite accomplish eveything desired).

Customer surveys are for companies who didn't pay proper attention to begin with.
Leena Diwan
Ranch Hand

Joined: Jun 18, 2001
Posts: 351
umm.. aaa..
controller is a term.. not restricted to Servlets only.
My perception is, the component that has a controlling logic, is a controller.
sandy gupta
Ranch Hand

Joined: Jan 30, 2001
Posts: 228
You guys are abs right. Both Tim and Leena. MVC2 or JSP Model 2 is supposed to be the closest we can get to an ideal implementation of an MVC pattern. And Controller is just a name and can be anybody, a Bean or a Servlet.
I agree. Here's the link:
subject: few doubts in MVC design pattern and EJB Concepts
It's not a secret anymore!