Design Question
mkumar Feb 14, 2003 7:31 PMHi
I am developing an application in java and basically in doubt about the design
I need to choose. My system will be used by 500 - 700 people and literally these people live on the system, which makes me to think more carefully.
Client UI: Will be a swing based one. Because of the complexity of the client
UI, html UI is never an option. ( This part I am clear)
Now the question is what to do on the server side:
=================================================
Here are my requirements:
a) I need it to be be able to support 500-700 users.
b) Should be able to run on 2 or more machines so that even if one goes down another
can pick it up. ( clustering ????)
c) should give a good respnse time
I know I am not in a unique situation as many of you would have faced this situation, your experience can be very valuable to me.
OK Here are my thoughts
=======================
1. Initially I though I can use EJB. As I thought I can use an application
server like jboss which gives clustering, load balancing, connection pooling
etc.
"but"
I want to minimize hits to my database. I just want to write one query which
reads from multiple tables, fill an object with that data and send it to the
client where it will display the data. Entity bean looks fine for 1 table but
since my query involves multiple tables and potentially 100 records can come
out of the query, EJB solution does not appeal me here. I read we can use
some mapping tools but it looks messy with too many dependencies.
2. Then I considered RMI service at the backend. Just RMI service taking the
calls from clients and use general DAO concept ( Make the query, parse the
resultset and fill the DAO ) and send it back.
"but"
can it support 500-700 users, can i run on multiple servers so that if one fails
others can pick it up.
3. The last Servlet, write a servlet which receives the client requests and since servlet spaws a thread per client and Resin / Tomcat have cluster, load
balancing capabilities (? I am assuming) I can write/use generally available
connection pooling classes and complete the project.
However note:
1. since the client is written in java
2. and this is an intranet application
how far this is advisible.
Now I am lost, and could use help of some experienced guys to make my decesion.
Regards