我的泽西客户端(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);
}