Hi, I need some advice in a system that I am trying to implement.
The system is a computerized survey with a client-server architecture with a database in the back end. Some of the requirements of the system are the following:
Users will use a client machine to log in to a remote server application that will return the questions of the survey.
The questions are sent to the client one by one. This is, when the user logs in, the server sends the first question, the user answers and the client sends the response back to the server. The server stores the answer in the database and sends the next question back to the client. This process is repeated until all the questions are answered.
The questions will be sent as java objects and will encapsulate some images. The answers of the client will be simple int.
At peak time I can have ~15000 users per hour taking the survey
My client application will be a java Swing application. For the server side I am still trying to decide:
I am considering using a java multithreaded server application and communicate with the swing client using RMI. I read that RMI is not very scalable because it does not reuse threads and because it does not have a way to define an upper limit in the number of threads that can be generated; this situation could make the server crash if I have many clients using the system at the same time (which will happen).
I am also considering using tomcat as my server application and have the swing application to connect to servlets that will return the question objects serialized. This option will use the multithreaded and session management capabilities of tomcat. However, I am not sure if I am adding to much overhead by using tomcat.
Does any body have some advice for me?
Thanks
The system is a computerized survey with a client-server architecture with a database in the back end. Some of the requirements of the system are the following:
Users will use a client machine to log in to a remote server application that will return the questions of the survey.
The questions are sent to the client one by one. This is, when the user logs in, the server sends the first question, the user answers and the client sends the response back to the server. The server stores the answer in the database and sends the next question back to the client. This process is repeated until all the questions are answered.
The questions will be sent as java objects and will encapsulate some images. The answers of the client will be simple int.
At peak time I can have ~15000 users per hour taking the survey
My client application will be a java Swing application. For the server side I am still trying to decide:
I am considering using a java multithreaded server application and communicate with the swing client using RMI. I read that RMI is not very scalable because it does not reuse threads and because it does not have a way to define an upper limit in the number of threads that can be generated; this situation could make the server crash if I have many clients using the system at the same time (which will happen).
I am also considering using tomcat as my server application and have the swing application to connect to servlets that will return the question objects serialized. This option will use the multithreaded and session management capabilities of tomcat. However, I am not sure if I am adding to much overhead by using tomcat.
Does any body have some advice for me?
Thanks