2015-04-26 7 views

risposta

3

L'ambito della risorsa sarà impostato su @RequestScope in modo che venga creata una nuova istanza della risorsa per richiesta.

Da Chapter 3. JAX-RS Application, Resources and Sub-Resources

@RequestScoped

ciclo di vita predefinito (applicata quando nessun annotazione è presente). In questo ambito l'istanza della risorsa viene creata per ogni nuova richiesta e utilizzata per l'elaborazione di questa richiesta. Se la risorsa viene utilizzata più volte nell'elaborazione della richiesta, verrà sempre utilizzata la stessa istanza. Questo può accadere quando una risorsa è una sub risorsa viene restituita più volte durante la corrispondenza. In questa situazione, solo su istanza verrà eseguito il server delle richieste.

Finché msg non è static deve essere creato per richiesta.

Ciò significa anche che dopo aver gestito la richiesta si perderà qualsiasi stato contenuto nella risorsa, quale caso d'uso si sta tentando di risolvere qui?

+0

Le operazioni nel mio progetto richiedono l'insieme di operazioni che usano la singola variabile per condividere lo stato, come 'set()', 'register()', 'execute()'. Quindi, se uso Servlet, sono costretto a creare due classi invece di una per implementare la singola azione perché Servlet non è thread-safe. Grazie :)) – WildDev

+1

Vorrei solo ricordare che JAX-RS e Jersey non sono la stessa cosa. Jersey è un'implementazione di JAX-RS. JAX-RS ha le sue specifiche, e Jersey lo implementa, insieme all'aggiunta di funzionalità extra. L'annotazione '@ RequestScoped' non fa parte delle specifiche JAX-RS, è una caratteristica specifica di Jersey. Tuttavia, sì, l'ambito predefinito specificato da JAX-RS è per richiesta, tutto dipende dalla configurazione esterna. Ho pensato di menzionarlo, perché la domanda non aveva menzionato Jersey :-) –