使用 WildFly 迁移到 JDK 10 和 JSF 2.3 后,网站渲染在 iOS 和 Mac OSX 上中断
Site rendering broken on iOS and Mac OSX after moving to JDK 10 and JSF 2.3 with WildFly
美好的一天
通过禁用 HTTP/2(同时仍然为 HTTPS 保留 TLS),WildFly 13 解决了以下问题。
即使是不受影响的浏览器和系统组合(所有非 Apple 的东西)现在似乎加载得更快。
按照此 post 中关于如何禁用 HTTP/2 的说明进行操作:
https://developer.jboss.org/message/984394?et=watches.email.thread#984394
来自 ./jboss-cli.sh cli 运行:
/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=enable-http2,value=false)
并重新加载/重启服务器。所有设备都能完美快速地呈现。
如果其他人 运行 遇到类似的错误,我将离开下面的内容。
我更新了我的代码和 POM 文件,以根据 WildFly 13 BOM POM 和@Balusc JSF 2.3 Java EE 8 启动示例应用程序使用 WildFly 13 的 Java EE 8 依赖项。
所以我将其设置为使用:
- JSF 2.3.5.Final
- OmniFaces 3.1
- PrimeFaces 6.2.7
在台式机(所有操作系统和所有最新浏览器)上,站点 100% 工作,war 部署时间缩短一半。
但是网站无法在我的 iPhone 上正确呈现。我尝试了所有可从应用商店安装的浏览器,看起来最接近正确的浏览器是 Firefox。
然而,即使使用 Firefox,我也无法通过登录屏幕。
在 Android 和所有非基于 Apple 的产品上,网站可以正常运行,没有任何错误日志。
是否有人war遇到在基于 Apple 的产品上呈现 JSF 2.3 的问题?
任何关于查找、添加或更改内容的指示将不胜感激。
查看下面的日志文件信息:
仅从 iOS / Mac OSX 触发的初始错误是 OmniFaces 信息的 UNDERTOW 错误(我们使用 TLS 进行 HTTPS,但在将所有内容移动到 JSF 2.3 之前100% 工作,零错误或 war 日志记录)
2018-07-30 09:09:18,741 ERROR [io.undertow] (default task-3078) UT005085: Connection io.undertow.server.protocol.http2.Http2ServerConnection@7e55834 for exchange HttpServerExchange{ GET /edsnext/javax.faces.resource/omnifaces.js.xhtml request {accept=[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8], accept-language=[en-us], :authority=[edsnext.megchemsa.com:62543], accept-encoding=[gzip, deflate], :path=[/edsnext/javax.faces.resource/omnifaces.js.xhtml?ln=omnifaces&v=3.1], user-agent=[Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1], :scheme=[https], cookie=[JSESSIONID=U5X9u-A83bccAnpA1XUnEFzmngqI9iDJwuIiU_Qo], :method=[GET], Referer=[https://edsnext.megchemsa.com:62543/edsnext/], upgrade-insecure-requests=[1], Host=[edsnext.megchemsa.com:62543]} response {Expires=[Mon, 30 Jul 2018 09:57:18 GMT], ETag=[W/"5933-1532705069245"], Last-Modified=[Fri, 27 Jul 2018 15:24:29 GMT], Set-Cookie=[JSESSIONID=U5X9u-A83bccAnpA1XUnEFzmngqI9iDJwuIiU_Qo.edsnext; path=/edsnext], Content-Type=[application/javascript], Date=[Mon, 30 Jul 2018 07:09:18 GMT], :status=[200]}} was not closed cleanly, forcibly closing connection
然后找不到以下 PrimeFaces 资源 warnings(登录页面在 iOS 上呈现不正确)
2018-07-30 09:09:21,056 WARNING [javax.enterprise.resource.webcontainer.jsf.application] (default task-3091) JSF1064: Unable to find or serve resource, fa/fontawesome-webfont.eot, from library, primefaces.
2018-07-30 09:09:21,056 WARNING [javax.enterprise.resource.webcontainer.jsf.application] (default task-3084) JSF1064: Unable to find or serve resource, fonts/lato-regular-webfont.svg, from library, primefaces-omega.
2018-07-30 09:09:21,056 WARNING [javax.enterprise.resource.webcontainer.jsf.application] (default task-3082) JSF1064: Unable to find or serve resource, fa/fontawesome-webfont.ttf, from library, primefaces.
2018-07-30 09:09:21,056 WARNING [javax.enterprise.resource.webcontainer.jsf.application] (default task-3100) JSF1064: Unable to find or serve resource, fa/fontawesome-webfont.svg, from library, primefaces.
2018-07-30 09:09:21,056 WARNING [javax.enterprise.resource.webcontainer.jsf.application] (default task-3103) JSF1064: Unable to find or serve resource, fonts/lato-bold-webfont.svg, from library, primefaces-omega.
2018-07-30 09:09:21,056 WARNING [javax.enterprise.resource.webcontainer.jsf.application] (default task-3091) : java.nio.channels.ClosedChannelException
编辑:添加了指向 UNDERTOW 错误以及大量 PrimeFaces 缺失资源的日志文件信息。
编辑 2:
好的,我测试了这个:
服务器端:
- CentOS 7.5 全部更新
- 甲骨文JDK10.1
- 野蝇 13.0.0.Final
- JSF 2.3.5.SP1
- PrimeFaces 6.2.7
- OmniFaces 3.1
以下设置完美呈现网站,零错误或 war在调试级别:
- CentOS GNOME 7.5 铬
- CentOS GNOME 7.5 火狐开发者版
- Windows 10 Chrome
- Windows 10 Firefox 开发者版
- Android Studio Nexus 5 AVD APK 28 Chrome
- 三星 Galaxy S7 Chrome
- 三星 Galaxy S7 火狐
所有可从 Apple 应用商店安装的浏览器(包括 Safari)都无法呈现网站。都有 UNDERTOW 错误。
测试 Mac OSX - 最新更新版本 - 也因 UNDERTOW 错误而失败。
我用 Apple 记录了错误报告。问题是,由于必须通过 iPhone 或 iPad 访问 Web 应用程序,因此大量用户受到此影响。
我还能做些什么来加快速度?
要解决此错误,请使用以下命令在 WildFly 13 上禁用 HTTP/2:
按照此 post 中关于如何禁用 HTTP/2 的说明进行操作:
https://developer.jboss.org/message/984394?et=watches.email.thread#984394
来自 ./jboss-cli.sh cli 运行:
/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=enable-http2,value=false)
重新启动/重新加载服务器,一切正常。
美好的一天
通过禁用 HTTP/2(同时仍然为 HTTPS 保留 TLS),WildFly 13 解决了以下问题。
即使是不受影响的浏览器和系统组合(所有非 Apple 的东西)现在似乎加载得更快。
按照此 post 中关于如何禁用 HTTP/2 的说明进行操作:
https://developer.jboss.org/message/984394?et=watches.email.thread#984394
来自 ./jboss-cli.sh cli 运行:
/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=enable-http2,value=false)
并重新加载/重启服务器。所有设备都能完美快速地呈现。
如果其他人 运行 遇到类似的错误,我将离开下面的内容。
我更新了我的代码和 POM 文件,以根据 WildFly 13 BOM POM 和@Balusc JSF 2.3 Java EE 8 启动示例应用程序使用 WildFly 13 的 Java EE 8 依赖项。
所以我将其设置为使用:
- JSF 2.3.5.Final
- OmniFaces 3.1
- PrimeFaces 6.2.7
在台式机(所有操作系统和所有最新浏览器)上,站点 100% 工作,war 部署时间缩短一半。
但是网站无法在我的 iPhone 上正确呈现。我尝试了所有可从应用商店安装的浏览器,看起来最接近正确的浏览器是 Firefox。
然而,即使使用 Firefox,我也无法通过登录屏幕。
在 Android 和所有非基于 Apple 的产品上,网站可以正常运行,没有任何错误日志。
是否有人war遇到在基于 Apple 的产品上呈现 JSF 2.3 的问题?
任何关于查找、添加或更改内容的指示将不胜感激。
查看下面的日志文件信息:
仅从 iOS / Mac OSX 触发的初始错误是 OmniFaces 信息的 UNDERTOW 错误(我们使用 TLS 进行 HTTPS,但在将所有内容移动到 JSF 2.3 之前100% 工作,零错误或 war 日志记录)
2018-07-30 09:09:18,741 ERROR [io.undertow] (default task-3078) UT005085: Connection io.undertow.server.protocol.http2.Http2ServerConnection@7e55834 for exchange HttpServerExchange{ GET /edsnext/javax.faces.resource/omnifaces.js.xhtml request {accept=[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8], accept-language=[en-us], :authority=[edsnext.megchemsa.com:62543], accept-encoding=[gzip, deflate], :path=[/edsnext/javax.faces.resource/omnifaces.js.xhtml?ln=omnifaces&v=3.1], user-agent=[Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1], :scheme=[https], cookie=[JSESSIONID=U5X9u-A83bccAnpA1XUnEFzmngqI9iDJwuIiU_Qo], :method=[GET], Referer=[https://edsnext.megchemsa.com:62543/edsnext/], upgrade-insecure-requests=[1], Host=[edsnext.megchemsa.com:62543]} response {Expires=[Mon, 30 Jul 2018 09:57:18 GMT], ETag=[W/"5933-1532705069245"], Last-Modified=[Fri, 27 Jul 2018 15:24:29 GMT], Set-Cookie=[JSESSIONID=U5X9u-A83bccAnpA1XUnEFzmngqI9iDJwuIiU_Qo.edsnext; path=/edsnext], Content-Type=[application/javascript], Date=[Mon, 30 Jul 2018 07:09:18 GMT], :status=[200]}} was not closed cleanly, forcibly closing connection
然后找不到以下 PrimeFaces 资源 warnings(登录页面在 iOS 上呈现不正确)
2018-07-30 09:09:21,056 WARNING [javax.enterprise.resource.webcontainer.jsf.application] (default task-3091) JSF1064: Unable to find or serve resource, fa/fontawesome-webfont.eot, from library, primefaces.
2018-07-30 09:09:21,056 WARNING [javax.enterprise.resource.webcontainer.jsf.application] (default task-3084) JSF1064: Unable to find or serve resource, fonts/lato-regular-webfont.svg, from library, primefaces-omega.
2018-07-30 09:09:21,056 WARNING [javax.enterprise.resource.webcontainer.jsf.application] (default task-3082) JSF1064: Unable to find or serve resource, fa/fontawesome-webfont.ttf, from library, primefaces.
2018-07-30 09:09:21,056 WARNING [javax.enterprise.resource.webcontainer.jsf.application] (default task-3100) JSF1064: Unable to find or serve resource, fa/fontawesome-webfont.svg, from library, primefaces.
2018-07-30 09:09:21,056 WARNING [javax.enterprise.resource.webcontainer.jsf.application] (default task-3103) JSF1064: Unable to find or serve resource, fonts/lato-bold-webfont.svg, from library, primefaces-omega.
2018-07-30 09:09:21,056 WARNING [javax.enterprise.resource.webcontainer.jsf.application] (default task-3091) : java.nio.channels.ClosedChannelException
编辑:添加了指向 UNDERTOW 错误以及大量 PrimeFaces 缺失资源的日志文件信息。
编辑 2:
好的,我测试了这个:
服务器端:
- CentOS 7.5 全部更新
- 甲骨文JDK10.1
- 野蝇 13.0.0.Final
- JSF 2.3.5.SP1
- PrimeFaces 6.2.7
- OmniFaces 3.1
以下设置完美呈现网站,零错误或 war在调试级别:
- CentOS GNOME 7.5 铬
- CentOS GNOME 7.5 火狐开发者版
- Windows 10 Chrome
- Windows 10 Firefox 开发者版
- Android Studio Nexus 5 AVD APK 28 Chrome
- 三星 Galaxy S7 Chrome
- 三星 Galaxy S7 火狐
所有可从 Apple 应用商店安装的浏览器(包括 Safari)都无法呈现网站。都有 UNDERTOW 错误。
测试 Mac OSX - 最新更新版本 - 也因 UNDERTOW 错误而失败。
我用 Apple 记录了错误报告。问题是,由于必须通过 iPhone 或 iPad 访问 Web 应用程序,因此大量用户受到此影响。
我还能做些什么来加快速度?
要解决此错误,请使用以下命令在 WildFly 13 上禁用 HTTP/2:
按照此 post 中关于如何禁用 HTTP/2 的说明进行操作:
https://developer.jboss.org/message/984394?et=watches.email.thread#984394
来自 ./jboss-cli.sh cli 运行:
/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=enable-http2,value=false)
重新启动/重新加载服务器,一切正常。