I have a url of this format http://<machine>/<variable>/<warfilename>

Where no matter what <variable> is equal to, I would like to be able to
direct the to tomcat/webapps/<warfilename>.war servlet.  I have been trying
to do this with a valve on the engine hoping I could modify the request URL
before the tomcat engine decided which war  file would service the request.
Is this even possible?  I tried this with a generic filter and a forward but
that failed and tomcat said http://machine/<warfilename> resource does not
exist when using the above url.  If I use http://<machine>/<warfilename>, it
works fine and the resource exists when using a filter I deployed to
common/lib.

Below is the code I tried to use for that valve(since I could not get the
filter to work) in the engine to modify the request so that the url would be
http://<machine>/<warfilename> and I was planning on sticking <variable> in
as a request attribute or something so the war file could access it.  Any
ideas?

thanks,
dean

   public void invoke(Request req, Response resp) throws IOException,
ServletException {

       log.info("testing testingzzzzzzzzzzzzzzzzzzzzzzzzzt");
       System.out.println("req1="+req.getContextPath());
       System.out.println("req2="+req.getDecodedRequestURI());
       System.out.println("req3="+req.getPathInfo());
       System.out.println("req4="+req.getPathTranslated());
       System.out.println("req5="+req.getRequestURI());
       System.out.println("req6="+req.getRequestURL());
       System.out.println("req7="+req.getServletPath());

       modifyRequest(req);

       nextValve.invoke(req, resp);
   }

   private void modifyRequest(Request req) {
       String uri = req.getRequestURI();
       int first = uri.indexOf("/");
       int second = uri.lastIndexOf("/");

       if(second > 0) {
           String company = uri.substring(first+1);
           company = company.substring(0, second-1);

           System.out.println("company="+company);
           if("company".equals(company)) {
               uri = uri.substring(second);
               System.out.println("setting uri to="+uri);
               log.info("modifying uri="+uri);
               req.setRequestURI(uri);
               req.setServletPath(uri);
           }
       }
   }

Reply via email to