Seam Problem!!! URGENT, please
argomauro Oct 23, 2006 5:54 AMI've create a new seam application that insert in a MysqlDb an Object named "utente" and another named "profilo". I've create a Steteful java class that insert this objects and it's work fine.
Subsequently i've create a page for implement the Login functionality with another Stateful java class and only in this case the application return an error:
Caused by: org.jboss.seam.InstantiationException: Could not instantiate Seam component: managerLogin at org.jboss.seam.Component.newInstance(Component.java:735) at org.jboss.seam.Component.newInstance(Component.java:1308) at org.jboss.seam.Component.getInstance(Component.java:1263) at org.jboss.seam.Component.getInstance(Component.java:1246) at org.jboss.seam.jsf.SeamVariableResolver.resolveVariable(SeamVariableResolver.java:44) at org.apache.myfaces.el.ValueBindingImpl$ELVariableResolver.resolveVariable(ValueBindingImpl.java:569) at org.apache.commons.el.NamedValue.evaluate(NamedValue.java:124) at org.apache.myfaces.el.ValueBindingImpl.resolveToBaseAndProperty(ValueBindingImpl.java:450) at org.apache.myfaces.el.MethodBindingImpl.resolveToBaseAndProperty(MethodBindingImpl.java:180) at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:114) ... 25 more Caused by: javax.naming.NameNotFoundException: ManagerLogin not bound at org.jnp.server.NamingServer.getBinding(NamingServer.java:529) at org.jnp.server.NamingServer.getBinding(NamingServer.java:537) at org.jnp.server.NamingServer.getObject(NamingServer.java:543) at org.jnp.server.NamingServer.lookup(NamingServer.java:267) at org.jnp.server.NamingServer.lookup(NamingServer.java:270) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587) at javax.naming.InitialContext.lookup(InitialContext.java:351) at org.jboss.seam.Component.instantiate(Component.java:774) at org.jboss.seam.Component.newInstance(Component.java:731)
My Stateful class is:
@Stateful @Name("managerLogin") @Scope(ScopeType.SESSION) public class ManagerLogin implements Serializable { @In(create=true) private EntityManager em; @In(value = "login") private EntityLogin login = new EntityLogin(); @In(value = "utente") @Out private EntityUtente utente; @Logger private Log log; public String login() { List results = em.createQuery( "from utente where username=:username and password=:password") .setParameter("username", login.getUsername()) .setParameter("password", login.getPassword()) .getResultList(); if (results.size() == 0) { FacesMessages.instance().addFromResourceBundle("LoginNonValido"); return null; } else { Contexts.getSessionContext().set("loggedIn", true); utente = (EntityUtente) results.get(0); return "home" ; } } public String logout() { Contexts.getSessionContext().remove("loggedIn"); Seam.invalidateSession(); return "home"; } @Remove @Destroy public void destroy() { } }
My jsp page is:
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <html> <head> <title><h:outputText value="#{messages.Login}" /></title> </head> <body> <f:view> <h:form> <h1><h:outputText value="#{messages.Login}" /></h1> <h:outputText value="#{messages.LoginDetails}" /> <table> <tr> <td><h:inputText value="#{login.username}" id="username" /></td> </tr> <tr> <td><h:inputText value="#{login.password}" id="password" /></td> </tr> <h:commandButton type="submit" value="#{messages.Login}" action="#{managerLogin.login}" /> <h:commandButton type="submit" value="#{messages.Register}" action="insertUtente" /> </h:form> </f:view> </body> </html>
And the login bean is an object but not persistent that contains the user data entry for login:
@Name("login") public class EntityLogin implements Serializable { private static final long serialVersionUID = 188141350071143953L; public EntityLogin(String password, String username) { this.username = username; this.password = password; } public EntityLogin() { } private String username; private String password; @NotNull @Length(max = 10) public String getUsername() { return this.username; } public void setUsername(String username) { this.username = username; } @Length(max = 15) @NotNull public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } }
The login bean is the new entry in this code but precedently i've create an instance of the user in the ManagerLogin class but i was a different error,
componet not find ...
An example of the Stateful that work fine:
@Entity @Name("utente") @Scope(SESSION) @Table(name="utente") public class EntityUtente implements Serializable { private static final long serialVersionUID = 188141350071143952L; public EntityUtente(Integer id, String nome, String cognome,String email,String password,String username) { this.id = id; this.nome = nome; this.cognome = cognome; this.email = email; this.username = username; this.password = password; } public EntityUtente(){} private Integer id; private String username; private String nome; private String cognome; private String password; private String email; public void setId(Integer id) { this.id = id; } @Id @GeneratedValue public Integer getId() { return id; } @NotNull @Length(max=10) public String getUsername() { return this.username; } public void setUsername(String username) { this.username = username; } public void setNome(String nome) { this.nome = nome; } @Length(max=100) @NotNull public String getNome() { return nome; } public void setCognome(String cognome) { this.cognome = cognome; } @Length(max=100) @NotNull public String getCognome() { return cognome; } @Length(max=15) @NotNull public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } public void setEmail(String email) { this.email = email; } @Email public String getEmail() { return email; } }
For me it is a incomprensibile error, because others two similar cases work (ManagerUtente,ManagerProfilo)and the login action not.
Thanks for help....