I'm developing a web app, which utilizes struts2, shiro (for authorization), and openAM (for authentication/SSO). We have several struts2 apps, which use openAM without shiro. We have a couple of struts2 apps, which use shiro without openAM. I'm attempting to combine them all together.
As I've been developing the application, I've gotten struts2 and shiro set up and working together. We've stubbed in a development filter for supplying the values generally passed into the request (uid and displayName), which we put into the application's web.xml. When I attempted to move the application up onto the server, where it would be openAM protected, we started to see weird things beginning to happen. (The development filter is removed, when it's pushed to the test server.) The first jsp page you hit on coming into the application stopped having all of its values put into the page. Further, when you look at the URL, it's changed from http://server/app/index.action to http://server/app/jsp/home.jsp. At first, I thought perhaps it was something screwy we had done with the interceptors, even though it worked in standalone mode, and the interceptors worked basically unchanged in the two other scenarios. When I looked into it though, all of the interceptors were properly firing correctly and the values were coming in from openAM as expected. I even ripped out all of the interceptor code we had added and shoved it into the action using the struts-default stack, and figured out that it doesn't appear to be an issue with the interceptor stack. After downloading the source for struts, I've traced the start of the differences down to what happens inside org.apache.struts2.dispatcher.ServletDispatcherResult:157 (dispatcher.forward(request, response); ). In the one running on my local machine, I can see it gathering values from the action inside the debug statements and by putting break points into the getter methods. In the one running remotely, the call returns without any that stuff getting called. As I traced it all the way to completion (as much as I could at least) in the version running on the server, I can see it pass out of the struts filters, the shiro filter, and the openAM Agent Filter (which is in the tomcat server's web.xml) down into the tomcat internals before I suddenly see all of the messages that I was seeing in the local version occurring inside the dispatcher.forward call. (the I18nInterceptor debug messages are a good place to use for comparison of the two.) 2012-01-11 16:29:09,283 DEBUG com.opensymphony.xwork2.interceptor.I18nInterceptor.debug:68 - after Locale=en_US 2012-01-11 16:29:09,283 DEBUG com.opensymphony.xwork2.interceptor.I18nInterceptor.debug:68 - intercept } It seems like all of the code to initialize the values for getting shoved into the jsp page aren't executing until a point at which it seems like they would all be out of scope, but I haven't figured out either what I'm doing wrong or how to resolve the issue. Does anyone have any ideas on what I've done wrong, how I might be able to resolve this, or ideas for where to look next? Log files set to DEBUG mode: http://people.ku.edu/~dyelar/local_instance.log (The working version without OpenAM running locally with the development filter.) http://people.ku.edu/~dyelar/remote_instance.log (The non-working version with OpenAM running off the protected server.) Thanks for any help in advance, Matthew Copeland University of Kansas - IT matt...@ku.edu