Here is a part of a text from second link:
"Mechanism 1: The WEB-INF/lib Directory
If you place a library JAR file (for example, struts.jar) into the WEB-INF/lib directory of the WAR file, a web application or web module can use the Struts APIs. bla bla bla ... This mechanism cannot be used by EJB modules."
I'm not an expert, but as far as I know, there are at least two kinds of containers in JBoss, WebContainer and EJBContainer. If you place BookShop.jar in WEB-INF/lib dir, then ejbDeployer doesn't create EJB components and doen't put theirs names in JNDI.
Try to do so, and put BookShop.jar in deploy dir. Of course, if you want to have everything in one archive, the ear will be the best solution.