I'm a software engineer, experienced with Java, server side programming and perf & scalability issues in general, and with both an academic and an industry background. New to EJB, which is why I read this book.
This book is actually 4 stars as an introductory book. It got me to up to speed with EJB, enough to understand it's programming paradigm fairly well. However, where I'm trying to go is to deeply understand perf. and scalability issues that will arise for large deployments (millions of users, for e.g) and exactly what EJBs offer in that area. Although clustering and transactions are discussed, the level of detail I need is greater - techniques for optimal caching are only skimmed, not thoroughly discussed. Additionally, one or more of the authors has this rather irritating habit of using the wrong terminology. Cases in point:
1) "The Halting Problem" of computer science is, rather cheekily exemplified by a program that blocks forever. Check it out for yourself from other sources - that is NOT the halting problem. It isnt that simple.
2) "Store and forward" is again, rather cheekily, described as "spool messages and send them when the queue comes back up". No, that is not what it is. Check it out for yourself from other sources. It is originally a networking term used in a different context. Simply because you are storing and forwarding doesnt mean you unilaterally christen your technique "store-and-forward", without investigating the original and well-known usage of the term.
3) "Reliability" in the term RAS (Reliability, Availability, Serviceability) is exemplified by - "if the simplest request takes 10ms to complete with one user, the system is reliable if the same request takes 10ms with 1,000,000 concurrent users.". That is NOT the definition of reliability. Reliability has more to do with fault detection and avoidance, not what is mentioned above, which seems more to do with throughput.
These are only a few of the incorrectly used terms. To most, I am only nitpicking. But for those who really want to go deep and do not want to waste 30-40% of their time reconciling terminologies, this is important. If the authors dispensed with trying to rename and falsely name common terms, their ideas would be communicated quicker, at least to audiences who are used to the well-known meanings of common terms.