Minimum required Tomcat version for JSF 2.2 - jsf

I would like to upgrade my JSF 1.2 application to JSF 2.2. What's the minimum required Tomcat version for JSF 2.2? I'm currently using Tomcat 5. Is it possible to run JSF 2.2 on it?

JSF 2.2 requires a Servlet 3.0 compatible container, mainly because of the new <h:inputFile> component which requires container-native file upload support. This was only introduced in Servlet 3.0.
If you check the Tomcat versions overview, then you'll see that you need minimally Tomcat 7.x in order to have a Servlet 3.0 compatible container.
So what's the latest version I can update JSF to?
You're not terribly clear on the exact Tomcat version you're currently using (5.0.x vs 5.5.x is quite a difference), but if it is Tomcat 5.5.x, then you could run JSF 2.0/2.1 on it if you supply a custom EL 2.1 compatible implementation along the webapp itself. See also the answer on Running JSF 2.0 on Servlet 2.4 container.

Related

OmniFaces 2.0 "Required CDI" error even though CDI is used

I'm using OmniFaces 1.6 currently, with an application running JSF 2.2.6, Weld 1.1.9, on a Tomcat 7.
I've tried updating OmniFaces to 2.0, but when I do, I get this error message while launching the application (and the application doesn't start):
This OmniFace version requires CDI, but none was found on this environment. OmniFaces 2.x requires a minimum of JSF 2.2
It links to this page: http://omnifaces.org/cdi/
The problem is that, as I said, the application definitely uses JSF 2.2 and CDI.
Any ideas on what could be wrong?
I had same issue with you.
Please check this
http://omnifaces.org/cdi/
here are the additional instructions:
Install CDI 1.1+ in this environment.
For Tomcat users who don't have freedom in server choice, refer this
article: How to install CDI in Tomcat? When installing Weld, make
sure that you're using a minimum of version 2.2.0! Older versions have
initialization ordering bugs.
Switch to a CDI 1.1 capable environment.
For Tomcat users who have full freedom in server choice, just replace
Tomcat by TomEE, or perhaps even by WildFly.

Is OmniFaces compatible with JSF 2.2?

As the questions states, is OmniFaces compatible with JSF 2.2?
Will it have dependencies only on JSF or other Java EE dependencies as well? I.e. will it be able to run just with Tomcat + JSF?
OmniFaces 1.6 showcase application has been tested on GlassFish 4 with Mojarra 2.2.2 and Tomcat 7.0.42 with Mojarra 2.2.3. There were no problems when using OmniFaces 1.6 with Mojarra 2.2.x. Only Glassfish 4 has a problem with using the #{now} and #{startup} beans from OmniFaces, but this is not OmniFaces' fault. For any known issues you can keep track of known issues wiki.
OmniFaces 1.x has no other required dependencies than Servlet, EL and JSF, with the minimum versions 2.5, 2.1 and 2.0 respectively. Tomcat already provides Servlet and EL out the box. You only need to supply JSF yourself (which in turn has a dependency on JSTL 1.2 which is also absent on Tomcat).

t:saveState does not work anymore after migrating JSF 1.x to JSF 2.x in WebSphere 8

I have used JSF 1.x with Tomahawk 1.1.9 in my project and I'm now migrating this project to Websphere 8. I have changed the Faces config and web.xml configuration.
All components are working fine except of t:savestate. I am still using Tomahawk 1.1.9.
Is there any issue in using Tomahawk 1.1.9 version in JSF 2.x application?
You need to upgrade Tomahawk to a JSF 2.x compatible one.
In their download page, pick the one saying "for JSF 2.0" and not the one saying "for JSF 1.2".

Highest supported JSF version for JBoss 4.0?

I am using jboss 4.0 and Java 1.5. I want to use JSF, but I know that this version is fit to JSF 1.1 version. Is it possible to use the latest JSF version on JBoss 4.0?
As JSF API is built on top of JSP/Servlet API, the maximum supported JSF version depends on the maximum supported JSP/Servlet version.
JSF 1.0 and 1.1 requires a minimum of Servlet 2.4 / JSP 2.0.
JSF 1.2 works on Servlet 2.4, but requires a minimum of JSP/EL 2.1 which goes hand in hand with Servlet 2.5, so it requires after all Servlet 2.5. If you replace JSP 2.1 by Facelets 1.x as default view technology, then you can use JSF 1.2 on Servlet 2.4.
JSF 2.0 which uses by default Facelets 2.x requires a minimum of EL 2.1 which goes hand in hand with Servlet 2.5, so it requires after all Servlet 2.5. If you supply your own EL 2.1 API/impl, then you can in theory run JSF 2.0 on Servlet 2.4.
JSF 2.1 requires a minimum of Servlet 3.0 and Java 1.6 (6.0).
JBoss 4.x is a Servlet 2.4 container. So if you stick to JSP, then you can at highest use JSF 1.1. But if you replace JSP by Facelets 1.x, then you can use JSF 1.2. JSF 1.2 offers as the most important advantages the possibility to get rid of <f:verbatim>, to use <f:setPropertyActionListener>, to use #PostConstruct, etc.
JSF 2.0 is in theory possible, but I don't guarantee that it will work 100% as I am not fully aware of any possible side effects. I have as far only run it successfully with a very basic test page with an ajax form and a view scoped bean on Tomcat 5.5. It might fail when it goes into the complex. See also Running JSF 2.0 on Servlet 2.4 container.

Running JSF 2.0 on Servlet 2.4 container

As far as I know, JSF 2 requires servlet 2.5, so it doesn't run on JBOSS 4.05 (Tomcat 5.5). Unfortunately I have to deploy an application who uses JSF 2.0 and Primefaces on that environment.
Is there any hack to use that?
JSF 2.0 depends heavily on EL 2.1 which is part of Servlet 2.5 and is a major change as opposed to EL 2.0 which is part of Servlet 2.4, but it does not depend on any particular Servlet 2.5 specific API. Servlet 2.4 should work as good. So in theory, you could get JSF 2.0 to work on Servlet 2.4 if you provide your own EL 2.1 API and implementation in /WEB-INF/lib. I did a quick test here on Tomcat 5.5.33 with the following libraries in /WEB-INF/lib:
el-api.jar file copied from lib folder of Tomcat 6.0.x
jboss-el.jar file (implements EL 2.1 and supports EL 2.2 like method invocation with arguments)
jsf-api.jar and jsf-impl.jar from Mojarra 2.0.x
And a Servlet 2.4 web.xml where the JBoss EL is been declared:
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>
A simple JSF 2.0 Facelet (not JSP!) with a simple <h:form> with a button with <f:ajax> and a simple #ViewScoped #ManagedBean works for me on Tomcat 5.5.33. Give it a try on your JBoss 4.0.5 and test it thoroughly.
Note that you need a minimum of JDK 1.5, not JDK 1.4. Also note that your application is this way unportable to any Servlet 3.0 container due to presence of the Servlet 2.5 specific el-api.jar file.

Resources