Here are some notes I did for a client a LONG while ago....

1.     Overview 1.1      Purpose

The purpose of this document is to introduce the reader to the process to
upgrade a Struts 2 project to version 2.5.10.1 due to a vulnerability
discovered in earlier versions of Struts.  Although the likelihood of
CLIENT servers being susceptible to this vulnerability is small, it is
still recommended to perform this update.



This is a fairly major update to the struts2 family, and as such, has a few
caveats.



   - Tiles 3 has been merged back into the core struts2-tiles-plugin
   - Xwork is now in the core of Struts2 and is no longer a separate
   dependency
   - Xwork static message keys have been removed.
   - Filters and Interceptors have been re-factored into better packages



As this is a structural change, you must carefully clean the project both
externally and internally in your IDE.  At a minimum, use these steps:



   - Delete all files under the struts fileset in the modules/facets
   - Close the project in the IDE
   - Delete the target directory
   - Re-open the project from the POM, using the “delete and re-import”
   feature
   - Add the new Struts-2.5 files in the modules/facets



2.     Versions and Dependencies 2.1      Set the properties

<*struts.version*>2.5.10.1</*struts.version*>
<*tiles.version*>3.0.7</*tiles.version*>

Figure 2‑1.  Struts and Tiles Version Properties



2.2      Revert tiles plugin

Revert the “struts2-tiles3-plugin” back to “struts2-tiles-plugin”:



<*dependency*>

    <*groupId*>org.apache.struts</*groupId*>

    <*artifactId*>struts2-tiles-plugin</*artifactId*>

    <*version*>${struts.version}</*version*>
</*dependency*>

Figure 2‑2.  Struts Tiles Dependency



2.3      Remove the xwork dependency:



<*dependency*>

    <*groupId*>org.apache.struts.xwork</*groupId*>

    <*artifactId*>xwork-core</*artifactId*>

    <*version*>${struts.version}</*version*>
</*dependency*>

Figure 2‑3.  Removing Xwork


2.4      Replace the Static with its value:



In the BaseAction, replace:



XWorkMessages.DEFAULT_INVALID_FIELDVALUE

With:

"xwork.default.invalid.fieldvalue"










2.5      Package and Reference Changes


2.5.1    ValidationAware



Old:

import com.opensymphony.xwork2.ValidationAware;



New:

import com.opensymphony.xwork2.interceptor.ValidationAware;


2.5.2    Struts Filter (in web.xml)

Old:

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>



New:

 
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>


2.5.3    DTD Reference (in struts.xml)

Old:

<!DOCTYPE struts PUBLIC

        "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"

        "http://struts.apache.org/dtds/struts-2.1.7.dtd";>



New:

<!DOCTYPE struts PUBLIC

        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"

        "http://struts.apache.org/dtds/struts-2.5.dtd";>



3.     Troubleshooting 3.1      Module Dependencies

Be sure to re-open the project module window and re-set the struts facet
files. Make sure that only version 2.5.10.1 files are in the fileset.
3.2      Duplicate Entries

If necessary, close the project in your IDE and physically delete the
/target sub-directory to remove the old libraries.  Use the Maven
dependency viewer window to ensure that the old versions of the struts
libraries are no longer in the project.
Louis



On Thu, Jul 16, 2020 at 10:40 AM Manas <manasr.na...@gmail.com> wrote:

> Hi all,
> I have an application running in Struts 2.1.6. Can you please advise some
> migration strategy from Struts 2.1.6 to Struts 2.5?
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
> For additional commands, e-mail: dev-h...@struts.apache.org
>
>

Reply via email to