few terms related to application servers, etc:
POOL:
Imagine you need to create a connection object, or an object for an ejb. You create it, but do not reclaim it by calling close or remove. It stays in memory, and also maintains a connection with the database/application server. Hence consumes resources. One alternative is to have a factory, which will create objects for you and give you (ie you do not call new ObjectName() but say ObjectName.getInstance()). One special case is a Singleton, which gives you a single instance in the complete VM. Alternatively you could have a pool (say an array) of objects, and you allocate instances just from that pool. In this case, you would have a controlled number of instances within the app server that you will allocate. Resources are saved that way. If somebody has not closed/used an instance from pool, it could be timed out after some time.
LOAD BALANCING:
Single user connects to the system, attaches to an ejb instance, and gets his work done. If there are multiple users, but only a single ejb instances, the user either has to wait or the app server has to passivate previous instance and serve the other user. Hence if there are additional instances of ejbs,
servlets etc that the user is connected to, helps in "load balancing" when the number of users increase. This could also be done in terms of number of servers that are there. These servers are attached as a "CLUSTER". Users go through a common "PROXY", but they are routed to a particular server, and get their work done.
FAIL OVER:
In the above scenario, if the user were to be routed to a particular server within the cluster, and due to some reason, that server went down, the other server would service the user. The user would not even know that the server he was connected to went down. There is a "fail over" achieved here. One important feature that should be there for this to happen is "Session Replication", ie the user session on one server should be replicated (copied, cloned) on the other server so that fail over could be achieved if the server goes down