Apparently reaching out for help brought positive karma, somehow. My solution, more of a finding, was one I tried but suddenly appears to work. Instead of redirecting from my LoginController to the main menu controller/jsp (e.g. using return "redirect:/secure/menu") I instead forward to the jsp directly. The URL does not change to reflect the '/ secure/main-menu' but the JSP loads. More than good enough for me. Any ideas on what possibly went wrong will be more than appreciated.
On Aug 25, 10:48 am, yuvalz <yzuker...@gmail.com> wrote: > I am using Spring MVC in my GAE application. > It appears to work very well in the classic form processing use case, > but the following scenario stumps me and would love to get ideas and > opinions on how to approach it: > > I set up my own user authentication system and created several users > that exist in the datastore. The application is able to read them > successfully, locally and on GAE. > > My views are stored in a 'standard' Spring file structure of /WEB-INF/ > views and with a resolver set up as > <bean > class="org.springframework.web.servlet.view.InternalResourceViewResolver"> > <property name="prefix" value="/WEB-INF/views/"/> > <property name="suffix" value=".jsp"/> > </bean> > > To ensure users are authenticated, I set up a Spring Interceptor (akin > to a Filter), which checks whether users have authenticated by looking > at the HTTP Session for their user id (typed Long). The interceptor is > applied on requests coming to any URL starting with /secure/**. It > appears to work successfully as well as it redirects requests that > have no id in their session back to the login page. This works on GAE > as well. > > I created a login view, bound to a controller, taking the user's email > and password. Based on logs, it appears to work as well. Where the > problem lies, is in the next step. After successfully authenticating, > I redirect users to the main menu of the application, and that's where > things break and I get a 404 error. All of this works fine in the > local SDK. Then you deploy to GAE and the login functionality > encounters issues. > > I tried all of the following to exactly the same result, a 404 error: > 1. Since the menu is a plain jsp requiring no controller, I user > <mvc:view-controller path="/secure/menu" view-name="/secure/menu"/> > where the jsp file is located at /WEB-INF/views/secure/menu.jsp > I receive a 404 error > 2. Created a @Controller for the main menu, mapped to "/secure/main- > menu". The controller virtually does nothing, except log it received > the request. It then forwards the request to /secure/menu - and still > a 404 error. > 3. I tried to have the @Controller redirect to /secure/menu - 404 > error. > > This called for a more extreme measure which ended up working: > To check whether the JSP is indeed around the WAR file, I tried > loading it using > > ServletContext ctx = req.getSession().getServletContext(); > ctx.getResourceAsStream("/WEB-INF/views/secure/menu.jsp"); > > The file loaded (avoiding full code), and if I output the text of the > file to the screen (using the @ResponseBody annotation) I shows up. So > in essence, the file is available, but for some reason Spring on GAE > is unable to find it. > > I am using the URL Rewrite filter (http://code.google.com/p/ > urlrewritefilter/) which appears to work successfully. I suspected > that the fact that following the initial login GAE uses > the ...;jsessionid=.... URL parameter and that causes the URL Rewrite > to fail, but my logs and tests show that my @Controller receives the > request. > > What stumps me is why is the JSP file not being found or loaded? Why > am I getting the same 404 error on GAE? > > As I said, it all works perfectly fine on my local SDK environment. > > Thanks for any hints or ideas. -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.