The javax.rmi.PortableRemoteObject’s narrow() method runs code written by the server vendor. But all we care about is that it takes the object we got from JNDI and gives us back something that really does implement the home interface.
In other words, it gives us back something we can then cast to the home interface type, and call create().
The home stub returned from a JNDI lookup might not implement the home interface!
You might get back an IIOP stub that isn’t castable to the home interface of your bean. And that means you couldn’t call create().
To get a stub that’s castable to the home interface, you have to first narrow() the object you get from the JNDI lookup on the bean home.
(But only when the home interface is Remote.)
You don’t need to know the details of IIOP
For EJB, you don’t need to know how IIOP works, unless you intend to develop non-Java CORBA clients. But we won’t go there. Not here, in the book, and not in the exam, either. The details are way out of scope.
But... you DO need to know that the spec requires Bean Providers to assume that the container is using IIOP, and that your bean must be IIOP-compliant.
What does it take to be IIOP-compliant? Narrowing the Remote stubs, when needed. And there are a couple of other tiny IIOP issues we’ll look at in this chapter.
The bottom line is that you DO have to be aware that IIOP is being used, ...