2013-08-06 17 views
26

Documentation for jersey 2.0 says:Il thread del client java Jersey 2.1 è sicuro?

istanze client sono risorse costose. Si consiglia di riutilizzare un'istanza configurata per la creazione di risorse Web. La creazione di risorse Web , la creazione di richieste e la ricezione di risposte sono garantite come thread-safe. Pertanto un'istanza Client e istanze WebResource possono essere condivise tra più thread

Il client è ancora thread-safe nella versione 2.1? Non riesco a trovare informazioni sulla sicurezza dei thread in docs for 2.1.

+1

Ho aperto un biglietto per te (me lol): https://java.net/jira/browse/JERSEY-3094 –

risposta

1

Penso che, in base allo 2.1 release notes, nulla sia cambiato a tale riguardo, ma non riesco a trovare la motivazione per questo cambiamento nella documentazione.

16

Sì, il client Jersey 2.1 è un thread sicuro e dovrebbe essere thread-safe anche nella versione futura di Jersey. È possibile creare molti WebTarget da un'istanza del client e richiamare molte richieste su questi WebTarget e anche più richieste su un'istanza di WebTarget nello stesso momento.

La sicurezza del thread può essere interrotta se si registra il provider personalizzato non thread-thread in un client o un WebTaget. Ad esempio un ClientRequestFilter che non è thread-safe e non può gestire più richieste contemporaneamente. I fornitori integrati di Jersey sono thread-safe. Alcuni provider di estensione di Jersey non devono essere thread-safe e in questo caso questo è specificato nel javadoc di un provider.

+1

Risposta utile. Ti capita di avere anche qualche fonte per questo? –

+3

Questa restrizione proviene da JAX-RS o solo da Jersey? Poiché ['javax.ws.rs.client.Client'] (https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/client/Client.html) dice solo: _I client sono oggetti pesanti ... L'inizializzazione e l'eliminazione di un'istanza Client possono essere un'operazione piuttosto costosa. Si consiglia quindi di costruire solo un piccolo numero di istanze del Cliente ... Le istanze del cliente devono essere chiuse correttamente prima di essere smaltite per evitare perdite di risorse. Quindi niente su ** sicurezza del thread **, solo ** vicino ad essere riutilizzato ** e ma niente su _at allo stesso tempo_. – lucasvc

+1

@datakey ESATTAMENTE, qualcuno può confermare la risposta? Non ho idea di cosa pensare di 'Client' e' WebTarget' ..! – Yanko