Tuesday, March 28, 2017

JSF 2.3 released!

After a long and at times intense spec and development process the JSF 2.3 EG is proud to announce that today we've released JSF 2.3.

JSF (JavaServer Faces), is a component based MVC framework that's part of Java EE. JSF 2.3 in particular is part of Java EE 8.

Major new features in JSF 2.3 are a tighter integration with CDI, support for WebSockets, a really cool component search expression framework (donated by PrimeFaces), basic support for extensionless URLs, and class level bean validation.

The age old native managed beans of JSF 2.3 have finally been deprecated (although they are still available for now) in favour of CDI. It's expected that these will be fully removed (pruned) in a future release.

The JSF 2.3 EG would like to thank everyone who contributed to JSF in whatever way, by creating bug reports, testing builds, providing comments and insights on the mailinglist and contributing code. Without those community contributions JSF 2.3 would not have been possible! Thanks to all our fantastic community members!

JSF 2.3 (Mojarra 2.3) can be downloaded per direct from the project's download page.

Maven coordinates for the implementation (includes API) are:


The full implementation can be used for Servlet containers such as Tomcat and Jetty.

Maven coordinates for just the API are:


The API jar can only be used as a compile time dependency.

Application servers Payara and GlassFish can be trivially updated by replacing the JSF 2.2 glassfish/modules/javax.faces.jar with the 2.3 version. It's usually a good idea to clear the OSGI cache after that (e.g. rm -rf [payara/gf gome]/ glassfish/domains/domain1/osgi-cache/felix/)

Arjan Tijms


  1. Oh, that's amazing. I really like JSF =)

    Now, just for curiosity, is there any plans for JSF on Java EE 9? xD

    1. Great that you like JSF ;)

      Lots of plans for JSF in Java EE 9. Among others actually removing all the deprecated stuff is considered, as well as making extensionless URLs more automated, improving the component model, having a unified repeat (base) component and lots more.

      Work on Mojarra 2.4 has already started, but no new spec features can be added right now as this requires a new EG to be assembled.

    2. I think the "Open EntityManager In View" or "Open Extended Persistence Context In View" patterns should be added to JSF 2.4.

    3. Would https://github.com/omnifaces/omnifaces/issues/394 require a new EG? And https://myfaces.apache.org/wiki/core/user-guide/configuration-of-special-features/view-pooling.html?

    4. >Would https://github.com/omnifaces/omnifaces/issues/394 require a new EG? And https://myfaces.apache.org/wiki/core/user-guide/configuration-of-special-features/view-pooling.html?

      That would indeed mostly require a new EG, although it's possible to add features in an implementation specific way (so you can enable them via a com.sun param, for instance)

  2. Thanks for the heads up. Good work on it to all those who contributed.

  3. I am going to test with Tomcat. As I understand no one application server support jsf 2.3 at the moment? Do I need integrate weld with tomcat?:((((

    1. Payara and GlassFish 4.1.x as well as JBoss/WildFly support JSF 2.3, given that you update the jar, or jars (in case of JBoss) yourself.

      For Tomcat a CDI implementation needs to be present indeed, but it does not necessarily have to be Weld.

    2. This comment has been removed by the author.

    3. Hi Arjan, Many thanks.
      I was wait this release of JSF, from 2008 all my projects in JSF :))), used all versions.
      I am integrating all kind of technologies with JSF:))

    4. Great, thanks for the head ups! :)

  4. Excuseme, i want to try jsf2.3 websocket and others new features, i add the

    to my pom but when i try to use its not there.. is there any procedure to use 2.3?


    1. the f:websocket tag is not there and also all others feautres

    2. It would be really helpful if this question was answered. For me, it's the f:validateWholeBean that is not there.

    3. It basically should work of course, as we developed examples and test using Mojarra as well including f:validateWholeBean.

      If you want, could you post a question about this on stackoverflow with details about the environment and a reproducer if possible? That site is much better suited to answering questions than the comment section here.


  5. It would be great if JSF would have support for:
    -json objects in its components (tables, forms, inputs, outputs)
    -rest calls from the components (buttons, links & tables)
    -access to the local storage via a component (write/read to/from)
    -support for restfull urls (like: /user/1234/orders)
    -exception mapping/handling (when exception A occurs then go to page X and show msg M)
    -more advanced navigation rules:
    * support for authentication and authorization tags (example page X requires loggedIn=true or rolesAllowed=#{allowedRoles or identity.hasRole('admin'), login-page=/login.xhtml}
    * support for (starting/ending) conversation (example: page X requires conversation, no-conversation-page=/main.xhtml)
    * support for page actions. Put f:viewParam and f:action in the navigation rules.
    * regex matching of urls.

    Basically, the world is moving to stateless architectures and JSF should make it possible to build web clients that can connect to backend systems that run somewhere else and retrieve data from it, validate it and show it on the screen.

    I see a huge improvement in this area.