When should EJB 3 be used? I mean in what context or situations? High volume applications? Financial Services?
Personally, i haven't seen or coded an EJB project aside from the terribly implemented EJB 2 e-commerce application that i have tested in my previous company.
I am trying to gather all info I can for EJB's cause i want to take the SCBCD 5.0 exam, but i really cannot see its use or its market value when you have simpler alternatives in implementing business objects like what other frameworks (spring, rails, grails, jruby) has shown.
Spring is the only one you listed that is a direct competitor to EJB. The traditional reasons for using EJB are security/transactions/remoting/etc. Which are now all supported by Spring. EJB does provide benefits if you need failover or to decouple the web layer from ejb layer by server. I haven't dived into Spring enough to know - maybe this is possible now too. In any case, they are features that are rarely used.
other advantage of ejb3 is ease of development. With ejb3, you don't have to manage too many deployment descriptors files. However, the latest trend is that organizations are moving towards spring framework because with ejb development there is a the cost involved in licensing issues for hosting ejbs applications.
The architecture is moving towards managing many small tomcat server hosting spring framework along with http server.