Fragen rund um Web-Apps

oetzi

Bekanntes Mitglied
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

Bekanntes Mitglied
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

Bekanntes Mitglied
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

Bekanntes Mitglied
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

Bekanntes Mitglied
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)
Java:
public class StartUp extends HttpServlet {

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


Schönen Gruß
oetzi
 
Zuletzt bearbeitet:

oetzi

Bekanntes Mitglied
Hat sich erledigt!

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

X3TitanCore

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

Java:
/**
* @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 */
	
}
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben