我的Jersey客户端的延迟问题

时间:2015-05-07 09:58:39

标签: jersey-client

我的泽西客户端(2.14)遇到了一些麻烦。 我每100毫秒向我的服务器(Jetty 8.1)发送请求。 10秒钟没有问题,但每10秒钟我有一个请求仍然被阻止2秒......

麻烦似乎不是来自码头......

有人有类似的问题吗?

private class PostJob implements Runnable {

    @Override
    public void run() {
        while (start) {
            try {
                final HttpData take = daQueu.take();
                final String path = take.path();
                final Entity<Object> arg = take.arg();
                for (final Map.Entry<String, ClientHandler> e : clients.entrySet()) {
                    final ClientHandler clientHandler = e.getValue();
                    long currentTimeMillis = System.currentTimeMillis();
                    Invocation.Builder request = null;
                    if (REQUEST_CACHE.containsKey(path)) {
                        request = REQUEST_CACHE.get(path);
                    } else {
                        LOGGER.debug("build new request");
                        request = clientHandler.client.target(path).request(MediaType.APPLICATION_JSON_TYPE);
                        REQUEST_CACHE.put(path, request);
                    }
                    Response post = request.post(arg);
                    LOGGER.debug("Execution delay for sending: {}", System.currentTimeMillis() - currentTimeMillis);
                    post.close();
                }

            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }

}

我很确定它不是来自Jetty Server ......(但......)。 我的服务器嵌入在Karaf容器中,由Pax-web功能启动。

我的服务器代码的一部分注册了我的servlet:

final ResourceConfig restServletConf = new ResourceConfig()
                  .register(JacksonFeature.class).register(MultiPartFeature.class).register(SseFeature.class).register(JsonProcessingFeature.class);
            restServletConf.registerInstances(restResources);
            final HttpServlet restServlet = new ServletContainer(restServletConf);
            try {
                webContainer.registerServlet(conf.servletPath, restServlet, null, restService);
                logService.log(LogService.LOG_INFO, "Serving JAX-RS resources from " + conf.servletPath);

                // Servlet filters must be started after the REST servlet
                // (constraint from PAX-Web's WebContainer API).
                restService.start();
            } catch (Exception e) {
                logService.log(LogService.LOG_ERROR, "Failed to start JAX-RS servlet", e);
            }

0 个答案:

没有答案
相关问题