Re: Mainitaining Session in Application Server

Jason Reynolds <[email protected]>
Newsgroups gmane.comp.java.sun.ejb.general
Message-ID <[email protected]>
Have you ever thought about abstracting the cluster behavior from your
application and leaving that part of the solution up to the hardware ---
the load balancer itself.

I'm assuming you have a setup where there's a proxy in front of a load
balancer in front of the cluster of app servers.  By using a load balancer
with Layer 4 [for IP balancing with your Java stand alone app clients] AND
Layer 7 [for balancing with cookies with your web clients ] you could now
employ the singleton solution b/c you'll be guaranteed that each session
will at least hit the same app server each time.  This keeps the app
simpler and more re-usable across a multitude of app servers.  If you went
the JNDI solution, you'd be tied to one app server [WebLogic].

If this isn't the best solution, seperate the problems to find
mini-solutions that are still flexible with your whole architecture.

At 08:52 AM 12/10/2003 -0500, Zerbe John W wrote:
>It looks to me like you have conflicting requirements.
>You want one instance of some object that tracks session state for
>all users of your app, you do now want to use a database for this,
>and you want it to work in a cluster of application server instances.
>
> From what you have described of your requirements, I believe that a
>relational database, keyed on a userid is your best bet. Whether you
>implement via entity ejbs or via direct sql from a SLSB is your
>choice.
>
>All members of the cluster have access to it. The database itself can
>provide mutual exclusion on individual entries. You don't have to have all
>the entries in memory at the same time in all the members of the cluster.
>If you are using a database connection pool, retrieving the individual
>entries
>is really no more expensive than any other operation that requires a network
>hop. Most databases are really quite good at caching the most used "rows" in
>memory. Typically, databases are put on machines that are set up for some
>sort of "failover" or some sort of clustering that make them very reliable.
>If you try for some sort of "cluster wide singleton", you will end up with
>your info resident in a single member of your cluster and therefore have
>a single point of failure in your application.
>
>At least WebSphere uses a relational database for http session persistence
>in a clustered environment. I don't know if this is available in other
>vender app servers. In our environment, we can lose a whole application server
>machine and not lose session state for our apps. We also don't have the memory
>footprint that would be required for all app server instances to have all
>current
>session object in memory like an app server to app server replication
>solution
>would require.
>
>
>John Zerbe
>
>-----Original Message-----
>From: A mailing list for Enterprise JavaBeans development
>[mailto:[email protected]]On Behalf Of Saidas Kottawar
>Sent: Wednesday, December 10, 2003 12:22 AM
>To: [email protected]
>Subject: Re: Mainitaining Session in Application Server
>
>
>Hello All,
>
>First of all Thanks for your responses.
>I would also like to say sorry since it looks like the question was not
>very clear from my side. Most of the people has answered very lightly
>with one line.BTW, I am not a newcomer to this technology and working
>from more 3 years. So my question has a really a trivial one.
>BTW, I have got so many responses from so many people and I replied
>personally to most of them..since they have answered personally.
>Here I am giving brief summary of them (I have drawn some time from
>tight schedule...i should...so that we can help each other).
>Here we go one more time :
>
>What I want (this time it looks more improved from my side :)?
>-->
>We have created only server side application in our product i.e. we have
>created only EJBs.
>The client is going to interact with this server side application
>through proxy. Proxy will interanally make a JNDI call to proper server
>side objects. We provide API(proxy) for communicationg with server side
>components.
>
>CLIENTS:  Client can be a web based i.e. browswer or it can be
>standalone Java application...in broad sense client can be any one. We
>don't have to worry since it is always using proxy API.
>
>What is the problem?
>We want to keep track of all the users logged in the system...keeping
>track on server side.
>So we want something(some object) which can be accessed by any EJBs in
>any cluster. It is same like ServletContext object in Servlet. We want
>some object which is available on application level.
>
>What we want to achieve?
>We want to keep track of all the users logged in. So whenever the user
>logs in, we will make this entry in Application wise object. So for each
>new request, we will check, by using this object, whether user has
>logged in or not. So basically we want to keep all users in one
>place..we want to keep session ID of all the users in one place.
>
>There should be only one instance of this object across the application.
>It should work in cluster enviornment.
>
>What suggestion I got and my view on the same?
>1. Use Statefuls session bean --> Can't serve my purpose. StatefulSB is
>reserved by a client and it is not Application level.
>
>2. Use Singletone object --> Will not going to work in cluster
>enviornment.
>
>3. Use JNDI object (This solution looks feasible for me :) Thanks to
>Ashu for the same.)
>         1. Create your own object with the data that you want to share
>across the users.
>         2. Register this object in the JNDI tree of the application
>server.
>         3. By registering the object, your data will be available across
>the cluster.
>         4. Lookup for the object whenever you application needs the
>data.
>         5. Just think of the object as one whose reference is shared
>across the application server. You will need to make it
>thread-safe.
>
>Waiting for all REPLIES.
>
>Thanks and Regards,
>Saidas Kottawar
>
>===========================================================================
>To unsubscribe, send email to [email protected] and include in the body
>of the message "signoff EJB-INTEREST".  For general help, send email to
>[email protected] and include in the body of the message "help".

===========================================================================
To unsubscribe, send email to [email protected] and include in the body
of the message "signoff EJB-INTEREST".  For general help, send email to
[email protected] and include in the body of the message "help".
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.