How to install one jar variant of JSF 2.3 (javax.faces.jar) on WildFly
Here's the manual procedure:
-
Extract
javax.faces.jar
with a ZIP tool. You'll get 3 folderscom
,javax
,META-INF
(NOTE: in some versions you'll also see ajsf.js
file in the root, but this is a mistake, you should ignore it, it's already located inMETA-INF/resources/javax.faces
) -
Pack
com
andMETA-INF
folders intojsf-impl.jar
with a ZIP tool. -
Then, delete all files/subfolders in
META-INF
except ofMANIFEST.MF
. -
Pack
javax
andMETA-INF
folders intojsf-api.jar
with a ZIP tool. -
Continue here with those JARs: Upgrade JSF / Mojarra in JBoss AS / EAP / WildFly.
For the interested, JBoss AS and WildFly has internally a modular separation of Java EE based API and impl files. The separated JAR files jsf-api.jar
and jsf-impl.jar
are still needed. The reason is not really technical, but just an extra service to force developers programming against the right libraries. Only the API modules are exposed during compile time (usually, via the IDE-integrated plugin which adds them to "build path"). This should avoid starters accidentally finding, importing and using implementation classes such as those in com.sun.faces.*
package.
Already since version 1.x, the JSF implementation Mojarra was composed of two JAR files: jsf-api.jar
and jsf-impl.jar
. The API JAR contained the javax.faces.*
classes and the implementation JAR contained the com.sun.faces.*
classes. Since the change of the build system conform Java EE Maven rules, both the API and implementation classes were merged into a single javax.faces.jar
file, see also issue 2028 (started with Mojarra 2.1.6 at Dec 2011). Since Mojarra 2.3, the separated JAR files are not built anymore.