4 Replies Latest reply on May 29, 2007 2:03 PM by Eric Trautman

    Problem about EntityManager.

    paata lominadze Master

      hi all,
      i updated my jboss application server to 4.2.0GA and also i got seam from CVS.
      i tried to run simple seam-gen project,
      everything works fine, but when i tried to use database level authentication i got an error like this :

      javax.el.ELException: org.jboss.seam.RequiredException: In attribute requires non-null value: authenticator.em
       at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:329)
       at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:338)
       at org.jboss.el.parser.AstPropertySuffix.invoke(AstPropertySuffix.java:58)
       at org.jboss.el.parser.AstValue.invoke(AstValue.java:96)
       at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
      ..................................................................
      Caused by: org.jboss.seam.RequiredException: In attribute requires non-null value: authenticator.em
       at org.jboss.seam.Component.getValueToInject(Component.java:1923)
       at org.jboss.seam.Component.injectAttributes(Component.java:1372)
       at org.jboss.seam.Component.inject(Component.java:1203)
       at org.jboss.seam.interceptors.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:46)
      
      


      i did not understand why is this object is null :(

      here is project snippets
      1. Authenticator class:
      
      @Name("authenticator")
      public class Authenticator {
      
       @Logger Log log;
      
       @In Identity identity;
      
       @In() EntityManager em;
      
       public boolean authenticate() {
       try {
       log.info("authenticating = "+identity.getUsername());
       List<Users> users = (List<Users>)em.createNamedQuery("Users.findByUserName").setParameter("userName",identity.getUsername()).getResultList();
       if (users==null || (users!=null && users.isEmpty())) {
       FacesMessages.instance().add("User #{user.username} does not exists");
       return false;
       } else {
       for (Users user : users) {
       byte dbpaswd [] = user.getUserPwd();
       String strpwd = identity.getPassword();
       MessageDigest md5 = MessageDigest.getInstance("MD5");
       md5.reset();
       md5.update(strpwd.getBytes());
       byte[] userpasswd = md5.digest();
      
       boolean result = MessageDigest.isEqual(userpasswd, dbpaswd);
       if (result) {
       identity.addRole("admin");
       return true;
       }
       }
       }
       return false;
       } catch (Exception e) {
       FacesMessages.instance().add("Could not login. System Error");
       return false;
       }
       }
      }
      


      2. Components.xml :

      <core:managed-persistence-context name="entityManager"
       auto-create="true"
       persistence-unit-jndi-name="java:/BillingEntityManagerFactory"/>
      

      3. Billing-dev-ds.xml file :
      <?xml version="1.0" encoding="UTF-8"?>
      <datasources>
       <local-tx-datasource>
       <jndi-name>BillingDatasource</jndi-name>
       <connection-url>jdbc:oracle:thin:@192.168.9.135:1521:DEVSTR</connection-url>
       <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
       <user-name>ccare</user-name>
       <password>ccare</password>
       </local-tx-datasource>
      </datasources>
      


      4. Client logi.xhtml
      <h:commandButton id="loginBtn" value="Login" action="#{identity.login}"/>
      


      what i did incorrect ?
      is it possible that reason of it is i have not this jar files into my ear file ???
      ?commons-jci-core-1.0-406301.jar
      ?commons-jci-janino-2.4.3.jar
      ?commons-lang-2.1.jar
      ?stringtemplate-2.3b6.jar


      this jars are described into documentation from where i got this example....



      Regards,
      Paata.