Yep, the @Factory seems to be called. The following code produces the according output:
Bean:
@Stateful
@Scope(SESSION)
@Name("admin")
public class AdminUserBean implements Serializable, AdminUser {
@PersistenceContext()
private EntityManager entityManager;
@DataModel()
private List<User> userList;
@Logger private static Log log;
@Factory(value="userList")
public void fetchUserList() {
log.info("Fetching User list");
this.userList = entityManager.createNamedQuery("User.findAll").getResultList();
if (userList == null)
log.info("Userlist is null ...");
else {
log.info("User list size: " + userList.size());
User tmp = userList.get(0);
log.info("Username "+tmp.getUsername());
}
}
@Observer("org.jboss.seam.beforePhase")
public void checkBeforePhase() {
log.info("before Phase happened ...");
if (userList == null)
log.info("Userlist is null ...");
}
@Observer("org.jboss.seam.afterPhase")
public void checkAfterPhase() {
log.info("after Phase happened ...");
if (userList == null)
log.info("Userlist is null ...");
}
@Observer("org.jboss.seam.preSetVariable.userList")
public void checkPreSetUserList() {
log.info("Before setting userList");
}
@Observer("org.jboss.seam.postSetVariable.userList")
public void checkPostSetUserList() {
log.info("After setting userList");
}
@Observer("org.jboss.seam.preRemoveVariable.userList")
public void checkPreRemoveVariable() {
log.info("Before removing userList");
}
@Observer("org.jboss.seam.postRemoveVariable.userList")
public void checkPostRemoveVariable() {
log.info("After removing userList");
}
@Remove @Destroy
public void destroy() {
//No special treatment
}
}
Local interface (maybe s.th. wrong here, but i don't think so)
@Local
public interface AdminUser {
public void destroy();
public void fetchUserList();
public void checkBeforePhase();
public void checkAfterPhase();
public void checkPreSetUserList();
public void checkPostSetUserList();
public void checkPreRemoveVariable();
public void checkPostRemoveVariable();
}
XHTML fragment:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:h="http://java.sun.com/jsf/html">
<ui:composition template="#{theme.template}">
<ui:define name="content">
<h:dataTable value="#{userList}" var ="myUser">
<h:column>
<s:link>
<h:outputText value="#{myUser.username}"/>
</s:link>
</h:column>
</h:dataTable>
</ui:define>
</ui:composition>
</html>
Log
13:39:23,955 INFO [STDOUT] 13:39:23,955 INFO [Contexts] starting up: org.jboss.seam.security.identity
13:39:23,955 INFO [STDOUT] 13:39:23,955 INFO [Contexts] starting up: org.jboss.seam.web.session
13:39:23,975 INFO [STDOUT] 13:39:23,975 INFO [AdminUserBean] before Phase happened ...
13:39:23,975 INFO [STDOUT] 13:39:23,975 INFO [AdminUserBean] Userlist is null ...
13:39:24,043 INFO [STDOUT] 13:39:24,043 INFO [AdminUserBean] after Phase happened ...
13:39:24,043 INFO [STDOUT] 13:39:24,043 INFO [AdminUserBean] Userlist is null ...
13:39:24,094 INFO [STDOUT] 13:39:24,094 INFO [AdminUserBean] before Phase happened ...
13:39:24,095 INFO [STDOUT] 13:39:24,094 INFO [AdminUserBean] Userlist is null ...
13:39:24,362 ERROR [STDERR] 07.01.2008 13:39:24 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/data/programs/jboss-4.2.2.GA/server/default/tmp/deploy/tmp6568cbc.ear-contents/cbc-war-exp.war/WEB-INF/lib/jboss-seam-ui-2.0.1.CR1.jar!/META-INF/s.taglib.xml
13:39:24,381 ERROR [STDERR] 07.01.2008 13:39:24 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/data/programs/jboss-4.2.2.GA/server/default/tmp/deploy/tmp6568cbc.ear-contents/cbc-war-exp.war/WEB-INF/lib/jsf-facelets-1.1.14.jar!/META-INF/jsf-core.taglib.xml
13:39:24,385 ERROR [STDERR] 07.01.2008 13:39:24 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/data/programs/jboss-4.2.2.GA/server/default/tmp/deploy/tmp6568cbc.ear-contents/cbc-war-exp.war/WEB-INF/lib/jsf-facelets-1.1.14.jar!/META-INF/jsf-html.taglib.xml
13:39:24,438 ERROR [STDERR] 07.01.2008 13:39:24 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/data/programs/jboss-4.2.2.GA/server/default/tmp/deploy/tmp6568cbc.ear-contents/cbc-war-exp.war/WEB-INF/lib/jsf-facelets-1.1.14.jar!/META-INF/jsf-ui.taglib.xml
13:39:24,477 ERROR [STDERR] 07.01.2008 13:39:24 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/data/programs/jboss-4.2.2.GA/server/default/tmp/deploy/tmp6568cbc.ear-contents/cbc-war-exp.war/WEB-INF/lib/jsf-facelets-1.1.14.jar!/META-INF/jstl-core.taglib.xml
13:39:24,481 ERROR [STDERR] 07.01.2008 13:39:24 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/data/programs/jboss-4.2.2.GA/server/default/tmp/deploy/tmp6568cbc.ear-contents/cbc-war-exp.war/WEB-INF/lib/jsf-facelets-1.1.14.jar!/META-INF/jstl-fn.taglib.xml
13:39:24,503 ERROR [STDERR] 07.01.2008 13:39:24 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/data/programs/jboss-4.2.2.GA/server/default/tmp/deploy/tmp6568cbc.ear-contents/cbc-war-exp.war/WEB-INF/lib/richfaces-ui-3.1.3.GA.jar!/META-INF/a4j.taglib.xml
13:39:24,563 ERROR [STDERR] 07.01.2008 13:39:24 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/data/programs/jboss-4.2.2.GA/server/default/tmp/deploy/tmp6568cbc.ear-contents/cbc-war-exp.war/WEB-INF/lib/richfaces-ui-3.1.3.GA.jar!/META-INF/ajax4jsf.taglib.xml
13:39:24,612 ERROR [STDERR] 07.01.2008 13:39:24 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/data/programs/jboss-4.2.2.GA/server/default/tmp/deploy/tmp6568cbc.ear-contents/cbc-war-exp.war/WEB-INF/lib/richfaces-ui-3.1.3.GA.jar!/META-INF/rich.taglib.xml
13:39:24,615 ERROR [STDERR] 07.01.2008 13:39:24 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/data/programs/jboss-4.2.2.GA/server/default/tmp/deploy/tmp6568cbc.ear-contents/cbc-war-exp.war/WEB-INF/lib/richfaces-ui-3.1.3.GA.jar!/META-INF/richfaces.taglib.xml
13:39:24,799 INFO [STDOUT] 13:39:24,799 INFO [AdminUserBean] Fetching User list
13:39:24,800 INFO [STDOUT] Hibernate: select user0_.id as id36_, user0_.location as location36_, user0_.password as password36_, user0_.username as username36_, user0_.firstName as firstName36_, user0_.lastName as lastName36_, user0_.streetName as streetName36_, user0_.confirmedUser as confirme8_36_, user0_.image as image36_, user0_.streetNumber as streetN10_36_, user0_.zipCode as zipCode36_ from User user0_
13:39:24,801 INFO [STDOUT] 13:39:24,801 INFO [AdminUserBean] User list size: 4
13:39:24,801 INFO [STDOUT] 13:39:24,801 INFO [AdminUserBean] Username j
13:39:24,802 INFO [STDOUT] 13:39:24,802 INFO [AdminUserBean] Before setting userList
13:39:24,802 INFO [STDOUT] 13:39:24,802 INFO [AdminUserBean] After setting userList
13:39:24,808 INFO [STDOUT] 13:39:24,808 INFO [AdminUserBean] after Phase happened ...
I hope that this gives you any idea? Maybe it's a packaging problem?
Packaging is like follows:
EAR:
Archive: cbc.ear
creating: META-INF/
inflating: META-INF/MANIFEST.MF
creating: lib/
inflating: META-INF/jboss-app.xml
inflating: META-INF/application.xml
inflating: cbc-war.war
inflating: lib/hibernate-commons-annotations-3.0.0.ga.jar
inflating: lib/commons-beanutils-1.7.0.jar
inflating: lib/dom4j-1.6.1.jar
inflating: lib/log4j-1.2.14.jar
inflating: lib/commons-digester-1.8.jar
inflating: lib/commons-collections-3.2.jar
inflating: lib/hibernate-validator-3.0.0.GA.jar
inflating: lib/jboss-archive-browsing-5.0.0alpha-200607201-119.jar
inflating: lib/jboss-el-2.0.1-SNAPSHOT.jar
inflating: lib/richfaces-api-3.1.3.GA.jar
inflating: lib/commons-logging-1.0.4.jar
inflating: jboss-seam-2.0.1.CR1.jar
inflating: cbc-ejb.jar
EJB:
Archive: cbc-ejb.jar
replace META-INF/MANIFEST.MF? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
inflating: META-INF/MANIFEST.MF
creating: cbc/
creating: cbc/entity/
creating: cbc/auth/
creating: cbc/ui/
inflating: seam.properties
inflating: cbc/entity/User.class
inflating: cbc/auth/AuthenticatorBean.class
inflating: cbc/auth/Authenticator.class
inflating: cbc/ui/AdminUser.class
inflating: cbc/ui/AdminUserBean.class
inflating: import.sql
inflating: META-INF/persistence.xml
inflating: ejb-jar.xml
creating: META-INF/maven/cbc-ejb/
inflating: META-INF/maven/cbc-ejb/pom.xml
inflating: META-INF/maven/cbc-ejb/pom.properties
WAR:
replace META-INF/MANIFEST.MF? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
inflating: META-INF/MANIFEST.MF
creating: WEB-INF/
creating: WEB-INF/lib/
creating: WEB-INF/classes/
creating: css/
creating: css/images/
creating: templates/
creating: admin/
creating: images/
inflating: WEB-INF/components.xml
inflating: WEB-INF/lib/jsf-facelets-1.1.14.jar
inflating: WEB-INF/lib/richfaces-impl-3.1.3.GA.jar
inflating: WEB-INF/lib/richfaces-ui-3.1.3.GA.jar
inflating: WEB-INF/lib/jboss-seam-debug-2.0.1.CR1.jar
inflating: WEB-INF/lib/jboss-seam-ui-2.0.1.CR1.jar
inflating: WEB-INF/pages.xml
inflating: WEB-INF/classes/cbcBase.properties
inflating: WEB-INF/classes/cbc.properties
inflating: WEB-INF/faces-config.xml
inflating: WEB-INF/web.xml
inflating: css/
.
.
Any help/ideas are appreciated of course ;)