# Ein JavaBean-Object nur einmal instanzieren.



## Gast (16. Mrz 2006)

Hallo!

Ich benutze JSP, ein Controller Servlet und zwei Beans. Bean1 wird in der JSP genutzt und bekannt gemacht. Bean2 wird im Servlet instanziert. Jetzt wird aber dummerweise bei jedem Aufruf des Servlets ein neues Bean2 Objekt erzeugt. Wie schaffe ich es, dass die Bean2 nur beim ersten Aufruf des Servlets instanziert wird und dann nicht mehr??? 

Mit der Bean1 klappt das mittels (Controller.java):


```
...
 protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
...
 HttpSession session = request.getSession();
 Bean1 bean1 = (Bean1) session.getAttribute("bean1");
 if (bean1 == null) {
     bean1 = new Bien1();
 }
```

und in der JSP:


```
<jsp:useBean id="bean1" scope="session" class="beans.Bean1" />
```

Die Bean1 wird damit nur ein einziges Mal instanziert. Wie kann ich das ebenfalls zusätzlich für die Bean2 erreichen??? ???:L 

Vielen Dank für Eure Hilfe


----------



## bronks (16. Mrz 2006)

Gast hat gesagt.:
			
		

> ... Wie kann ich das ebenfalls zusätzlich für die Bean2 erreichen??? ???:L


Das erreichst Du indem Du die Deklaration der Bean2 nicht in der prozessRequest-Methode machst.


----------



## Gumble (17. Mrz 2006)

genau, tu es doch genau so im jsp. alternativ vielleicht ein "ThreadLocal-Singleton".


----------



## Gast (19. Mrz 2006)

Danke für die Hinweise. Ich habe due Bean2 nun als Java-Singleton-Class definiert. So funktionierts.


----------

