I am running Seam version 1.1.6 on a JBoss 4.0.5.GA server. While following the example from the Seam documentation (page 124) for creating a SeamLoginModule authentication method I have run into the following error:
09:37:41,228 ERROR [SeamLoginModule] Error invoking login method | javax.faces.el.EvaluationException: Exception while invoking expression #{authenticator.authenticate} | at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:153) | at org.jboss.seam.actionparam.ActionParamBindingHelper.invokeTheExpression(ActionParamBindingHelper.java:59) | at org.jboss.seam.actionparam.ActionParamMethodBinding.invoke(ActionParamMethodBinding.java:74) | [SNIP] | at java.lang.Thread.run(Thread.java:595) | Caused by: org.jboss.seam.RequiredException: In attribute requires value for component: authenticator.entityManager | at org.jboss.seam.Component.getInstanceToInject(Component.java:1920) | at org.jboss.seam.Component.injectFields(Component.java:1386) | at org.jboss.seam.Component.inject(Component.java:1156) | [SNIP] | ... 59 more This suggests that Seam is unable to locate and inject the entityManager by its component name. The relevant java bean that the login component is calling is as follows: @Name("authenticator") | public class Authenticator | { | @In EntityManager entityManager; | | public boolean authenticate() | { | return true; | } | } For completeness here, is the form that is calling the validation: <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | <ui:composition xmlns="http://www.w3.org/1999/xhtml" | xmlns:s="http://jboss.com/products/seam/taglib" | xmlns:ui="http://java.sun.com/jsf/facelets" | xmlns:f="http://java.sun.com/jsf/core" | xmlns:h="http://java.sun.com/jsf/html" | template="layout/template.xhtml"> | | <ui:define name="body"> | | <h1>Login</h1> | <p>Please login using any username and password</p> | | <h:messages styleClass="message"/> | | <h:form> | | <div class="dialog"> | <div class="prop"> | <span class="name">Username</span> | <span class="value"> | <h:inputText id="username" value="#{identity.username}"/> | </span> | </div> | <div class="prop"> | <span class="name">Password</span> | <span class="value"> | <h:inputSecret id="password" value="#{identity.password}"/> | </span> | </div> | <div class="prop"> | <span class="name">Remember me</span> | <span class="value"> | <h:selectBooleanCheckbox id="rememberMe" value="#{identity.rememberMe}"/> | </span> | </div> | </div> | | <div class="actionButtons"> | <h:commandButton value="Login" action="#{identity.login}"/> | </div> | | </h:form> | | </ui:define> | </ui:composition> I have also tried to annotate the EntityManager object in the following ways: @In("entityManager") EntityManager entityManager; | | @In(value="entityManager") EntityManager entityManager; but have recieved the same error. My configuration was generated by seam-gen and the authenticate method works fine until I try to inject an EntityManager into the component. I will create a Stateful Session Bean in order to try to inject the EntityManager by the EJB3.0 annotation @PersistenceContext rather than Seam @In annotation. Could this be caused by a filter loading order? I've looked at web.xml and it does not seem to be the cause. I think too that the identity component is a Seam component (ie. eats its own dogfood), therefore should not be a problem, Maybe the identity component is instantiated before other components like the entity manager? P.S. Thank you Gavin King for all your past helpful answers. View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4021216#4021216 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4021216 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user