Help w. setup of Seam CVS20060418 for Hibernate
bsmithjj Apr 24, 2006 11:39 AMI am trying to set up a seam project that uses EJB3 annotations on the entities , JSF for the views, and Hibernate as the persistence manager (Hibernate Sessions).
I am able to compile and deploy without errors; I am even able to invoke pages in my app without exceptions. However, it does not seem that Seam is doing what I expect (possibly I have misconfigured something).
What I am trying to do is create the skeleton of a simple login process. I have provided here, the User entity, and the SimpleLogin POJO I created to perform the login process:
@Entity @Table(name="user", uniqueConstraints = {@UniqueConstraint(columnNames={"a_number"})} ) @EntityListeners(BaseEntity.class) @Name("user") @Scope(ScopeType.SESSION) public class User extends BaseEntity implements Serializable { private final Log log = LogFactory.getLog(User.class); private static final long serialVersionUID = -795127549881852884L; private String aNumber; private Set<Link> links; public User() { log.info("new User()"); } @Column(name = "a_number",unique = true,insertable=true,nullable=false,updatable=false,length=12) public String getaNumber() { return aNumber; } public void setaNumber(String aNumber) { this.aNumber = aNumber; log.info("User.setaNumber("+aNumber+")"); } @OneToMany(cascade= CascadeType.ALL, mappedBy="user", fetch = FetchType.EAGER) public Set<Link> getLinks() { return links; } public void setLinks(Set<Link> links) { this.links = links; } }
and here is the SimpleLogin POJO:
@Name(value = "simpleLogin") @Scope(ScopeType.EVENT) public class SimpleLogin { @In(required = true) @Out private User user; @In(create=true) private Session appssoDB; @In(create=true) private FacesMessages facesMessages; public String login() { final User u = (User)appssoDB.createQuery("from User where aNumber=:aNumber") .setParameter("aNumber",user.getaNumber()) .uniqueResult(); if (user == null) { facesMessages.add("Invalid A Number"); return "login"; } else { return "loggedIn"; } } }
now here is a page that I borrowed from one of the Seam examples and adapted to use these beans:
<h:form> <div id="document"> <div id="container"> <div id="sidebar"> <fieldset> <div> <h:outputLabel for="username">Login Name</h:outputLabel> <h:inputText id="username" value="#{user.aNumber}" style="width: 175px;" /> </div> <div class="errors"><h:messages globalOnly="true"/></div> <div class="buttonBox"><h:commandButton action="#{simpleLogin.login}" value="Account Login" class="button" /></div> <div class="notes"><h:commandLink action="register">Register User</h:commandLink> | Ask for Help</div> </fieldset> </div> <div id="footer">Created with JBoss Seam, Facelets, and JSF 1.1.01 Ref. Impl.</div> </div> </div> </h:form> <ui:debug hotkey="D"/> #{conversation.id}
When I deploy the app, I get the following (relevant snippets?) in the server console:
11:19:32,743 INFO [ServletContextListener] Welcome to Seam 1.0 rc1 11:19:32,758 INFO [Initialization] initializing Seam ... ... ... 11:19:35,868 INFO [User] new User() 11:19:35,915 INFO [User] new User() 11:19:35,915 INFO [User] User.setaNumber(null) 11:19:36,040 INFO [SessionFactoryObjectFactory] Factory name: java:/appssoSessionFactory 11:19:36,040 INFO [NamingHelper] JNDI InitialContext properties:{} 11:19:36,055 INFO [SessionFactoryObjectFactory] Bound factory to JNDI name: java:/appssoSessionFactory ... ...
There are no exceptions in the deployment and it appears from the lines above that Seam is started and hibernate is aware of my User class.
So I invoke my main.seam page.. everthing displays 'just fine' no exceptions - I get conversation.id = 1, which I take to mean that seam is participating in the request processing successfully. Here is the server.log contents that I see when I invoke main.seam
2006-04-24 11:31:30,167 DEBUG [com.sun.faces.lifecycle.LifecycleImpl] execute(com.sun.faces.context.FacesContextImpl@5f62a9) 2006-04-24 11:31:30,167 DEBUG [org.jboss.seam.contexts.Lifecycle] >>> Begin web request 2006-04-24 11:31:30,167 DEBUG [com.sun.faces.lifecycle.RestoreViewPhase] Entering RestoreViewPhase 2006-04-24 11:31:30,167 DEBUG [com.sun.faces.application.ViewHandlerImpl] URL pattern of the FacesServlet executing the current request .jsf 2006-04-24 11:31:30,167 DEBUG [com.sun.faces.application.ViewHandlerImpl] viewId after appending the context suffix /main.xhtml 2006-04-24 11:31:30,167 DEBUG [com.sun.faces.application.StateManagerImpl] Begin restoring view in session for viewId /main.xhtml 2006-04-24 11:31:30,167 DEBUG [com.sun.faces.application.StateManagerImpl] Restoring view from session for viewId /main.xhtml 2006-04-24 11:31:30,167 DEBUG [com.sun.faces.application.StateManagerImpl] End restoring view in session for viewId /main.xhtml 2006-04-24 11:31:30,167 DEBUG [com.sun.faces.lifecycle.RestoreViewPhase] New request: creating a view for /main.jsf 2006-04-24 11:31:30,167 DEBUG [com.sun.faces.application.ViewHandlerImpl] Created new view for /main.jsf 2006-04-24 11:31:30,167 DEBUG [com.sun.faces.application.ViewHandlerImpl] Locale for this view as determined by calculateLocale en 2006-04-24 11:31:30,167 DEBUG [com.sun.faces.application.ViewHandlerImpl] RenderKitId for this view as determined by calculateRenderKitId HTML_BASIC 2006-04-24 11:31:30,167 DEBUG [com.sun.faces.lifecycle.RestoreViewPhase] Exiting RestoreViewPhase 2006-04-24 11:31:30,167 DEBUG [org.jboss.seam.Component] instantiating Seam component: org.jboss.seam.core.manager 2006-04-24 11:31:30,183 DEBUG [org.jboss.seam.core.Manager] No stored conversation 2006-04-24 11:31:30,183 DEBUG [org.jboss.seam.contexts.Contexts] found in application context: org.jboss.seam.core.init 2006-04-24 11:31:30,183 DEBUG [org.jboss.seam.jsf.SeamPhaseListener] After restore view, conversation context: ConversationContext(3) 2006-04-24 11:31:30,183 DEBUG [com.sun.faces.lifecycle.LifecycleImpl] Skipping rest of execute() because of a reload 2006-04-24 11:31:30,183 DEBUG [com.sun.faces.lifecycle.LifecycleImpl] render(com.sun.faces.context.FacesContextImpl@5f62a9) 2006-04-24 11:31:30,183 DEBUG [org.jboss.seam.Component] instantiating Seam component: facesMessages 2006-04-24 11:31:30,183 DEBUG [com.sun.faces.lifecycle.RenderResponsePhase] Entering RenderResponsePhase 2006-04-24 11:31:30,183 DEBUG [com.sun.faces.lifecycle.RenderResponsePhase] About to render view /main.jsf 2006-04-24 11:31:30,183 DEBUG [com.sun.faces.application.ViewHandlerImpl] URL pattern of the FacesServlet executing the current request .jsf 2006-04-24 11:31:30,183 DEBUG [com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer] component.getValue() returned null 2006-04-24 11:31:30,183 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: user 2006-04-24 11:31:30,183 DEBUG [org.jboss.seam.Component] seam component not found: user 2006-04-24 11:31:30,183 DEBUG [com.sun.faces.application.ApplicationImpl] Couldn't find a factory for user 2006-04-24 11:31:30,183 DEBUG [com.sun.faces.el.VariableResolverImpl] resolveVariable: Resolved variable:null 2006-04-24 11:31:30,183 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] could not resolve name 2006-04-24 11:31:30,183 DEBUG [com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer] component.getValue() returned null 2006-04-24 11:31:30,199 DEBUG [com.sun.faces.application.ViewHandlerImpl] URL pattern of the FacesServlet executing the current request .jsf 2006-04-24 11:31:30,199 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: user 2006-04-24 11:31:30,199 DEBUG [org.jboss.seam.Component] seam component not found: user 2006-04-24 11:31:30,199 DEBUG [com.sun.faces.application.ApplicationImpl] Couldn't find a factory for user 2006-04-24 11:31:30,199 DEBUG [com.sun.faces.el.VariableResolverImpl] resolveVariable: Resolved variable:null 2006-04-24 11:31:30,199 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] could not resolve name 2006-04-24 11:31:30,214 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: conversation 2006-04-24 11:31:30,214 DEBUG [org.jboss.seam.Component] instantiating Seam component: conversation 2006-04-24 11:31:30,214 DEBUG [com.sun.faces.application.ApplicationImpl] Couldn't find a factory for conversation 2006-04-24 11:31:30,214 DEBUG [com.sun.faces.el.VariableResolverImpl] resolveVariable: Resolved variable:null 2006-04-24 11:31:30,214 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolved name to seam component 2006-04-24 11:31:30,214 DEBUG [com.sun.faces.lifecycle.RenderResponsePhase] Exiting RenderResponsePhase 2006-04-24 11:31:30,214 DEBUG [org.jboss.seam.contexts.Lifecycle] After render response, destroying contexts 2006-04-24 11:31:30,214 DEBUG [org.jboss.seam.contexts.Lifecycle] destroying event context 2006-04-24 11:31:30,214 DEBUG [org.jboss.seam.contexts.Contexts] destroying: org.jboss.seam.core.manager 2006-04-24 11:31:30,214 DEBUG [org.jboss.seam.contexts.Lifecycle] destroying conversation context 2006-04-24 11:31:30,214 DEBUG [org.jboss.seam.contexts.Contexts] destroying: facesMessages 2006-04-24 11:31:30,214 DEBUG [org.jboss.seam.contexts.Contexts] destroying: conversation 2006-04-24 11:31:30,214 DEBUG [org.jboss.seam.contexts.Lifecycle] flushing server-side conversation context 2006-04-24 11:31:30,214 DEBUG [org.jboss.seam.contexts.Lifecycle] <<< End web request
Then, I type in a value for the user.aNumber field and click my 'Account Login' button - here is the server log:
2006-04-24 11:34:32,938 DEBUG [org.jboss.resource.connectionmanager.IdleRemover] run: IdleRemover notifying pools, interval: 450000 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.lifecycle.LifecycleImpl] execute(com.sun.faces.context.FacesContextImpl@f0cda1) 2006-04-24 11:34:37,110 DEBUG [org.jboss.seam.contexts.Lifecycle] >>> Begin web request 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.lifecycle.RestoreViewPhase] Entering RestoreViewPhase 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.application.ViewHandlerImpl] URL pattern of the FacesServlet executing the current request .jsf 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.application.ViewHandlerImpl] viewId after appending the context suffix /main.xhtml 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.application.StateManagerImpl] Begin restoring view in session for viewId /main.xhtml 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.application.StateManagerImpl] Restoring view from session for viewId /main.xhtml 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.application.StateManagerImpl] End restoring view in session for viewId /main.xhtml 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.lifecycle.RestoreViewPhase] New request: creating a view for /main.jsf 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.application.ViewHandlerImpl] Created new view for /main.jsf 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.application.ViewHandlerImpl] Locale for this view as determined by calculateLocale en 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.application.ViewHandlerImpl] RenderKitId for this view as determined by calculateRenderKitId HTML_BASIC 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.lifecycle.RestoreViewPhase] Exiting RestoreViewPhase 2006-04-24 11:34:37,110 DEBUG [org.jboss.seam.Component] instantiating Seam component: org.jboss.seam.core.manager 2006-04-24 11:34:37,110 DEBUG [org.jboss.seam.core.Manager] No stored conversation 2006-04-24 11:34:37,110 DEBUG [org.jboss.seam.contexts.Contexts] found in application context: org.jboss.seam.core.init 2006-04-24 11:34:37,110 DEBUG [org.jboss.seam.jsf.SeamPhaseListener] After restore view, conversation context: ConversationContext(4) 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.lifecycle.LifecycleImpl] render(com.sun.faces.context.FacesContextImpl@f0cda1) 2006-04-24 11:34:37,110 DEBUG [org.jboss.seam.Component] instantiating Seam component: facesMessages 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.lifecycle.RenderResponsePhase] Entering RenderResponsePhase 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.lifecycle.RenderResponsePhase] About to render view /main.jsf 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.application.ViewHandlerImpl] URL pattern of the FacesServlet executing the current request .jsf 2006-04-24 11:34:37,110 DEBUG [com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer] component.getValue() returned null 2006-04-24 11:34:37,110 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: user 2006-04-24 11:34:37,110 DEBUG [org.jboss.seam.Component] seam component not found: user 2006-04-24 11:34:37,125 DEBUG [com.sun.faces.application.ApplicationImpl] Couldn't find a factory for user 2006-04-24 11:34:37,125 DEBUG [com.sun.faces.el.VariableResolverImpl] resolveVariable: Resolved variable:null 2006-04-24 11:34:37,125 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] could not resolve name 2006-04-24 11:34:37,125 DEBUG [com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer] component.getValue() returned null 2006-04-24 11:34:37,125 DEBUG [com.sun.faces.application.ViewHandlerImpl] URL pattern of the FacesServlet executing the current request .jsf 2006-04-24 11:34:37,125 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: user 2006-04-24 11:34:37,125 DEBUG [org.jboss.seam.Component] seam component not found: user 2006-04-24 11:34:37,125 DEBUG [com.sun.faces.application.ApplicationImpl] Couldn't find a factory for user 2006-04-24 11:34:37,125 DEBUG [com.sun.faces.el.VariableResolverImpl] resolveVariable: Resolved variable:null 2006-04-24 11:34:37,125 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] could not resolve name 2006-04-24 11:34:37,141 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: conversation 2006-04-24 11:34:37,141 DEBUG [org.jboss.seam.Component] instantiating Seam component: conversation 2006-04-24 11:34:37,141 DEBUG [com.sun.faces.application.ApplicationImpl] Couldn't find a factory for conversation 2006-04-24 11:34:37,141 DEBUG [com.sun.faces.el.VariableResolverImpl] resolveVariable: Resolved variable:null 2006-04-24 11:34:37,141 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolved name to seam component 2006-04-24 11:34:37,141 DEBUG [com.sun.faces.lifecycle.RenderResponsePhase] Exiting RenderResponsePhase 2006-04-24 11:34:37,141 DEBUG [org.jboss.seam.contexts.Lifecycle] After render response, destroying contexts 2006-04-24 11:34:37,141 DEBUG [org.jboss.seam.contexts.Lifecycle] destroying event context 2006-04-24 11:34:37,141 DEBUG [org.jboss.seam.contexts.Contexts] destroying: org.jboss.seam.core.manager 2006-04-24 11:34:37,141 DEBUG [org.jboss.seam.contexts.Lifecycle] destroying conversation context 2006-04-24 11:34:37,141 DEBUG [org.jboss.seam.contexts.Contexts] destroying: facesMessages 2006-04-24 11:34:37,141 DEBUG [org.jboss.seam.contexts.Contexts] destroying: conversation 2006-04-24 11:34:37,141 DEBUG [org.jboss.seam.contexts.Lifecycle] flushing server-side conversation context 2006-04-24 11:34:37,141 DEBUG [org.jboss.seam.contexts.Lifecycle] <<< End web request
When I look at the server console for both requests - I see no indication that a new User class has been created and that it's setaNumber() method has been invoked. I studied the example code and the seam documentation carefully w.r.t. setting up a Seam application for Hibernate in a Java EE environment - nothing stands out. I am using JBoss 4.0.4.CR2 with EJB installed.
Any help in understanding why my named components are not being 'associated' with the page is appreciated.
Thanks.