私はアーキタイプを持っておりorg.jboss.weld.archetypes:jboss-javaee6-webapp:1.0.1.CR2
、クラスを理解しようとしていますMemberListProducer
:
@RequestScoped
public class MemberListProducer
{
@Inject @MemberRepository private EntityManager em;
private List<Member> members;
@Produces @Named public List<Member> getMembers() {return members;}
public void onMemberListChanged(@Observes(notifyObserver = Reception.IF_EXISTS)
final Member member){
retrieveAllMembersOrderedByName();
}
@PostConstruct
public void retrieveAllMembersOrderedByName()
{
//Criteria Query to fetch all members
members = em.createQuery(criteria).getResultList();
}
}
オブザーバーは、別のクラスから呼び出されますmemberEventSrc.fire(newMember);
。これは明らかです。一度起動されるとMemberListProducer
、メンバーのリストが更新されます。
@RequestScoped
しかし、これがBeanで行われる理由がわかりません。私の理解では、メソッドretrieveAllMembersOrderedByName
はとにかく各リクエストによって呼び出されます。これはor Bean@Observes
に配置したほうがよいのではないでしょうか? この場合、それはまったく効果がありますか?@ViewScoped
@SessionScoped