Hello, i've found some strange issue with the url mapping with tomcat, i've tested this on tomcat8 and TomEE, it seems easily reproducable.

I have a Filter listening to requests matching "/uploads/*" (all files inside of my uploads directory"

On TomEE, this filter is fired for requests just as one would expect, however on tomcat8, it does *not*

Example:

/uploads/test.jpg as a file request, the filter fires on TomEE, but not tomcat, same code, only difference being the servlet mapping.

Does anyone know what could be causing this?

Relevant code attached below


   |@WebFilter(urlPatterns = "/uploads/*")||
   ||public class StatisticsFilter implements Filter {||
   |

||

   |    @Override
        public void doFilter(ServletRequest req, ServletResponse resp,
   FilterChain chain) throws IOException, ServletException {
            chain.doFilter(req, resp);
            HttpServletRequest request = (HttpServletRequest) req;
            if (request.getRequestURI() != null) {
                System.out.println("[STATS] Request was to " +
   request.getRequestURI());
                Database database = new Database();
                try {
                    ResultSet count = database.query("SELECT COUNT
   (`url`) as results FROM `requests` WHERE `url` = ?",
   request.getRequestURI());
                    boolean exists = count.getInt("results") > 0;
                    count.close();
                    if (!exists) {
                        database.executeUpdate("INSERT INTO 'requests'
   ('url', 'hits') VALUES (?, ?)", request.getRequestURI(), 0);
                    }
                    database.executeUpdate("UPDATE 'requests' SET
   'hits' = 'hits' + 1 WHERE 'url' = ?", request.getRequestURI());
                    database.closeConnection();
                    System.out.println(String.format("[STATS] [%s]
   Incrementing hits for %s", request.getRemoteAddr(),
   request.getRequestURI()));
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

        @Override
        public void init(FilterConfig filterConfig) throws
   ServletException {

        }

        @Override
        public void destroy() {

        }

   }|

Reply via email to