On Mon, 2 Aug 2004 21:23:05 +0100 (BST), Research labs
<[EMAIL PROTECTED]> wrote:
> Jim,
> 
> Thanks for your response.
> I want each user to login to the database(MySQL), via
> a JSP.  Once logged in, I want them to use their
> database username (specified at log in time) for
> communicating with the database throught their
> session.  To put it another way, if 4 users are
> currently logged in (via a JSP etc.), When I query the
> data dictionary of the database, I want their names to
> come up.  At any point in time, I want to be able to
> find out, who is logged in, this is why I do not want
> everyone to log in with the same username and password
> e.g. ola/ola-hardcoded in the Struts config's
> data-source.
> 

Do you care about finding out who is logged in to your *application*,
or who is logged in to the *database*?  Those can easily be made
separate questions, and in most cases should be separate.

> I do not mind using any datasource so long as I can
> achieve my objective.
> 

The <data-source> element in struts-config.xml, like using most JNDI
provided data sources, will not address your need.  That is because
they create application wide pools for shared connections.

Doing what you want to do, however, will also be giving up on the key
advantage of using a data source in the first place -- sharing a small
number of database connections between multiple users.  By definition,
if you are using per-user logins to the database, such connections
cannot be shared.  That can be problematic for the scalability of your
app, because it will require more database resources to be allocated
than would otherwse be necessary.  Plus, you'll likely run into limits
on how many individual database connections can be opened before you'd
ever run out of capacity in your web server to support simultaneous
users.

If all you care is logins to an application, here's a couple of easy
ways to do that while still sharing database connections:

* At login time, write into some table someplace a row for the logged in user,
  and make sure you clean it up when they log out or when the session
  expires.  To see who is logged in, run database queries against
  this table.

* Store some in-memory data structure (perhaps as an application scope
  attribute), and have the login/logout logic add and remove entries from
  this data structure.  To see who is logged in, set up a Struts action or
  something that will go through the data structure and list all the logged
  on users.

If you still really want per-user database logins, then give up on the
idea of using any sort of data source -- it won't buy you anything. 
Instead, create a standalone JDBC connection at login time, and store
it in session scope somewhere.  But I would suggest you consider the
disadvantages of such an approach before using it.

> Thanks.
> Ola.
> 

Craig

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to