java.io.FileNotFoundException: /login.action
at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:414)
at com.ibm.ws.wswebcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:113)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3276)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:811)
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1455)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:113)
...
Same war file works like a charm on JBoss and Tomcat container, but when it comes to WAS 6.1, it just cant find the struts action URLs.
Upon reviewing application code, configurations a zillion time we turned to the life saver - Google. Instantly we realized that we are not the only unlucky soles. Upon going through many posts we found that WAS 6.1 web container by default does not invoke any of the custom servlet filters defined in web.xml. This means that it does not invoke the Struts 2 filter and hence Struts application context was never initialized (Smart IBM guys). To change this behavior and enable invocation of custom filters, a custom property needs to be defined for the web container under WAS 6.1. Here is what you need to do...
- Open the WAS admin console.
- Select the application server where you are deploying the *ill-fated* Struts 2 application
- Select Web Container Settings
- Select Web Container
- Select Custom Properties
- Define new property com.ibm.ws.webcontainer.invokefilterscompatibility and set its value as true
- Restart application server
- Done !!!
With above change your Struts 2 web app should start working with WAS 6.1
Cheers !!!
- Jay

