Problem about EntityManager.
grdzeli_kaci May 29, 2007 12:17 PMhi 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.