# Von einem Servlet auf ein anderes zugreifen



## HyperHyper (26. Sep 2006)

Neuer Tag, neues Problem :wink: 

Habe nun 2 Servlets laufen. Am ersten Servlet werden alle eingehenden Requests ausgewertet und in der dort instanziierten Klasse "Speicher" mit einer simplen Add-Methode gespeichert. 

Nun möchte ich von einem anderen Servlet aus auf diese Klasse "Speicher" zugreifen um die aktuell dort befindlichen Daten auslesen und verarbeiten zu können. Wie komme ich also an die Referenz von Klasse "Speicher" (welche sich in Servlet 1 befindet) ran, vom Servlet 2 aus? 

Wie stelle ich das am besten an?


----------



## SlaterB (26. Sep 2006)

was hat dies mit Servlets zu tun?
das ist ja eine allgemeine Frage: wie kann ein Objekt auf ein anderes zugreifen:
dafür braucht es eine Referenz auf dieses Objekt und eine getSpeicher()-Operation

--------

wieder zurück zu Servlets, 
redest du da eigentlich von unterschiedlichen Requests?
dann kannst du dir nicht mehr sicher sein, dass zum Zeitpunkt des zweiten Requests das Servlet des ersten überhaupt noch da ist,

da jeder Request für sich arbeitet, ist ein gegenseitiger Zugriff außerdem ausgeschlossen,

falls die beiden Servlets in einem Request abgearbeitet werden,
ist es immer noch nicht üblich, sich gegenseitig zu referenzieren

--------

benutze die Session oder den Request als Speicherplatz für Daten, die nur einem Benutzer interessieren:
request.setAttribute() oder
request.getSession().setAttribute()

für globale Programmdaten static-Hilfsklassen oder besser eine Datenbank


----------



## KSG9|sebastian (26. Sep 2006)

Geht es um URLRewriting?
Alle Anfragen gehen an ein Servlet und von dort wird weitergeleitet?
Falls ja mach das so:

- Abstrakte Klasse Aktion mit ner abstrakten Methode performAction(request, response)
- nen ActionManager (Map) welche als Key einen Text, z.b. addNews, showIndex oder so speichert. Als Value das zugehörige Aktion-Objekt oder die Aktion-Klasse
- In deinem zentralen Servlet wird ein Parameter/Attribut ausgelesen welches festlegt was passieren sol. Z.b. als Link meinservlet?action=showIndex.
- Dein Servlet holt dann vom ActionManager die zugehörige Klasse/Objekt und ruft die performAction auf.

Schau dir dazu auch mal die Struts-Sourcen an. Sind zwar umfangreicher und beinhalten noch Forwards, ActionForms u.s.w., aber das prinzip ist das gleiche.


----------



## HyperHyper (26. Sep 2006)

KSG9|sebastian hat gesagt.:
			
		

> Geht es um URLRewriting?
> Alle Anfragen gehen an ein Servlet und von dort wird weitergeleitet?
> Falls ja mach das so:
> 
> ...


Hallo, werde dies mal versuchen. Ok es ist wie schon von SlaterB erwähnt eigentlich eine normale "wie referenziere ich"-Frage, allerdings dachte ich das es wenn man mit Servlets arbeitet, es noch andere Lösungswege gibt.


----------



## freez (5. Okt 2006)

Hm ... ich bin mir nicht sicher, ob das so geht, aber evtl als Denkanstoß: Beide Servlets per Sockets verbinden, und "Speicher" über diesen Socket an das Servlet schicken.


----------

