Depends upon what you mean by clustering. There's the physical side of it, such as vertical scaling (multiple app servers running on the same "big" box), or horizontal scaling (multiple app servers, each running on their own box). There's the poor man's clustering, where a simple load balancer (hardware or software) up front forwards the request to a different node in the "cluster" (and uses things such as sticky IP, etc. to keep sending the same user back to the same server). There's app server clustering, where sessions are distributed (for failover), and the "front-end" is smart enough to do a little load balancing, etc. (most of the big guys do this, such as WebSphere, WebLogic, etc.).

I've done at least a little work with all types (in a J2EE environment). Of course, if you mean, specifically, EJBs in a clustered environment, then it depends upon other things, as well (how many databases, the use of stateful session beans, transactional setup, etc.).

Dan