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() {
}
}|