设置JSF/j_安全检查测试时出现ManagedBeanCreationException问题

设置JSF/j_安全检查测试时出现ManagedBeanCreationException问题,jsf,jaas,j-security-check,Jsf,Jaas,J Security Check,我希望有人能给我一个提示,除了这个例外。我正在构建一个环境,在这个环境中,我可以用JSF测试j_security_check,我注意到当我重新部署应用程序而不重新启动glassfish时,我看到了这个错误。我原以为重新部署战争是完全安全的,但我的设置在glassfish重新启动和重新部署战争之前一直处于关闭状态。我担心这会在以后成为一个问题。有什么建议吗 我正在使用Glassfish 3.1.2、NetBeans 7.1.2 com.sun.faces.mgbean.ManagedBeanCre

我希望有人能给我一个提示,除了这个例外。我正在构建一个环境,在这个环境中,我可以用JSF测试j_security_check,我注意到当我重新部署应用程序而不重新启动glassfish时,我看到了这个错误。我原以为重新部署战争是完全安全的,但我的设置在glassfish重新启动和重新部署战争之前一直处于关闭状态。我担心这会在以后成为一个问题。有什么建议吗

我正在使用Glassfish 3.1.2、NetBeans 7.1.2

com.sun.faces.mgbean.ManagedBeanCreationException: An error occurred performing resource injection on managed bean userController at com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:229) at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:105) at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409) at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269) at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244) at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116) at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:103) at com.sun.el.parser.AstValue.getValue(AstValue.java:179) at com.sun.el.parser.AstDeferredExpression.getValue(AstDeferredExpression.java:63) at com.sun.el.parser.AstCompositeExpression.getValue(AstCompositeExpression.java:68) at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224) at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50) at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109) at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182) at javax.faces.component.UIOutput.getValue(UIOutput.java:169) at com.sun.faces.renderkit.html_basic.OutputLinkRenderer.getValue(OutputLinkRenderer.java:182) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355) at com.sun.faces.renderkit.html_basic.OutputLinkRenderer.renderAsActive(OutputLinkRenderer.java:191) at com.sun.faces.renderkit.html_basic.OutputLinkRenderer.encodeBegin(OutputLinkRenderer.java:107) at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1755) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:662) Caused by: com.sun.faces.spi.InjectionProviderException: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting invoke lifecycle method private void avenger.UserController.startup() at org.glassfish.faces.integration.GlassFishInjectionProvider.invokePostConstruct(GlassFishInjectionProvider.java:231) at com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:223) ... 56 more Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting invoke lifecycle method private void avenger.UserController.startup() at org.glassfish.faces.integration.GlassFishInjectionProvider.invokeLifecycleMethod(GlassFishInjectionProvider.java:393) at org.glassfish.faces.integration.GlassFishInjectionProvider.invokePostConstruct(GlassFishInjectionProvider.java:306) at org.glassfish.faces.integration.GlassFishInjectionProvider.invokePostConstruct(GlassFishInjectionProvider.java:229) ... 57 more Caused by: java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException at java.security.AccessController.doPrivileged(Native Method) at org.glassfish.faces.integration.GlassFishInjectionProvider.invokeLifecycleMethod(GlassFishInjectionProvider.java:376) ... 59 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.glassfish.faces.integration.GlassFishInjectionProvider$2.run(GlassFishInjectionProvider.java:382) ... 61 more Caused by: java.lang.ClassCastException: avenger.MyUser cannot be cast to avenger.MyUser at avenger.UserController.updateUserList(UserController.java:103) at avenger.UserController.startup(UserController.java:39) com.sun.faces.mgbean.ManagedBeanCreationException:在托管bean userController上执行资源注入时出错 位于com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:229) 在com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:105)上 在com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)上 在com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)上 位于com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244) 位于com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116) 在com.sun.faces.el.DemuxCompositeELResolver.\u getValue(DemuxCompositeELResolver.java:176) 在com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)上 位于com.sun.el.parser.astiIdentifier.getValue(astiIdentifier.java:103) 位于com.sun.el.parser.AstValue.getValue(AstValue.java:179) 在com.sun.el.parser.astdeeredexpression.getValue(astdeeredexpression.java:63)上 在com.sun.el.parser.AstCompositeExpression.getValue(AstCompositeExpression.java:68) 在com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224)上 位于org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50) 位于com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109) 位于javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) 位于javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182) 位于javax.faces.component.UIOutput.getValue(UIOutput.java:169) 位于com.sun.faces.renderkit.html_basic.OutputLinkRenderer.getValue(OutputLinkRenderer.java:182) 位于com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355) 位于com.sun.faces.renderkit.html_basic.OutputLinkRenderer.renderAsActive(OutputLinkRenderer.java:191) 在com.sun.faces.renderkit.html_basic.OutputLinkRenderer.encodeBegin上(OutputLinkRenderer.java:107) 位于javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820) 位于javax.faces.component.UIComponent.encodeAll(UIComponent.java:1755) 位于javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) 位于javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) 在com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)上 位于com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) 位于javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288) 位于com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) 位于com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 在com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)上 位于javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 位于org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542) 位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) 位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 位于org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) 位于org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) 位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) 位于org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) 位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) 位于com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) 位于com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) 在com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)上 在com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746) 位于com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045) 在com.sun.grizzly.http.DefaultProtocolFilter.execute上(DefaultProtocolFilter.java:228) 位于com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 在com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)上 在com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)上 http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 位于com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 在com.sun.grizzly.SelectionKeyContextTask.call上(SelectionKeyContextTask.java:59) 位于com.sun.grizzly.ContextTask.run(ContextTask.java:71) 位于com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 位于com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 运行(Thread.java:662) 由以下原因引起:com.sun.faces.spi.InjectionProviderException:com.sun.enterprise.container.common.spi.util.InjectionException:尝试调用生命周期方法私有void avenger.UserController.startup()的异常 位于org.glassfish.faces.integration.GlassFishInjectionProvider.invokePostConstruct(GlassFishInjectionProvider.java:231) 位于com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:223) ... 56多 原因:com.sun.enterprise.container.comm
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<welcome-file-list>
    <welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<security-constraint>
    <display-name>Admin</display-name>
    <web-resource-collection>
        <web-resource-name>Admin Views</web-resource-name>
        <description/>
        <url-pattern>/admin/*</url-pattern>
    </web-resource-collection>
</security-constraint>
<security-role>
    <description/>
    <role-name>ADMIN</role-name>
</security-role>
<security-role>
    <description/>
    <role-name>USER</role-name>
</security-role>
@ManagedBean(eager = true) @SessionScoped public class UserController implements Serializable { /** * Creates a new instance of UserBean */ public UserController() {} @PostConstruct private void startup() { System.out.println("inilitiazing UserController"); updateUserList(); } @PreDestroy private void shutdown() { System.out.println("destroying UserController"); Utils.stopEntityManager(); } private static final long serialVersionUID = 1L; @Override public int hashCode() { int hash = 5; hash = 67 * hash + (this.userList != null ? this.userList.hashCode() : 0); hash = 67 * hash + (this.cUser != null ? this.cUser.hashCode() : 0); return hash; } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final UserController other = (UserController) obj; if (this.userList != other.userList && (this.userList == null || !this.userList.equals(other.userList))) { return false; } if (this.cUser != other.cUser && (this.cUser == null || !this.cUser.equals(other.cUser))) { return false; } return true; } //the current user MyUser cUser = new MyUser(); public MyUser getMyUser() { return cUser; } public void setMyUser(MyUser cUser) {this.cUser = cUser;} //the new user MyUser nUser = new MyUser(); public MyUser getNewUser() { return nUser; } public void setNewUser(MyUser nUser) {this.nUser = nUser;} // list of current users List userList = new LinkedList(); public void setUserList(List uList) {userList = uList;} public List getUserList() {return userList;} public String updateUserList() { System.out.println("updateUserList()" ); EntityManager em = Utils.getEntityManager(); //Query q = em.createNamedQuery("MyUser.findAll"); Query q = em.createQuery("Select u FROM MyUser u", MyUser.class); userList = q.getResultList(); for (MyUser cu : userList) { String groupList = ""; for (Grouptable gt : cu.getGrouptableList()) { groupList += ":"+gt.getGrouptablePK().getGroupid(); } cu.setGrouplist(groupList); } return "users.xhtml"; } public boolean usernameExist() { return false; } public String resetNewUser() { nUser = new MyUser(); return "createuser.xhtml"; } public String createNewUser () { System.out.println("attempting to create account with\n" + "\tusername: " + nUser.getUsername() +"\n" + "\tpassword: "+nUser.getPassword() +"\n" + "\tfirst name: "+nUser.getFirstName()+"\n" + "\tlast name: "+nUser.getLastName()+"\n"); //TODO: check if newUser already exist if so send message to user // set the hashed password MessageDigest md = null; byte [] digest; try { md = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException ex) { Logger.getLogger(UserController.class.getName()).log(Level.SEVERE, null, ex); } System.out.println("nUser"+nUser); //System.out.println("cUser.password"+cUser.getPassword()); digest = md.digest(nUser.getPassword().getBytes()); nUser.setPassword(Utils.toHex(digest)); System.out.println("creating user: " + nUser.getUsername() + " password: "+nUser.getPassword()); EntityManager em = Utils.getEntityManager(); em.getTransaction().begin(); em.persist(nUser); em.getTransaction().commit(); updateUserList(); return "users.xhtml"; } public String deleteUser () { System.out.println("deleting user: "+cUser.getUsername()); EntityManager em = Utils.getEntityManager(); cUser = em.find(MyUser.class, cUser.getUsername()); em.getTransaction().begin(); em.remove(cUser); em.getTransaction().commit(); //em.close(); return "users.xhtml"; } public String deleteSelectedUsers () { for (MyUser cu : userList) { if (cu.getSelected()) { System.out.println("Planning to remove: "+cu); } } EntityManager em = Utils.getEntityManager(); for (MyUser cu : userList) { if (cu.getUsername().equalsIgnoreCase("ADMIN") && cu.getSelected()) { System.out.println("admin account can not be deleted"); continue; } if (cu.getSelected()) { MyUser targetUser = em.find(MyUser.class, cu.getUsername()); System.out.println("removing user: "+cu.toString()); em.getTransaction().begin(); em.remove(targetUser); em.getTransaction().commit(); } } updateUserList(); return "users.xhtml"; } public String login() { System.out.println("user attempting to login..."); System.out.println("username: "+cUser.getUsername()); System.out.println("password: "+cUser.getPassword()); // set the hashed password MessageDigest md = null; byte [] digest; try { md = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException ex) { Logger.getLogger(UserController.class.getName()).log(Level.SEVERE, null, ex); } digest = md.digest(cUser.getPassword().getBytes()); cUser.setPassword(Utils.toHex(digest)); MyUser userFound = Utils.getEntityManager().find(MyUser.class, cUser.getUsername()); if (userFound == null) { System.err.println("user does not exist"); return null; } if (!userFound.getPassword().equalsIgnoreCase(cUser.getPassword())) { System.err.println("Incorrect Password"); return null; } return "users.xhtml"; // FacesContext context = FacesContext.getCurrentInstance(); // HttpServletRequest request = (HttpServletRequest) context.getExternalContext(); // try { // request.login(this.cUser.getFirstName(), this.cUser.getPassword()); // this.cUser = Utils.getEntityManager().find(MyUser.class,this.cUser.getUsername()); // } catch (ServletException e) { // context.addMessage(null, new FacesMessage("Unknown login")); // } } public MyUser getUser() { if (cUser==null) { Principal principal = FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal(); if (principal != null) { //cUser = userDAO.find(principal.getName()); // Find User by j_username cUser = Utils.getEntityManager().find(MyUser.class, principal.getName()); } } return cUser; } } create table usertable ( username varchar(128) NOT NULL CONSTRAINT USER_PK PRIMARY KEY , password varchar(128) NOT NULL, firstname varchar(128) NOT NULL, lastname varchar(128) NOT NULL ); create table grouptable( username varchar(128) NOT NULL, groupid varchar(128) NOT NULL, CONSTRAINT GROUP_PK PRIMARY KEY(username, groupid), CONSTRAINT USER_FK FOREIGN KEY(username) REFERENCES usertable(username) ON DELETE CASCADE ON UPDATE RESTRICT ); insert into usertable(username,password,firstname,lastname) values ('admin', '21232f297a57a5a743894a0e4a801fc3','',''); insert into grouptable(username,groupid) values ('admin', 'USER'); insert into grouptable(username,groupid) values ('admin', 'ADMIN');