Hi all subscribers.
Joined this list to be able to discuss this one question. I have spent a lot
of thought on this and I'll try to describe things rather detailed, so try
to bear with me.

We are developing a web application in Java with extensive database use. We
have one "general", system database (SYSTEM) with texts, user info, settings
etc. Every user of the system is associated to "clients" (usally the company
where they work). Most users have only one client but some have several. A
client can have "unlimited" number of user (mostly < 5) associated to it.
There can be unlimited number of clients (currently ~30).
Ex:
User1 has access to client 1
User2 has access to client 1 and 53

Every client has their own database with their data. When a user loggs in
s/he is associated with the database of a) the only client s/he has acces to
or b) the client s/he chooses for the session.

Today we are not using EJB or any third party middleware but only our own
proprietary solution. We have one application in the J2EE server (Resin)
with one connection pool to our MySQL database (initially the SYSTEM
database). I have built a wrapper around Resins connection pool so that when
a thread requests a connection, the connection is first switched to the
correct database, with MySQLs "USE database" command, depending on the user
of the session running the thread as mentioned above. There are also some
other features to handle transactions etc.

Much of the use is through the web interface, where the data is fetched from
the database, put into hashtables and output on the page. But there are also
lots of background work, for which we have classes mapping to records in our
database tables.

The biggest problem I see here is with caching. Since we have no object
cache we have to read the object from the database every time we use it, and
write it to the database every time we change it. Since we also read
directly from the database a lot, we can not have an object cache. I would
like to have the same interface for both "background" and "web" (both being
object oriented), but then we need to solve the performance issue.

I have thought about EJB many times. I have also looked briefly at other
solutions that allow object caching. But it always comes down to the same
problem: I can't see how to get it working with differens databases for
different users. And of course, how would the object cache know wich client
the user who updated an object was logged into, when it is time to write it
back to the database?


Does anyone have a solution for this?
I saw someone mentioning Webgain TopLink in another post
(http://www.jguru.com/faq/view.jsp?EID=421472), could someone expain how
that could be of any help?

Summary of what we want:
- Multiple (structurally identical) databases (main reasons: maintance and
security)
- Database selected at run-time
- Object-Relational mapping with caching
- Preferrably a non-proprietary solution

  Mattias Jiderhamn
  Expert Systems
  [EMAIL PROTECTED]

===========================================================================
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".

Reply via email to