JAX-RS: getClasses vs getSingletons

8

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?).

    
Daniel 15.08.2013, 14:12
quelle

1 Antwort

15

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:

haben %Vor%

Mehrere Aufrufe von getHello resource-Methode würden Sie zurückgeben:

  • falls Sie Ihre Ressource über getClasses

    registrieren %Vor%
  • falls Sie getSingletons verwenden, um Ihre Ressource zu registrieren

    %Vor%
Michal Gajdos 15.08.2013, 16:13
quelle