Запрос (gzipped) 'jsf.js' от Mojarra 2.3.3 приводит к пустому ответу - PullRequest
0 голосов
/ 28 января 2019

Я использовал тег <f:websocket/> в своем проекте с mojarra 2.3.3, и на стадии проекта «Разработка» все работало нормально.Но когда проект был развернут в нашей системе обеспечения качества с этапом проекта «Staging», клиент выдал ошибку JS «mojarra» notfined ».Это связано с тем, что файл jsf.js загружается как пустой файл.При отладке я обнаружил, что в com.sun.faces.application.resource.ResourceHelper#getInputStreamFromClientInfo содержимое файла js копируется в GZIPOutputStream, который никогда не завершается, и, таким образом, ничего не записывается в обернутый ByteArrayOutputStream (ll. 234-237), что приводит к пустому ответу на мойклиент.На этапе Development файл доставляется без сжатия.

Это ошибка или я что-то упустил?Есть ли конфигурация для этого?Есть ли обходной путь?

Я попытался установить com.sun.faces.compressJavaScript в false безуспешно.Когда я вызываю GZIPOutputStream#finish() в потоке перед его записью в ByteArrayInputStream в отладчике, содержимое входного потока корректно и отправляется клиенту.Я также проверил mojarra 2.3.8, но код, похоже, не изменился.

Я ожидаю, что клиент получит правильный код js.Это не обязательно должно быть сжато.

Добавление: Проект выполняется на Tomcat 8.5.14 с JDK1.8.0_161, и я использую Primefaces (6.2).Я создал рабочий пример miminal здесь , который не использует Primefaces.На самом деле он ничего не вставляет в канал веб-сокета, но здесь важна ошибка JS при загрузке index.xhtml.Он также протестирован с Java 1.8_202, Tomcat 8.5.37, Mojarra 2.3.8.Он работает (загружая jsf.js) с Mojarra 2.2.14.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...