向Mojarra 2.3.3请求(已压缩)“ jsf.js”会导致响应为空

时间:2019-01-28 15:37:24

标签: jsf mojarra gzipoutputstream

我在mojarra 2.3.3的项目中使用了<f:websocket/>标记,在项目阶段“开发”中,一切正常。但是,当项目以阶段“ Staging”部署到我们的QA系统上时,客户端产生了JS错误“未定义'mojarra'”。 这是由于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代码。不一定必须将其压缩。

添加: 该项目在具有JDK1.8.0_161的Tomcat 8.5.14上运行,而我正在使用Primefaces(6.2)。 我创建了一个不使用Primefaces的简单工作示例here。它实际上并没有将任何内容推入websocket通道,但是这里相关的是在加载index.xhtml时的JS错误。 它还已通过Java 1.8_202,Tomcat 8.5.37,Mojarra 2.3.8进行了测试。 Mojarra 2.2.14可以正常工作(加载jsf.js)。

0 个答案:

没有答案