@EJB不工作
问题描述:
我有这段代码作为登录页面 我使用Netbeans,所以我从我的数据库生成实体,然后生成(从我的实体类会话bean),一切工作正常... 现在我需要jsp登录页面这是代码@EJB不工作
--the jsp页面很简单,在这里它
<jsp:useBean id="loginBean" scope="page" class="Facades.loginBean"/>
<jsp:setProperty name="easyBean" property="*"/>
<form id="signInForm" action="" method="post">
<label>E-Mail:</label>
<input id="email" type="text" name="tryUsername" placeholder="enter your username" /><br>
<label>Password:</label>
<input id="password" type="password" name="tryPassword" placeholder="enter password" /><br>
<jsp:getProperty name="easyBean" property="result"/>
<input class="btn btn-default " type="submit" value="sign in "/>
</form>
--loginBeans代码没有问题,是我的问题:(
public class loginBean implements java.io.Serializable {
/*here is session bean generated from database entity*/
@EJB
private ServerFacade serverFacade;
private String tryUsername, tryPassword, result;
public EasyBean() {
tryUsername = "";
tryPassword = "";
result = "";
}
/*getters and setters for username and password*/
public String getResult() {
if (serverFacade != null) {
result = serverFacade.tryLogin(tryUsername, tryPassword);
return result;
} else {
return "null serverFacade";
}
}
public void setResult(String result) {
this.result = result;
}
}
在服务器外观我添加了tryLogin方法,它也是工作
问题是我的页面总是给我(“null serverFacade”)我无法正确初始化serverFacade,我不能注入它@EJB它保持空!
它为什么保持NULL? 任何一个可以帮我请:/
答
我发现,使用@EJB我需要查找它 这样的代码:
ServerFacade serverFacade = lookupServerFacadeBean();
private ServerFacade lookupServerFacadeBean() {
try {
Context c = new InitialContext();
return (ServerFacade) c.lookup("java:global/Kerberos/ServerFacade!Facades.ServerFacade");
} catch (NamingException ne) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
throw new RuntimeException(ne);
}
}
你有没有添加beans.xml的文件? – TMtech
我以为NetBeans自动添加它..,但我找不到它!有什么建议? –
请向我们展示EJB类/接口本身。你正在使用哪个EJB容器? – fg78nc