Upgrading a JSF 1.2 application to JSF 2 is not always a library swap. The result depends on the application server’s bundled JSF implementation, your configuration, whether the views use JSP or Facelets, and which component libraries the application relies on. First identify those pieces; then choose whether to keep JSP temporarily or migrate the views, and test the behaviors most likely to change.
This guide covers the historical JSF 1.2-to-JSF 2.0/2.1 migration. Its version-specific examples do not establish which runtimes are supported today: check the documentation for the exact server, JSF implementation, and component-library versions you intend to deploy.
What to establish before you upgrade
Record the versions and configuration that actually run in production. A server may supply JSF itself, and changing from that implementation to another can expose dependencies that were invisible while the application stayed on the same runtime.
- JSF source version and the intended JSF 2 target version.
- Java level, application-server product and version, and the JSF implementation and version selected at runtime.
- View technology, view suffixes, servlet mappings, and any configured view handler.
- Every component library and its compatibility information for the target server and JSF implementation.
- Application and library code that imports provider-specific classes or relies on provider-specific settings.
faces-config.xmlversions, metadata-complete settings, and descriptors packaged in JAR files.
Keep a rollback plan tied to the exact deployment being changed. Historical JSF 2 migration documentation does not establish a safe Java level, supported server release, or modern dependency coordinates for your target.
Recommended Free Tools
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
Check who owns the JSF runtime
Determine whether JSF is supplied by the container or packaged with the application. Do not add a second API or implementation blindly: duplicate JSF classes can conflict with the server’s own runtime. The Mojarra 2.1 overview distinguishes using a Java EE API dependency with provided scope on a certified container from taking a hard dependency on a particular Mojarra implementation. Those are historical examples, not current coordinates to copy without checking your target.
Mojarra and MyFaces are separate JSF implementations. Container defaults and provider-specific compatibility are not interchangeable. IBM’s documentation, for example, says WebSphere Application Server V8 and later default to MyFaces 2.0 and describes an optional Sun Reference Implementation (RI) configuration for applications dependent on RI behavior. IBM also describes that RI as deprecated and limited to JSF 1.2. These statements apply to the documented WebSphere setup, not to other servers.
Search for implementation-specific dependencies
Look beyond imports in application classes. Search configuration and library code for provider-specific context parameters, view handlers, and classes that extend implementation packages. IBM identifies direct extension of RI classes and RI-specific context parameters as reasons a WebSphere application might need compatibility with the RI. If your target changes implementations, assess these dependencies early rather than discovering them after a full migration.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
Can you keep JSP pages?
Possibly, as a transitional path. Mojarra 2.0.5 release notes say JSP-based JSF 1.2 applications should deploy and run without issue on that implementation. But compatibility is not feature parity: those notes say most JSF 2 features are available only through Facelets. If the goal is to use those features, plan and test a view migration instead of assuming existing JSP pages provide access to them.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minute| Decision | Keep JSP temporarily | Convert to Facelets |
|---|---|---|
| Migration scope | Potentially smaller where compatibility holds; legacy configuration and feature limits still need review. | Requires converting pages and, where used, custom JSP tag libraries. |
| JSF 2 feature access | Mojarra 2.0.5 notes that most JSF 2 features require Facelets. | Uses the view technology associated with those features in the cited migration material. |
| Work to inspect | Legacy handlers, configuration, and any feature that depends on Facelets. | XML well-formedness, include and tag behavior, and custom handlers. |
| Best fit | A staged upgrade where stabilizing the deployment comes before view conversion. | A project that needs Facelets features or wants to remove legacy Facelets dependencies. |
The cited sources do not establish a universal migration effort or performance advantage for either path. Choose based on the application’s requirements and test results.
What changes when moving JSP views to Facelets?
The Mojarra migration guide recommends converting JSF/JSP pages and custom JSP tag libraries to Facelets and Facelet tag libraries. Treat this as a real view-layer migration, not a file-extension change.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
- Facelets templates must be well-formed XML. JSP page directives and scriptlets are not Facelets concepts; replace their roles using suitable JSF or application mechanisms.
- Replace JSP includes with
ui:includewhere appropriate, then verify the resulting view and postback behavior. - Custom JSP tag libraries need Facelet tag-library descriptors. Complex tag handlers may require custom Facelets
TagHandlerwork. - Code extending
com.sun.faceletsclasses depends on legacy implementation internals. Migrate it to standard APIs before removing Facelets 1.1.x.
Which configuration can silently block JSF 2 behavior?
Configuration that was valid for an older application can prevent the JSF 2 implementation from using its bundled Facelets support or discovering annotations. Check these items against the exact versions in the Mojarra migration material; do not assume they behave identically in every implementation.
Update faces-config.xml deliberately
In the documented JSF 2 versions, a faces-config.xml at version 1.2 or older disables the bundled JSF 2 Facelets implementation and annotation scanning. Confirm the descriptor version and schema match the intended target, rather than leaving a legacy descriptor in place without understanding its effect.
Remove obsolete Facelets configuration only after migrating dependencies
The cited Mojarra documentation says that configuring the legacy com.sun.facelets.FaceletViewHandler also disables the newer bundled Facelets implementation. Before removing old Facelets 1.1.x libraries or configuration, check for application or library code that directly extends com.sun.facelets classes and migrate those extensions as needed.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Audit annotation discovery in both the web application and JARs
Adding annotations does not guarantee that every artifact will be scanned. Mojarra’s migration guide says classes in JARs will not be scanned unless the relevant META-INF/faces-config.xml descriptor exists, and that metadata-complete can disable scanning. Check the web application descriptor and library-level descriptors, as well as metadata-complete flags, if the application relies on annotation-discovered artifacts.
How should you test partial state saving?
JSF 2 partial state saving records changes after the initial component state is marked, then applies that delta to a reconstructed view on postback. That approach makes consistent view reconstruction important. Mojarra’s JSF 2.1 migration guide warns about views whose structure changes between the initial request and postback.
- A dynamically changing
ui:includesource. - A
c:forEachloop whose row count differs between the initial request and postback. - Forms and postbacks that depend on components being present in a stable view tree.
The guide’s rule of thumb is to recreate the same view on postback. If the application cannot do that for a particular view, the guide documents application-wide and per-view ways to disable partial state saving. Use the setting only after checking the relevant implementation’s documentation and testing the affected view; do not assume disabling it is a universal remedy.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
The Mojarra guide also reports an initial client-side-state-saving sample in which one view went from 10K to 2K. That is a historical sample result from the JSF 2.1 migration document, not a general performance guarantee or an independent benchmark.
What else can break or behave differently?
Lifecycle exception reporting
IBM’s JSF 2.0 migration documentation says unexpected lifecycle exceptions are published through ExceptionHandler, unlike the hidden behavior it describes for the prior setup. It also describes an optional compatibility handler for applications that require the earlier behavior. Check how exceptions are logged, surfaced, and handled by the application rather than relying on old expectations.
Component-library widgets
Verify each component library against the exact server, JSF implementation, and view technology. IBM documents a WebSphere-specific need for an updated JavaServer Faces widget library (JWL), and notes that JWL does not work with Facelets-based pages. This is one vendor-specific example, not a general JSF 2 rule; use each component vendor’s compatibility information for your own stack.
Converters, validators, and postback behavior
Include converters, validators, forms, and postbacks in focused regression tests. Their presence alone does not prove compatibility, particularly when the implementation changes or the view tree is reconstructed differently. Compare actual application behavior against the target runtime.
A practical migration sequence
- Inventory the deployed stack. Record source and target JSF versions, Java level, server version, runtime implementation, view mappings, and component libraries.
- Identify ownership and dependencies. Establish whether the server supplies JSF, avoid duplicate APIs or implementations, and search code and configuration for provider-specific packages, settings, and handlers.
- Choose the view path. Decide whether to retain JSP as a tested bridge or convert pages and tag libraries to Facelets. Base the choice on required features and the work your application actually contains.
- Align descriptors and discovery. Review the target version in
faces-config.xml, old view-handler settings, JAR-level descriptors, andmetadata-completebefore relying on Facelets or annotations. - Test sensitive behaviors. Exercise dynamic includes, loop row counts, forms and postbacks, annotation-discovered artifacts, converters, validators, exceptions, and component widgets. Test the client- or server-side state-saving configuration used in production.
- Deploy and rehearse recovery. Validate the exact build on the exact target runtime, record the rollback procedure, and confirm that logs and operational checks still expose failures clearly.
These steps describe a migration approach, not a claim that a particular application has been tested. Version-specific settings and dependencies must be verified against the named target environment.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

