I wish that I could say, "OK, here are the ten things you need to learn..." but we can at least give you a few things you take your big red sharpie marker and cross out in your spec. I will be more specific as we get into individual objectives, but here's a starting point:
THINGS YOU CAN IGNORE FOR THE EXAM:
* Anything at all about
EJB 1.1 (or earlier)
* Anything at all about EJB 2.1
* Anything at all about non-EJB parts of the J2EE spec, in other words, you do NOT need to know about web components
* Anything about what is in the EJBMetaData interface. You DO need to know how to get it (especially so that you can recognize when you are looking at a local vs. remote home -- remember, the geEJBMetaData() method is ONLY in the remote home, so if you see that method, it's a Big Clue...)
* Details about the 'handles'. You DO need to know under which circumstances they are available (remote interfaces ONLY!), and what they're for, but that's it.
* Anything about BMP (so, chapter 12 and 13 are out, as well as chapter 14 about CMP 1.1)
* Deep details about JMS. You *do* need to know about message-driven beans, per the objectives, but you will only have a handful of questions on MDB, and you aren't expected to be a JMS expert.
* Anything about isolation levels (other than knowing that you can't control them from EJB! And that the 2.0 spec really has nothing to say about isolation levels)
* Chapter 19!! (Support for distribution and interoperability) The whole thing. You DO need to know that IIOP is the assumed wire protocol (even if it isn't used) and that this is why you need PortableRemoteObject.narrow() with your remote home stubs, but this is covered in the objectives on "client view". So, no details on propogation of security, IDL, etc.
* Every possible exact tag syntax for the DD. BUT... be warned that there *are* questions that will expect you to know WHICH tags/elements are used in a particular scenario. You will need to recognize which tags make up a particular element. Especially the ones that matter. So you will need to know the difference between, say, security roles and security role *references*, but you won't necessarily have to memorize the exact tag structrue. Still, I'd become pretty familiar with the DD. Yes we DO expect that you might use tools to generate the DD, but as a developer it is still YOU who must supply the information to the tool, so you need to know about each part of the DD in pretty good detail.
* Anything about security that is not covered in the spec. So, you don't need to know about authorization mechanisms. You DO need to know about roles/references, and how to use programmatic security info (getCallerPrincipal() and isCallerInRole(), and know about the 'run-as' feature in 2.0)
* Anything in the J2EE API (including things that have been promoted to J2SE as of 1.4), EXCEPT for the interfaces / classes covered in the objectives:
So, you DO need to know exactly what is in the EJBObject, EJBHome, EJBLocalHome, EJBLocalObject, SessionBean, EnterpriseBean, MessageDrivenBean, EntityBean, SessionContext, EntityContext,MessageDrivenContext, MessageListener, UserTransaction, and... I think that's it. Let me know if I left something out here...
* The APIs and technology requirements of EJB, EXCEPT you need to know exactly WHICH are part of EJB. In other words, you MUST know that JavaMail 1.1 (sending only) is included in any EJB 2.0 container, but you do NOT need to know anything about the JavaMail API.
Same for JNDI (except for the things covered in other objectives, mainly: client lookup and a bean's environment (
java:comp/env)
You MUST know that
JDBC, JTA, JMS, JAXP are all part of the EJB 2.0 specification. But you don't need to know how they work, beyond what you need for the other objectives, mainly: javax.transaction.UserTransaction (for JTA) and the MessageListener interface (for JMS). Oh yeah, you do need to know about JMS topics and queues, but not in detail.
* ANYTHING that is vendor-specific.
* ANYTHING that involves a particular app server, including the reference implementation.
I cannot think of a single question that is not taken directly from the spec. What makes the questions challenging is that the questions expect you to *infer* certain things from looking at code or a scenario. For example, if you see a client doing a lookup, and the client does NOT perform a narrow on the home, AND you are told to assume the client code is legal... what does this tell you? That the interface is local! But of course, that's not what the question will ask... it might ask you if you can use that same reference to call getHomeHandle(), which you will say NO, because you can see from the code that you're working with a local interface, and therefore getHomeHandle() does not apply.
OK, go have fun
More later...
cheers,
Kathy