Mantis - Resin
Viewing Issue Advanced Details
2611 minor always 04-20-08 07:58 04-22-08 12:47
ferg  
ferg  
normal  
closed 3.1.5  
fixed  
none    
none 3.1.6  
0002611: url-regexp and mod_caucho 404
(rep by Charles Lyons)

I can't help you but to add weight to this, I have a similar and frequent
problem in 3.1.5 GPL which is an issue each time I restart the container.

I have a servlet mapped to the "root" of the Web server - i.e. it is
supposed to execute just like a welcome page for:

http://www.mydomain.ext/ [^]

I can't use the servlet-mapping of "/" since that's defined in Java EE as
the "default servlet" and will execute for *every* request to an otherwise
unmatched URL, which isn't what I want. I just want the servlet to handle
requests for the root.

The "obvious" thing in Resin is to add a <servlet-mapping> with a
url-regexp attribute:

<servlet-mapping url-regexp="^/?$" servlet-name="MyServlet" />

This worked for a while, until a restart. It then gave a 404 even after
several reloads, restarts and a full stop and start. So I changed it to
url-regexp="^/index.html$" which again worked, until another restart (weeks
later) - I also couldn't then revert back to "^/?$" as the pattern as that
still gave 404. Finally I'm left using "^/index.jsp$" as my pattern since
that is what's working since the last restart. So definitely something
weird going on with those index page mappings.

I am using Resin with mod_caucho for an Apache 2 front end. I imagine
mod_caucho might be causing the issues with patterns still giving 404s even
after a complete restart of Resin? I guess also mod_caucho may be the main
culprit in all this, though that's a (far from educated) guess.


Notes
(0002998)
ferg   
04-21-08 09:51   
<em>caucho-status would show the current mapping in mod_caucho. That
would be the place to look.</em>

At the moment I've got the entry "/^/?(index.html)?$" under the url-pattern
on /caucho-status. My regexp was "^/?(index.html)?$" so I'm not sure why
the extra / was inserted.

Resin is the server reporting the 404 (rather than Apache), so mod_caucho
is doing its job correctly, just Resin is refusing to serve those mappings
sometimes, with no errors in the logs.

<em>Since mod_caucho doesn't understand url-regexp, how are you telling
mod_caucho that your pages should be handled by Resin?</em>

Using:

<servlet-mapping url-pattern="*" servlet-name="plugin_match" />

I also set my default host to have servlet-name="plugin_ignore" so only
explicitly enabled web-apps are served by Resin (otherwise I was getting
domains being served by Resin rather than Apache and I didn't want to
enable mod_caucho for each domain in Apache as well as updating Resin
config).