Ich verwende JAX-RS (Jersey-Implementierung), um einen Web-Service zu erstellen.
Der Einstiegspunkt für die Webanwendung ist eine Klasse, die Application
erweitert und die Methode getClasses
überschreibt. Ich verstehe, dass JAX-RS eine neue Instanz für jede neue Anfrage erstellen wird.
Es ist stattdessen möglich, getSingleton
zu überschreiben. Mein Verständnis ist, dass dies die gleiche Instanz für alle Anfragen wiederverwenden wird. Wird dieser Ansatz (vorausgesetzt, dass ich richtig bin) nicht den Parallelbetrieb in der Webanwendung zerstören? Das heißt, da immer die gleiche Instanz verwendet wird, werden eingehende Anforderungen einzeln verarbeitet (FIFO?).
Nein, wird es nicht. Mehrere Threads in JVM können gleichzeitig auf eine Instanz einer Klasse zugreifen (rufen Sie in diesem Fall eine Ressourcenmethode für Ihre Ressource auf). Sie müssen nur sicherstellen, dass Ihre Ressource Thread-sicher ist.
Um den Unterschied zwischen getClasses()
und getSingletons()
zu verdeutlichen, nehmen wir an, dass wir ein HelloWorldResource
like:
Mehrere Aufrufe von getHello
resource-Methode würden Sie zurückgeben:
falls Sie Ihre Ressource über getClasses
falls Sie getSingletons
verwenden, um Ihre Ressource zu registrieren
Tags und Links jax-rs web-applications jersey web-services