Does anybody have a generic model for estimating hardware needs according to estimated number of users for web based J2EE systems?
This is very often application specific. The hardware required depends on how you are going to use it. So for some applications a particular piece of hardware may easily support a given load, however for more resource heavy apps you may need more.
The best way of finding out what your app requires is to profile an initial prototype (or similar application) and plan based on those measurements. A good tool for this is predictor V (available here: www.crovan.com ). It allows you to profile your application and gather fine and coarse grained information in relation to resource consumption. You can then perform capacity planning by modelling your system using predictor V's simulation tool. The simulation tool allows you to apply differnt user loads/hardware profiles to the simualtion model that you create based on the performance metrics collected during profiling.
We have used this tool as part of a performance engineering course at our university and found it quite useful for this type of planning.