0

<f:websocket/>在我的项目中使用了 mojarra 2.3.3 的标签,在项目阶段“开发”中一切正常。但是当项目部署在我们的 QA 系统上时,项目阶段为“Staging”,客户端产生了 JS 错误“'mojarra' not defined”。这是由于 jsf.js 被加载为空白文件。当我调试时,我发现com.sun.faces.application.resource.ResourceHelper#getInputStreamFromClientInfojs 文件的内容被复制到一个 GZIPOutputStream 中,该 GZIPOutputStream 永远不会完成,因此没有任何内容写入包装的 ByteArrayOutputStream (ll. 234-237),导致对我的客户端的响应为空。在阶段Development,文件以未压缩的形式交付。

这是一个错误还是我错过了什么?有这个配置吗?有解决方法吗?

我尝试设置com.sun.faces.compressJavaScriptfalse没有运气。当我GZIPOutputStream#finish()在将流写入调试器中的 ByteArrayInputStream 之前调用流时,输入流的内容是正确的并发送到客户端。我还检查了 mojarra 2.3.8,但代码似乎没有改变。

我希望客户端收到正确的 js 代码。它不一定要被压缩。

另外:该项目在带有 JDK1.8.0_161 的 Tomcat 8.5.14 上运行,我使用的是 Primefaces (6.2)。我在这里创建了一个不使用 Primefaces 的最小工作示例。它实际上并没有将任何东西推入 websocket 通道,但这里的相关事情是加载 index.xhtml 时的 JS 错误。它还使用 Java 1.8_202、Tomcat 8.5.37、Mojarra 2.3.8 进行了测试。它与 Mojarra 2.2.14 一起工作(加载 jsf.js)。

4

0 回答 0