Bonsoir,
J'utilise JBoss avec EJB3, et lorsque je fais un Context#lookup(String) j'ai l'exception suivante:
javax.naming.NameNotFoundException: StoreManagerBean not bound
Voici les bouts de code utiles à la compréhension :
1 2 3 4 5 6
| @Remote
@Local
public interface StoreManager {
List<Store> getStores();
void addStore(Store s);
} |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| //@EJB(name="StoreManagerBean", beanInterface=StoreManager.class)
@Stateless
//@Local ({StoreManager.class})
public class StoreManagerBean implements StoreManager, Serializable {
private static final long serialVersionUID = 1L;
@PersistenceContext(unitName="StoreManagerBean")
private EntityManager em;
@SuppressWarnings("unchecked")
public List<Store> getStores() {
return em.createNamedQuery("findAll").getResultList();
}
public void addStore(Store s) {
em.persist(s);
}
} |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| public class EjbLocator {
private Context ctx;
private EjbLocator() {
try {
//le fichier jndi.properties est bien présent dans le répertoire racine
ctx = new InitialContext(System.getProperties());
} catch (NamingException e) {
e.printStackTrace();
throw new Error(e);
}
}
public static EjbLocator getLocator() {
return instance;
}
public StoreManager getStoreManager() {
return getEjb(StoreManager.class, "StoreManagerBean");
}
@SuppressWarnings("unchecked")
private <T> T getEjb(Class<T> ejbClass, String name) {
try {
return (T) ctx.lookup(name + "/local"); //c'est là que ça plante
} catch (NamingException e) {
e.printStackTrace();
return null;
}
}
} |
Merci beaucoup d'avance de votre aide...
Partager