C'est vrai que l'appel à tes EJB Entity doit être fait via leur interface locale dans ton EJB Session (cela évite des appels réseau).
Pour cela il faut deux choses :

Récupérer tes EJBLocalHome :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Object o = ctx.lookup(nomJNDIdetonEJBEntity);
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Object o = ctx.lookup(new StringBuffer("java:comp/env/").append(ejbRef).toString());
Mais le mieux c'est de mettre en place le pattern ejb home factory

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
public class HomeFactory {
	public Object getHome(String ejbRef) throws NamingException {
		if (initialContext != null) {
			Object nsObject =
				initialContext.lookup(
					new StringBuffer("java:comp/env/") 
						.append(ejbRef)
						.toString());
			if (nsObject instanceof EJBLocalHome) {
				return nsObject;
			} else {
				EJBHome ejbHome =
					(EJBHome) javax.rmi.PortableRemoteObject.narrow(
						(org.omg.CORBA.Object) nsObject,
						EJBHome.class);
				return ejbHome;
			}
		} else {
			throw new NamingException("HomeFactory: no InitialContext");
		}
	}
}
ou ejbRef est la référence d'un ejb.

Déclarer dans le paramétrage de ton EJB Session, les références locales vers tes EJB Entity.