в следующем UserResource
классе:
public class UserResource {
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("/users")
public void createUser() {
//JerseyClient is needed to send a REST request to another RESTful service
}
}
JerseyClient
необходимо для отправки запроса другому API RESTful, как указано в комментарии.
Как и в то же времяэто может быть несколько потоков, вызывающих этот UserResource
, JerseyClient
, вероятно, должен быть инициализирован в каждом вызове для каждого потока, чтобы быть потокобезопасным. Однако упомянутые JAX-RS Client
Клиенты - это тяжелые объекты, которые управляют инфраструктурой связи на стороне клиента. Инициализация, а также удаление экземпляра клиента могут быть довольно дорогой операцией. Поэтому рекомендуется создавать в приложении только небольшое количество экземпляров Client. Клиентские экземпляры должны быть надлежащим образом закрыты перед удалением, чтобы избежать утечки ресурсов.
Исходя из документации, вероятно дорого инициализировать JerseyClient
внутри тела createUser
и, таким образом, вызвать проблему с производительностью.
Вопрос: Как эффективно оптимизировать количество JerseyClient
экземпляров в поточно-ориентированном режиме?