ich folgende Bean Klasse bin mit:JNDI-Lookup nicht mit EJB 3.x arbeiten
@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";
}
}
Und meine Methode ist
public String myMethod() {
try {
User user = (User) new InitialContext().lookup("UserBean");
return "xyz";
} catch (NamingException e) {
e.printStackTrace();
}
return null;
}
Hier erhalte ich eine
javax.naming.NameNotFoundException: Unable to resolve 'UserBean'. Resolved ''; remaining name 'UserBean'
Der JNDI-Lookup-Name 'UserBean' scheint korrekt zu sein. Keine Ahnung, was das Problem ist. Kann mir bitte jemand helfen? Ich habe meine Anwendung auf Weblogic 12c mit JPA 2.0 und EJB 3.x
im Voraus bereitgestellt. Vielen Dank im Voraus.
ich mit dem Vermerk als nur ‚@Stateless‘ versuchte. Mein EAR-Name ist Aahar_v.0.1 und mein EJB-Modulname ist Aahar_EJB_v.0.1, also habe ich den JNDI-Namen als 'java: Aahar_v.0.1/Aahar_EJB_v.0.1/User' ausprobiert und bekomme immer noch 'javax.naming.NameNotFoundException : "Java: global.Aahar_v.0.1.Aahar_EJB_v.0.1.User" konnte nicht aufgelöst werden. Gelöst 'java: global.Aahar_v.0.1.Aahar_EJB_v.0.1'; verbleibender Name 'User' ' Mache ich etwas falsch? – Aditya
Benötigen Sie eine Remote-Schnittstelle, d. H. Müssen Sie außerhalb des Anwendungsservers suchen? Wenn nicht, löschen Sie die Schnittstelle – Andre
Das Problem war, dass ich eine Remote-Schnittstelle verwendet habe. einfach die @Stateless Anmerkung ohne zugeordneten Namen verwenden Der folgende Code funktioniert: new Initial() Lookup ("java: global/Projektname/Module/BeanName FullyQualifiedNameOfRemoteInterface."); Dank @Andre! – Aditya