As subject: Our website uses a large number of servlets reference through
URLs of the form /servlets/<fully-qualified-class-name>. We got this to work
on Tomcat 3.1 by putting in a servlet-mapping tag in the webapp's WEB-INF
file thus:
<servlet-mapping>
<!--
Set up a mapping to allow any URL where the path starts "/servlets/" to
be invoked as a servlet.
This saves us having to give all our servlets aliases and rewriting all
the jphtml scripts to match!
-->
<servlet-name>
invoker
</servlet-name>
<url-pattern>
/servlets/*
</url-pattern>
</servlet-mapping>
However, this doesn't work in Tomcat 3.2 beta 7. Instead I have had to alter
the RequestInterceptor line for the invoker in $TOMCAT_HOME/conf/server.xml
thus, so I can get the site working today at least:
<RequestInterceptor
className="org.apache.tomcat.request.InvokerInterceptor"
debug="0" prefix="/servlets/" />
Furthermore, I *had* to take out the servlet-mapping tag in the web.xml file
as well or it still wouldn't work, which means I can't use the same web.xml
across both versions, which creates administration headaches. Also, this way,
there's no longer a request interceptor for /servlet/* which means, for
example, the URLs to the servlets in the "examples" webapp no longer work. In
other words, this configuration change is global to the servlet container,
and can break other web applications running on it. Also, I don't know if
it's guaranteed even to work on other servlet containers.
My question is:
What is the *right* thing to do here, for maximum compatibility? Is the use
of actual servlet class names in URLs now supposed to be deprecated and
not-to-be relied upon? Should we be using servlet aliases consistently now?
In which case we do after all need to go through all our HTML files and other
scripts changing URLs to use servlet aliases for all our servlets. Personally
I suspect this is the right way, and the end result would be a cleaner
webapp, but the person who tells our web designers to do the changes is not
going to be popular!
OR...
Is the current Tomcat 3.2 beta 7 behaviour wrong?
OR...
Is there a more definitive way of doing this servlet mapping? I thought the
servlet-mapping tag in WEB-INF/web.xml was unproblematic myself.
--
Rachel