używam następujące klasy BeanJNDI wyszukiwanie nie działa z EJB 3.x
@Stateless(name="UserBean", mappedName="UserBean")
@LocalBean
public class User implements UserRemote {
@PersistenceContext
private EntityManager em;
public User() {
}
public String login(String username, String password) {
Query query = em.createQuery("...");
return "xyz";
}
}
A moja metoda jest
public String myMethod() {
try {
User user = (User) new InitialContext().lookup("UserBean");
return "xyz";
} catch (NamingException e) {
e.printStackTrace();
}
return null;
}
Tu Dostaję
javax.naming.NameNotFoundException: Unable to resolve 'UserBean'. Resolved ''; remaining name 'UserBean'
Nazwa odnośnika JNDI "UserBean" wydaje się być poprawna. Nie mam pojęcia, na czym polega problem. Czy ktoś może ci pomóc? Wdrożyłem moją aplikację na weblogic 12c, używając JPA 2.0 i EJB 3.x
Z góry dziękuję.
Próbowałem z adnotacją, jak tylko „@Stateless”. Moja nazwa EAR to Aahar_v.0.1, a moja nazwa modułu EJB to Aahar_EJB_v.0.1, więc wypróbowałem nazwę JNDI jako "java: Aahar_v.0.1/Aahar_EJB_v.0.1/User" i nadal otrzymuję komunikat "javax.naming.NameNotFoundException" : Nie można rozwiązać "java: global.Aahar_v.0.1.Aahar_EJB_v.0.1.User". Rozwiązano "java: global.Aahar_v.0.1.Aahar_EJB_v.0.1"; pozostała nazwa "Użytkownik" Czy robię coś nie tak? – Aditya
Czy potrzebujesz zdalnego interfejsu, tzn. Czy musisz szukać poza serwerem aplikacji? Jeśli nie, upuść interfejs – Andre
Problem polegał na tym, że korzystałem z interfejsu zdalnego. Korzystanie prostu @stateless adnotacji bez odwzorowanym nazwy Poniższy kod przepracowanych: nowego InitialContext() odnośnika ("java: global/NazwaProjektu/ModuleName/FullyQualifiedNameOfRemoteInterface BeanName."); Dzięki @Andre! – Aditya