# Servlet Daten im Speicher ablegen



## freez (23. Dez 2011)

Hallo,

ich möchte ein Servlet schreiben, welches (sessionunabhängig) Daten im Speicher ablegt. Nun wird ja der Servlet Container (in meinem Fall Tomcat 7) nicht nur eine Instanz des Servlets erstellen, sondern unter Umständen Mehrere. Welche sinnvolle Möglichkeit(en) seht ihr eine HashMap zwischen den Instanzen zu sharen?

Mir fällt ganz spontan "static" ein, allerdings bin ich kein Fan davon.


----------



## SlaterB (23. Dez 2011)

ApplicationContext


----------



## freez (23. Dez 2011)

natürlich. Daran habe ich gar nicht gedacht. Den braucht man so selten 

Habe es nun so gemacht:

```
public void init(ServletConfig config) throws ServletException {		
		data= (DataMap) config.getServletContext().getAttribute("DataMap");
		if(data == null)
			log.error("data konnte nicht geladen werden");
	}
```

Für meine Daten habe ich eine Klasse erstellt und als ManagedBean im ApplicationScope annotiert:

```
@ManagedBean(name="DataMap")
@ApplicationScoped
public class DataMap{
...
}
```

Sollte so funktionieren. Test steht noch aus.


----------



## freez (23. Dez 2011)

An der ManagedBean Annotation fehlt noch das [c]eager=true[/c], sonst bekommt man im Servlet immer "null"


----------

