6 Replies Latest reply on Aug 24, 2007 8:13 PM by Alexander Kosenkov

    problem with Stateless beans

    Aymen Newbie

      Hello,
      I need to have an xhtml page which uses an attribute in a stateless session bean. I want this attribute to be recalculated every time I call this page. I did this with the scope STATELESS. When I call the page it works well, but everytime I recall it(after I change some values concerning my attribute), the stateless sessin bean doesn't seem to be reinvoked. The page shows some old values. Is there a bug in the Seam I use (1.2.1 GA)? Or is there some annotations I have to add?
      Thank you

        • 1. Re: problem with Stateless beans
          Pete Muir Master

          Post your code.

          • 2. Re: problem with Stateless beans
            Aymen Newbie

            ***** THE PAGE *****
            <h:form id="reportCongesCrossDataForm">
            <h:dataTable value="#{reportCongesCrossData.boiteNoire.lineDataModel}" var="lineSimple">
            ...



            ***** THE BEAN *****
            //I want the init() method to be executed every time I show the page

            ...

            @Stateless
            @Scope(ScopeType.STATELESS)
            @Name("reportCongesCrossData")
            public class reportCongesCrossDataBean implements reportCongesCrossData{

            @Logger
            private Log log;

            @In
            FacesMessages facesMessages;

            private List colonnes = new ArrayList();

            private List lignes = new ArrayList();

            TypeAbsenceList typeAbsenceList;

            CollaborateurList collaborateurList;

            private GenericCrossTable<Collaborateur, TypeAbsence, Float> boiteNoire=null;

            public reportCongesCrossDataBean() {
            this.init();

            }

            public void init() {

            remplirLignes();
            remplirColonnes();
            boiteNoire = CongeService.getCongePrisByTypeAbsence(lignes, colonnes);
            }
            ...

            }

            • 3. Re: problem with Stateless beans
              Pete Muir Master

              You need to read up on the contract using an SLSB gives you. It doesn't say a new bean will be created everytime you inject an instance.

              • 4. Re: problem with Stateless beans
                Aymen Newbie

                So what do I have to do to have a bean recreated or a method invoked every time I call the page?

                • 5. Re: problem with Stateless beans
                  Francis LIMOUSY Newbie

                  Ok, if we get it well :

                  - to make an "old school request bean" => @Name (just a Seam object, in event scope)

                  - to make an "old school session bean" => @Stateless (or just @Name and Scope(Session), but in this case I don't get the utility of @Stateless annotation)

                  - to make a "new shiny stateful bean" => @Stateful

                  Did I resume correctly the main usages of Seam beans compared to old jsf beans ?

                  Please help poor noobish guys like us ...

                  Thanks

                  • 6. Re: problem with Stateless beans
                    Alexander Kosenkov Newbie

                    Try @Create annotation

                    or, the easiest way, paste

                    #{reportCongesCrossDataBean.init()}

                    somewhere in xhtml