How should I create/refer to another bean from within a bean implementation?

Getting a reference to a server bean from another server bean is just like getting the reference from the client. Also, the EJB 1.1 specification states that your deployment descriptor must indicate all EJBs that your EJB will lookup. You should be using the EJB-ref mechanism to hook your EJBs together. You can use direct JNDI names but this is inflexible and does not leave any room for the Container to optimize access to collocated beans. For example, say you have a deployment where beans A and B are both replicated in two different containers, for performance and/or availability reasons. Clearly, you want every instance of A in container one to use instances of B also in container one. Likewise for container two. An EJB container can enforce this locality constraint using ejb-links, but not always using direct JNDI names.