首页 > 解决方案 > 在 servlet 容器中使用 REST 客户端时的最佳实践

问题描述

我正在做一个项目,我们有一个在 tomcat 容器中运行的大型门户。每次用户登录到门户时,都会通过调用 REST 客户端来检索一些信息。代码看起来像这样:

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 个用户同时打开网站,并且对于每个请求,上述代码都会被执行。我会遇到性能问题吗?我需要的不仅仅是一个客户端对象,也许是一个客户端池?

标签: javaservletsjax-rs

解决方案


推荐阅读