Compatibility Matrix

Mike Kienenberger edited this page Aug 16, 2016 · 58 revisions

This wiki describes the compatibility between OmniFaces versions and specific versions of popular application servers. The servers listed below have been explicitly tested with the listed version of OmniFaces. Testing currently happens by running our showcase on each server. A pass means this application starts up, all pages can be requested and all demonstrated functionality works. At the moment we still do this manually (yes, we really should automate this), so although we try to be thorough there's a chance we might have missed something.

Also note that our showcase doesn't demonstrate each and every feature that's in OmniFaces. We try to keep coverage high, but's it's not 100%.

Our live showcase applications runs on OpenShift, which uses JBoss EAP / WildFly (currently version 8.2, previously 8.1, 6.3, 6.1 and 6.0.1). This means that JBoss EAP / WildFly is typically the server that's tested best.

Java EE 6

OmniFaces JBoss GlassFish TomEE Tomcat+Weld WebLogic WebSphere Liberty Geronimo WASCE Geronimo Apache Resin
1.5 EAP 6.0.1
EAP 6.1 1.5.2 12.1.1
1.6 EAP 6.0.1
EAP 6.1 1.5.2
7.0.42+1.1.14 12.1.1
12.1.2 8.5.5 3.0.1 4.0.38 (X)
1.8 EAP 6.2
7.0.53+2.2.0 4.0.40

(X) Resin 4.0.38 doesn't support some methods in the Servlet API but the showcase application worked around that. Unfortunately it also doesn't support generic producer methods which causes a failed deployment.

Java EE 7

OmniFaces JBoss GlassFish/Payara TomEE Liberty WebLogic Tomcat+Mojarra+Weld Tomcat+MyFaces+Weld Tomcat+Mojarra+OWB Tomcat+MyFaces+OWB Jetty+MyFaces+Weld
2.0 WF 8.1 4.0 (+)
- - (X) (X)
2.1 WF 8.2 4.1 1.7.2 ($) 8.0.21+2.2.10+2.2.10 8.0.21+2.2.8+2.2.10 8.0.23+2.2.11+1.5.0 ($) 8.0.23+2.2.8+1.5.0 ($)
2.2 WF 8.2.1
WF 9.0.1 7.0.0 M1 8.0.30+2.2.12+2.3.2 8.0.30+2.2.9+2.3.2 8.0.30+2.2.12+1.6.2 8.0.30+2.2.9+1.6.2
2.3 WF 8.2.1
WF 9.0.2
WF 10.0.0 7.0.0 M2 (#) 8.0.32+2.2.13+2.3.3 8.0.32+2.2.9+2.3.3 8.0.32+2.2.13+1.6.2 8.0.32+2.2.9+1.6.2 9.2.18+2.2.10+2.2.5 (!)
2.4 WF 8.2.1
WF 9.0.2
WF 10.0.0
EAP 7.0.0 7.0.0 (#)
7.0.0 PLUME (#) 12.2.1 (%) 8.0.35+2.2.13+2.3.4 8.0.35+2.2.10+2.3.4

(+) Only #{now} and #{startup} fails. This is a bug in GlassFish 4.0 and already fixed in 4.1 and newer. There are workarounds.

(X) OmniFaces 2.0 does not deploy correctly on Tomcat with OpenWebBeans. Minimum of OmniFaces 2.1 is required for Tomcat+OWB.

($) Only injection in @FacesConverter and @FacesValidator fails. This is a bug in OpenWebBeans 1.5.0 and already fixed in OpenWebBeans 1.6.x. The workaround is to manually grab bean by JNDI.

(#) OpenWebBeans 1.6.2 and 1.6.3 (and probably all older versions too) will throw NPE during deserializing the session scoped CDI bean responsible for holding <o:socket> channels and users. The websocket continues working, but endusers have to refresh their pages after a server restart in order to reconnect the websocket. See also OWB issue 1123.

(%) When using <o:socket> in WebLogic, make sure that any servlet filters matching /omnifaces.push/* URL pattern (thus, also those /* catch-all filters) are reconfigured to skip this URL pattern, or at least have <async-supported>true</async-supported> set and do not touch the websocket handshake request/response. On contrary to all other servers, WebLogic invokes webapp-provided filters before its internal websocket filter. If the webapp provides e.g. a GZIP filter, then that could corrupt the websocket handshake request with a JavaScript error "Invalid status line".

(!) Difficult to get jetty working. Required using "jsp-impl=glassfish" in jsp.ini as "jsp-impl=apache" causes MyFaces to detect CDI container as Apache Tomcat 7. Needed to add BeanManager config info to jetty.xml config file and web.xml file. Did not need to add any weld servlet listeners to web.inf. Needed to explicitly include WebInfIncludeJarPattern set to avoid annotation scanning timeouts. Required raising max fileno from 5000 to 500000 under linux to avoid too many open files (might have been related to webapp annotation scanning).

A "-" in the table means there wasn't a server available for the given Java EE version at the time OmniFaces was released. If there's nothing listed in the table for an OmniFaces/server combination it means we didn't test it, but it may just work.