title: migration struts 2.1.8.1 -> 2.3.24
body: <p>We are facing the below mentioned problem during Struts 2 upgrade.</p>
  
  <blockquote>
    <p>"HTTP Status 404" error message.</p>
  </blockquote>
  
  <p>We have done the below steps to upgrade the struts from Struts <strong>2.1.8.1</strong> to Struts <strong>2.3.24</strong>.</p>
  
  <ol>
  <li><p>Replaced the JARS:</p>
  
  <ul>
  <li>struts2-core-2.3.24.jar</li>
  <li>struts2-dojo-plugin-2.3.24.jar</li>
  <li>struts2-json-plugin-2.3.24.jar</li>
  <li>xwork-core-2.3.24.jar</li>
  <li>ognl-3.0.11.jar</li>
  <li>log4j-1.2-api-2.4.jar</li>
  <li>log4j-api-2.4.jar</li>
  <li>freemarker-2.3.22.jar</li>
  <li>commons-fileupload-1.3.1.jar</li>
  <li>commons-digester-2.1.jar</li>
  <li>commons-io-2.4.jar</li>
  </ul></li>
  <li><p>Added JARS:</p>
  
  <ul>
  <li>asm-3.3.1.jar
  -asm-tree-3.3.jar</li>
  <li>asm-commons-3.3.jar</li>
  <li>commons-lang3-3.4.jar</li>
  <li>commons-collection-3.2.1.jar</li>
  <li>hamcrest-core-1.3.jar</li>
  <li>javassist-3.11.0.GA.jar</li>
  <li>junit-4.12.jarjunit-4.12.jar</li>
  <li>struts2-convention-plugin-2.3.24.jar</li>
  </ul></li>
  <li><p>Using <code>StrutsPrepareAndExecuteFilter</code> as filter in web.xml.<br></p></li>
  <li><p>Changed the DTD from struts 2.1 and 2.0 to struts 2.3.<br></p></li>
  <li><p>Changed the imports class which were wrong due to separation of commons-lang3 from xwork-core .<br></p></li>
  <li><p>write the </p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;constant name="struts.additional.excludedPatterns" value="^(action|method):.*"/&gt;
  
  &lt;constant name="struts.enable.DynamicMethodInvocation" value="true" /&gt;
  </code></pre>
  
  <p>in struts.xml.</p></li>
  <li><p>Build the Classes with ant build. and replace the build in our local Development. environment.<br></p></li>
  <li><p>Started the Apache Tomcat server(V7.0.54) .<br></p></li>
  </ol>
  
  <p>Server started successfully, but we are not able to open the application; Application context is not up, 404 error is produced on the web.<br></p>
  
  <p>Could you please guide us if we are doing some wrong steps and help us to diagnose the problem ?<br></p>
  
  <p>we have changed the log4j.properties file to log4j2.xml as below 
          </p>
  
  <pre class="lang-xml prettyprint-override"><code>    &lt;Configuration&gt;
        &lt;Appenders&gt;
          &lt;RollingFile name="syslog" fileName="/var/log/stor/gui/gui.log"&gt;
            &lt;PatternLayout&gt;
              &lt;pattern&gt;%d %p %m%n&lt;/pattern&gt;
          &lt;/PatternLayout&gt;
          &lt;Policies&gt;
            &lt;TimeBasedTriggeringPolicy /&gt;
            &lt;SizeBasedTriggeringPolicy size="16 MB"/&gt;
          &lt;/Policies&gt;
          &lt;DefaultRolloverStrategy max="1"/&gt;
        &lt;/RollingFile&gt;
      &lt;/Appenders&gt;
      &lt;Appenders&gt;
        &lt;RollingFile name="requestUrilog"    fileName="/var/log/stor/gui/requestUrilog.log"&gt;
          &lt;PatternLayout&gt;
            &lt;pattern&gt;%d %p %m%n&lt;/pattern&gt;
          &lt;/PatternLayout&gt;
          &lt;Policies&gt;
            &lt;TimeBasedTriggeringPolicy /&gt;
            &lt;SizeBasedTriggeringPolicy size="8 MB"/&gt;
          &lt;/Policies&gt;
          &lt;DefaultRolloverStrategy max="4"/&gt;
        &lt;/RollingFile&gt;
      &lt;/Appenders&gt;
      &lt;Appenders&gt;
        &lt;RollingFile name="userlog" fileName="/var/log/stor/gui/userlog.log"&gt;
          &lt;PatternLayout&gt;
            &lt;pattern&gt;%d %p %m%n&lt;/pattern&gt;
          &lt;/PatternLayout&gt;
          &lt;Policies&gt;
            &lt;TimeBasedTriggeringPolicy /&gt;
            &lt;SizeBasedTriggeringPolicy size="8 MB"/&gt;
          &lt;/Policies&gt;
          &lt;DefaultRolloverStrategy max="4"/&gt;
        &lt;/RollingFile&gt;
      &lt;/Appenders&gt;
      &lt;Loggers&gt;
        &lt;Logger name="com.sys" additivity="false" level="info"&gt;
          &lt;AppenderRef ref="syslog"/&gt;
        &lt;/Logger&gt;
        &lt;Logger name="com.requestUri" additivity="false" level="info"&gt;
          &lt;AppenderRef ref="requestUrilog"/&gt;
        &lt;/Logger&gt;
        &lt;Logger name="com.user" additivity="false" level="info"&gt;
          &lt;AppenderRef ref="userlog"/&gt;
        &lt;/Logger&gt;
        &lt;Root level="info"&gt;
          &lt;AppenderRef ref="syslog"/&gt;
        &lt;/Root&gt;
      &lt;/Loggers&gt;
    &lt;/Configuration&gt;
  </code></pre>
  
  <p>But we are still not able to get the log printed </p>
  
  <p>Our action is now being called but now the command line command are not running.</p>
  
  <p>we are not getting, What is the dependency of running the command line command with struts </p>
  
  <p>please guide us to know what we are doing wrong</p>