# Fragen rund um Web-Apps



## oetzi (31. Dez 2009)

Hallo zusammen,

ich bin mich gerade anhand eines Browsergame-Projektes (Rollenspiel, Framework:Struts2, Tomcat, MySQL) selber am weiterbilden, habe aber noch sehr wenig Erfahrung in vielen Dingen rund um Web-Apps, Tomcats, etc.

Deswegen wäre ich einfach für ein paar Tipps und Denkanstöße dankbar.
Ich fange mal mit einer Fragen an 

1. Application Context?
Es gibt viele Ding im Spiel, die für alle Spieler gleich sind (Bspl: Die Karte, wo welche NPCs (Non-Playing-Charakter) stehen, wo welche Monster sind, etc.). Diese Dinge sind alle in einer Datenbank hinterlegt. Im Moment ist es so, dass ich jedesmal, wenn z.b. ein Charakter den Ort wechselt, Datenbankabfragen mache, um zu prüfen ob und welche NPCs an dem Ort stehen.

Jetzt überlege ich, wie ich diese massehaften Datenbankabfragen verringern kann und habe im Hinterkopf, dass es ja sowas wie einen Application-Context gibt (mit dem ich aber bis jetzt noch nichts angestellt habe). 
Meine Frage: 
Macht es evtl. Sinn beim Hochfahren des Servers, die oben genannten Dinge einmal komplett in den Application-Context zu laden und dann im weiteren Verlauf dort drauf zuzugreifen anstatt immer auf die DB? 
Oder gibt es irgendwelche Nachteile, wenn man soviel in den Appcliation-Context lädt?

Schönen Gruß und einen guten Rutsch ins neue Jahr!

oetzi


----------



## X3TitanCore (31. Dez 2009)

Würde ich auf jeden Fall so machen. Das ist ja der grosse Vorteil bei Java und Webcontainern. Man kann beim Start einmal alles laden und hat es in den Datenobjekten verfügbar. Dann muss man nur bei Änderungen auf die Datenbank zugreifen und sonst holt man die Daten nur aus den Objekten.


----------



## oetzi (31. Dez 2009)

okay, danke für die Bestätigung!

mhh, wie macht man das denn? 
Also ich meine nicht, wie ich die Sachen in den App-Context speichere, sondern wie rufe ich beim Start des Servers, eine Klasse auf, die das dann macht?


----------



## X3TitanCore (31. Dez 2009)

Also wenn du mit Servlets arbeitest, dann machst du das in der init Methode des Servlets. Die wird einmal beim Start aufgrufen dann nicht mehr. Da ich nur mit Servlets arbeite kann ich dir nur sagen wie es da geht.


----------



## oetzi (31. Dez 2009)

okay, das mit der init Methode ist doch bestimmt ein brauchbarer Hinweis, nachdem ich mal googlen kann. 

Dank dir!


----------



## oetzi (5. Jan 2010)

Lösung falls jemand auf diesen Thread stößt:

In die web.xml habe ich folgendes eingetragen:
     <servlet>
        <servlet-name>StartUpServlet</servlet-name>
        <servlet-class>StartUp</servlet-class>
        <load-on-startup>1</load-on-startup>
     </servlet>


Und die Klasse StartUp sieht so aus: (liegt direkt unter WEB-INF/classes)

```
public class StartUp extends HttpServlet {

    @Override
    public void init(){
        System.out.println("#################DONE#########");
    }
```


Schönen Gruß
oetzi


----------



## oetzi (5. Jan 2010)

Hat sich erledigt!

Da ich überhaupt nichts geändert habe, frage mich zwar warum es auf einmal geht, aber Hauptsache es läuft


----------



## X3TitanCore (5. Jan 2010)

Die init() methode in einem Servlet sieht immer so aus.


```
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
     // Store the ServletConfig object and log the initialization
       super.init(config);

     /* Hier dein Code für die Initialisierung */
	
}
```


----------

