7 Replies Latest reply on Oct 24, 2006 9:31 PM by Barry Sheward

    Seam Problem!!! URGENT, please

    Maurizio Argoneto Newbie

      I'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....