Tôi đang sử dụng lớp Bean sau:JNDI lookup không làm việc với 3.x EJB
@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";
}
}
Và phương pháp của tôi là
public String myMethod() {
try {
User user = (User) new InitialContext().lookup("UserBean");
return "xyz";
} catch (NamingException e) {
e.printStackTrace();
}
return null;
}
Ở đây tôi nhận được một
javax.naming.NameNotFoundException: Unable to resolve 'UserBean'. Resolved ''; remaining name 'UserBean'
Tên tra cứu JNDI 'UserBean' có vẻ đúng. Không biết vấn đề là gì. Có ai giúp đuợc không? Tôi đã triển khai ứng dụng của mình trên weblogic 12c, sử dụng JPA 2.0 và EJB 3.x
Cảm ơn bạn trước.
Tôi đã thử với chú thích như chỉ '@Stateless'. Tên EAR của tôi là Aahar_v.0.1 và tên EJB Module của tôi là Aahar_EJB_v.0.1, vì vậy tôi đã thử tên JNDI là 'java: Aahar_v.0.1/Aahar_EJB_v.0.1/User' và tôi vẫn nhận được 'javax.naming.NameNotFoundException : Không thể giải quyết 'java: global.Aahar_v.0.1.Aahar_EJB_v.0.1.User'. Đã giải quyết 'java: global.Aahar_v.0.1.Aahar_EJB_v.0.1'; tên còn lại 'Người dùng' ' Tôi có làm gì sai không? – Aditya
Bạn có cần một giao diện từ xa, tức là bạn cần tìm kiếm bên ngoài máy chủ ứng dụng? Nếu không, hãy thả giao diện – Andre
Vấn đề là tôi đang sử dụng Giao diện Từ xa. Sử dụng đơn giản chỉ là chú thích @Stateless mà không cần ánh xạ tên Các mã sau đây làm việc: mới lookup() InitialContext ("java: toàn cầu/ProjectName/môđun/BeanName FullyQualifiedNameOfRemoteInterface."); Cảm ơn @Andre! – Aditya