Я только что обновил свой веб-сервер с Jetty 6.x до Jetty 8.0.1, и по какой-то причине, когда я делаю точно такой же запрос, иногда ответ получен в Gzipped, а иногда нет.
Вот как выглядят запрос и ответ в начале метода service () сервлета:
Request: [GET /test/hello_world?param=test]@11538114 org.eclipse.jetty.server.Request@b00ec2
Response: org.eclipse.jetty.servlets.GzipFilter$2@1220fd1
WORKED!
Request:[GET /test/hello_world?param=test]@19386718 org.eclipse.jetty.server.Request@127d15e
Response:HTTP/1.1 200
Connection: close
FAILED!
Вот мое объявление GzipFilter:
EnumSet<DispatcherType> all = EnumSet.of(DispatcherType.ASYNC, DispatcherType.ERROR, DispatcherType.FORWARD,
DispatcherType.INCLUDE, DispatcherType.REQUEST);
FilterHolder gzipFilter = new FilterHolder(new GzipFilter());
gzipFilter.setInitParameter("mimeTypes", "text/javascript");
gzipFilter.setInitParameter("minGzipSize", "0");
context.addFilter(gzipFilter, "/test/*", all);
Javadoc говорит, что:
GZIP Filter This filter will gzip the content of a response if:
The filter is mapped to a matching path ==>
The response status code is >=200 and <300
The content length is unknown or more than the minGzipSize initParameter or the minGzipSize is 0(default)
The content-type is in the comma separated list of mimeTypes set in the mimeTypes initParameter or if no mimeTypes are defined the content-type is not "application/gzip"
No content-encoding is specified by the resource
Мне кажется, что все эти условия выполнены в моем случае, за исключением, может быть, последнего "Ресурсом не указана кодировка содержимого". Как я могу это проверить?
Плюс, по причине, которую я тоже игнорирую, когда ответ не фильтруется с помощью GzipFilter, response.getWriter () генерирует исключение ввода-вывода. Почему это?