Zugriff auf eine Servlet-Instanz

8

Ich kann zwar nicht wirklich an einen praktischen Anwendungsfall für ein solches Szenario denken, aber ich beabsichtige nur, dass dies eine neugierige Frage ist.

Ich verstehe, dass der Servlet-Container alle Instanzen enthält, die von den Servlets erstellt wurden, und delegiert Anfragethreads an diese Instanzen. Es ist auch sinnvoll, diese Instanzen zu verwalten, um zu verhindern, dass unberechtigte Aufrufe den Lebenszyklus von Servlet-Instanzen außerhalb des Containers ändern.

Aber gibt es wirklich keine Möglichkeit, auf die Servlet-Instanzen zuzugreifen?

    
anirvan 01.11.2010, 21:03
quelle

3 Antworten

5

Vor Servlet 2.1 (bereits über ein Jahrzehnt alt) können Sie ServletContext#getServlet() . Es ist jedoch seither veraltet. Einfach weil es ein schlechtes Design ist. Wenn Sie innerhalb eines Servlets in der Anfrage-Antwort-Kette ein anderes Servlet aufrufen möchten, verwenden Sie einfach RequestDispatcher#include() . Wenn Sie nicht servletspezifische Methoden eines anderen Servlets aufrufen möchten, ist es einfach höchste Zeit, diesen Code in eine separate Java-Klasse umzuwandeln, die Sie dann in die beiden Servlets importieren / verwenden können.

    
BalusC 01.11.2010, 22:57
quelle
2

Der Container erstellt NUR EINE Instanz des Servlets und verwendet die gleiche Instanz für mehrere Anfragen. Es gibt "SingleThreadModel", das, wenn Sie implementieren, Container mehrere Instanzen des Servlets erstellen würde, aber jetzt veraltet ist.

    
Aravind R. Yarram 01.11.2010 21:07
quelle
0

Nicht über die Standard-Servlet-API (daher die Antwort nein).

Sie können jedoch Ihr Wissen über die tatsächliche Implementierung und unangenehme Tricks mit Reflektion verwenden, um die Datenstruktur zu erhalten, die von der Implementierung verwendet wird, um Servlet-Instanzen zu halten (also ist die Antwort ja).

Der Servlet-Container verfügt jedoch möglicherweise über einen SecurityManager, der die Verwendung dieser gemeinen Tricks verbietet (so lautet die Antwort vielleicht).

    
quelle

Tags und Links