我有两个实现接口的无状态 EJB。要加载我正在使用 InitialContext 的实现,但它总是以NamingException
.
界面
package app.ejb.login;
public interface UserValidation {
public static final int DBValidation = 1;
public static final int LDAPValidation = 2;
public int validateUser(String userid, String password) throws InvalidAccessException;
}
第一个实现
package app.ejb.login;
@Stateless
public class LDAPUserValidationImpl implements UserValidation {
@Override
public int validateUser(String userid, String password) throws InvalidAccessException {
........................
}
}
和第二个实现
package app.ejb.login;
@Stateless
public class DBUserValidationImpl implements UserValidation {
@Override
public int validateUser(String userid, String password) throws InvalidAccessException {
..................
}
}
这是根据配置调用实现的代码:
package app.ejb.login;
@Stateless
public class LoginBean {
.....
.....
UserValidation userValidation = null;
InitialContext ic = null;
try {
ic = new InitialContext();
if (flag == 1)
userValidation = (UserValidation)
ic.lookup("java:comp/env/app/ejb/login/DBUserValidationImpl");
else
userValidation = (UserValidation)
ic.lookup("java:comp/env/app/ejb/login/LDAPUserValidationImpl");
}
catch (NamingException e) {
System.out.println("Error in InitialContext: " + e.getMessage());
此代码打印:
InitialContext 中的错误:env/app/ejb/login/DBUserValidationImpl -- 服务 jboss.naming.context.java.comp."app-2.0"."app-ejb-2.0".LoginBean.env.app.ejb.login。 DBUserValidationImpl
加载 bean 的正确 JNDI 是什么?不是完整的包路径吗?
我也尝试过,java:module/app/ejb/login/DBUserValidationImpl
但遇到了同样的错误。