# viele Objekte des Managed Bean



## mario87b (4. Okt 2012)

Hallo.

Ich habe mal eine Frage.

Folgendes hab ich beobachtet.

Ich habe eine kleine JSF Anwendung. Eine einfache Abfrage aus einer Oracle Datenbank. Gleich vorneweg, funktioniert alles, ABER.

Die Eingaben werden via HTML Form eingetragen, die managed Bean entsprechend verknüpft. Hier eine Auszug des relevanten Codes:


```
...
<h:form id="Eingabe">
                    
                    <h:messages style="color:red;" />
                    
                    <h:panelGrid columns="2">
                        <p>Name: </p>
                        <h:inputText value="#{data_tel_neu.name}" />
                        
                        <p>Vorname: </p>
                        <h:inputText value="#{data_tel_neu.vorname}" />
                        
                        <p>Org.-Einheit: </p>
                        <h:inputText value="#{data_tel_neu.org}" />
                        
                        <p>Telefon: </p>
                        <h:inputText value="#{data_tel_neu.tel}" id="Telefon" >
                            <f:validateLongRange />
                        </h:inputText>
                        
                        <h:commandButton type="reset" value="Zurücksetzen" />
                        <h:commandButton action="/result.xhtml?faces-redirect=true" value="Suchen" />       
                    </h:panelGrid>
                </h:form>
...
```

Im Kontruktur der Bean ist ein logger enthalten, der soll mir eigentlich nur loggen: "läuft soweit".
Nun hab ich aber bemerkt das wenigsten 6 Einträge des Logeintrag in der Logdatei auflaufen.
Der Kontruktor wird also wenigsten 6 mal aufgerufen, die Anwendung erzeugt also entsprechend viele Objekte der Bean? Wieso denn das? Kann mir das jemand erklären?

Nutze NetBeans 7.xx, JSF 2.x, Apache Tomcat 7.0.x Webserver, Session Scope ist Applikation.

Danke.


----------



## jwiesmann (4. Okt 2012)

Deine Bean hat bestimmt "nur" einen 
	
	
	
	





```
@RequestScope
```
.
Wenn du diesen zu 
	
	
	
	





```
@ViewScope
```
änderst, wird solange du auf deinem View bleibst kein neues Object erzeugt.
Nur genau einmal wird es erzeugt, wenn du @SessionScope nutzt.
SessionScope sollte man, soweit möglich, vermeiden. (Bsp. komisches / verwirrendes Verhalten bei mehreren Tabs, speicher wird nicht aufgeräumt, solange die Session aktiv ist etc.)

gruß

ahh .. edit sagt:


> Session Scope ist Applikation


Was genau ist damit gemeint? 
Ist der Scope nun Session oder Application?


----------



## sence (5. Okt 2012)

Getter and Setter werden auch mehrfach aufgerufen, aufgrund des Lifecyle der Apllikation
restoreView, apply Requests, Process Validation,Update Model Values,Invoke Application,Render Response,Process Events


----------



## mario87b (5. Okt 2012)

jwiesmann hat gesagt.:


> Deine Bean hat bestimmt "nur" einen
> 
> 
> 
> ...



Ich meinte damit SessionScope. Die Applikation läuft unter SessionScope. In der faces-config.xml steht dazu


```
...
<managed-bean-scope>session</managed-bean-scope>
...
```

SessionScope deshalb weil ich eine Einlog-Komponente drin habe. Einige Nutzer müssen sich anmelden, damit mehr Funktionen zur Verfügung stehen. Dabei hatte ich Probleme, wenn RequestScope genutzt wird.


----------

