Лучшая практика при использовании остальных клиентов в контейнере сервлетов - PullRequest
1 голос
/ 01 апреля 2020

Я работаю над проектом, в котором у нас работает большой портал в контейнере Tomcat. Каждый раз, когда пользователь регистрируется на портале, некоторая информация извлекается путем вызова остального клиента. Код выглядит примерно так:

public class RestClient {

    private static final String REST_URI = "http://url.tld/to/login/api";

    private Client client;

    public Client getClient() {
        if (client == null) {
            client = ClientBuilder.newClient();
        }
        return client;
    }

    public LoginData getLoginData(int userId) {
        return client
          .target(REST_URI)
          .path(String.valueOf(userId))
          .request(MediaType.APPLICATION_JSON)
          .get(LoginData.class);
    }

}

Я использую Apache CXF в качестве моей реализации клиента jax-rs. Насколько я знаю, клиентский объект должен быть потокобезопасным, так что это не должно быть проблемой. Но представьте, что 10000 пользователей открывают сайт одновременно, и для каждого запроса выполняется вышеуказанный код. У меня проблемы с производительностью? Нужно ли мне больше, чем один клиентский объект, может быть, пул клиентов?

...