我有两个实现接口的无状态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
什么是正确的JNDI来加载bean?不是完整的打包路径吗?
我也尝试使用java:module/app/ejb/login/DBUserValidationImpl
,但遇到了相同的错误。
答案 0 :(得分:0)
这有效:
java:module/DBUserValidationImpl