Hello tomcat-users,

i have written a filter for my webapplication that checks the called url for special patterns and sends an error 404 when matching the pattern. This works most of the time great. But every ca. 4000 requests, an exception occurs in the filter. I looked around with google & co., but found only errors of this type appearing every request - or not. A second filter works great.

I wonder if this could be a problem with threads?

Any help (direct or by giving a hint of how to debug this problem) would be appreciated.

Regards,
Christian Aschoff

A normal url is: http://www.retrobibliothek.de/retrobib/index.html (everything is fine) http://www.retrobibliothek.de/retrobib/index.jsp shows 404 not found (as it should) http://www.polonius.bibliothek.uni-ulm.de/retrobib/index.html shows 404 not found ([same host] - as it should)

The used tomcat is 5.5.12, Java is
java version "1.4.2_16"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_16-b05)
Java HotSpot(TM) Client VM (build 1.4.2_16-b05, mixed mode),
running on Linux (2.6.13-15.18-smp #1 SMP Tue Oct 2 17:36:20 UTC 2007 x86_64 x86_64 x86_64 GNU/Linux).

The filter-configuration is:

[...]
    <filter>
        <filter-name>SecurityFilter</filter-name>
        <filter-class>de.retrobib.filter.SecurityFilter</filter-class>
    </filter>
    <filter>
        <filter-name>URLFilter</filter-name>
        <filter-class>de.retrobib.filter.URLFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>URLFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>SecurityFilter</filter-name>
        <url-pattern>/secure/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>SecurityFilter</filter-name>
        <url-pattern>*.zipped</url-pattern>
    </filter-mapping>
[...]

The filter-code is:

[...]
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
    throws IOException, ServletException {
        doBeforeProcessing(request, response);

        HttpServletRequest req = (HttpServletRequest) request;

        try {
if (req.getRequestURL().toString().toLowerCase().indexOf (".jsp") != -1) { logger.warn("Direkter Aufruf von *.jsp, sende 404 [ip="+req.getRemoteAddr()+"; url="+req.getRequestURL()+", query="+req.getQueryString()+"]");
                ((HttpServletResponse) response).sendError(404);
} else if (req.getRequestURL().toString().toLowerCase ().indexOf("uni-ulm") != -1) { logger.info("uni-ulm in der URL, sende 404 [ip="+req.getRemoteAddr()+"; url="+req.getRequestURL()+", query="+req.getQueryString()+"]");
                ((HttpServletResponse) response).sendError(404);
            } else {
                chain.doFilter(request, response);
            }
        } catch(Throwable ex) {
logger.debug("[ip="+req.getRemoteAddr()+"; url="+req.getRequestURL()+", query="+req.getQueryString()+"]");
            logger.fatal("Exception im URLFilter!", ex);
            // Mail Error & Request...
String mailContent = "StackTrace: \n"+DebugUtil.getStackTrace(ex)+"\nRequest: \n"+DebugUtil.getRequestAsString(req);
            try {
new Mailer().send("Fehler in der retro-bib: "+ex.getMessage(), mailContent, MiscConstants.adminMail, null);
            } catch (Exception badEx) {
logger.fatal("Exception im URLFilter (eMailversand)!", ex);
            }
        }

        doAfterProcessing(request, response);
    }
[...]

Other methods are basically empty.

The exceptions occurs in the line 'chain.doFilter(request, response);', examples are:

StackTrace:
java.lang.IllegalStateException: Cannot create a session after the response has been committed at org.apache.catalina.connector.Request.doGetSession(Request.java: 2206)
        at org.apache.catalina.connector.Request.getSession(Request.java:2024)
at org.apache.catalina.connector.RequestFacade.getSession (RequestFacade.java:831) at org.apache.catalina.connector.RequestFacade.getSession (RequestFacade.java:842) at org.apache.struts.action.RequestProcessor.processLocale (RequestProcessor.java:621) at org.apache.struts.action.RequestProcessor.process (RequestProcessor.java:177) at org.apache.struts.action.ActionServlet.process(ActionServlet.java: 1196)
        at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:173)
*       at de.retrobib.filter.URLFilter.doFilter(URLFilter.java:100)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:868) at org.apache.coyote.http11.Http11BaseProtocol $Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket (PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt (LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run (ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)

Request:

---------------- Start Dump --------------------------------------
Information(s) about the request:

AuthType = null
CharacterEncoding = null
ContentType = null
ContextPath = /retrobib
Method = GET
PathInfo = null
PathTranslated = null
Protocol = HTTP/1.1
QueryString = oldid=1185368073558
RemoteAddr = 66.249.65.1
RemoteHost = 66.249.65.1
RemotePort = 36965
RemoteUser = null
RequestURI = /retrobib/seite.html
RequestURL = http://www.retrobibliothek.de/retrobib/seite.html
RequestedSessionId = null

No session for this request.

Parameter(s):
oldid = 1185368073558

Attribute(s):
org.apache.struts.action.MESSAGE = [EMAIL PROTECTED] org.apache.struts.action.MODULE = [EMAIL PROTECTED]

Header(s):
host = www.retrobibliothek.de
connection = Keep-alive
accept = */*
from = googlebot(at)googlebot.com
user-agent = Mozilla/5.0 (compatible; Googlebot/2.1; +http:// www.google.com/bot.html)
accept-encoding = gzip
---------------- Ende Dump ---------------------------------------

or

StackTrace:
java.lang.IllegalStateException: Cannot forward after response has been committed at org.apache.catalina.core.ApplicationDispatcher.doForward (ApplicationDispatcher.java:313) at org.apache.catalina.core.ApplicationDispatcher.forward (ApplicationDispatcher.java:301) at org.apache.struts.action.RequestProcessor.doForward (RequestProcessor.java:1085) at org.apache.struts.action.RequestProcessor.processForwardConfig (RequestProcessor.java:398) at org.apache.struts.action.RequestProcessor.process (RequestProcessor.java:241) at org.apache.struts.action.ActionServlet.process(ActionServlet.java: 1196)
        at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:173)
*       at de.retrobib.filter.URLFilter.doFilter(URLFilter.java:100)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:868) at org.apache.coyote.http11.Http11BaseProtocol $Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket (PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt (LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run (ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)

Request:

---------------- Start Dump --------------------------------------
Information(s) about the request:

AuthType = null
CharacterEncoding = UTF-8
ContentType = null
ContextPath = /retrobib
Method = GET
PathInfo = null
PathTranslated = null
Protocol = HTTP/1.1
QueryString = bandid=100156
RemoteAddr = 87.188.120.209
RemoteHost = 87.188.120.209
RemotePort = 4414
RemoteUser = null
RequestURI = /retrobib/stoebern.html
RequestURL = http://www.retrobibliothek.de/retrobib/stoebern.html
RequestedSessionId = B286AFDDE41B6E58B5349A2FFB93C4ED

Sessionvalue(s):
org.apache.struts.action.LOCALE = de_DE

Parameter(s):
bandid = 100156

Attribute(s):
org.apache.struts.action.MESSAGE = [EMAIL PROTECTED]
globalKorrektorMessages = []
korrektorCount = 189
org.apache.struts.action.mapping.instance = ActionConfig[path=/ stoebern,scope=session,type=de.retrobib.actions.StoebernAction,validate= true,cancellable=false
globalMessages = []
teileMitSeiten = [EMAIL PROTECTED]
band = de.retrobib.dbmodel.Band[id = 100156; oldid = 1043602798323; timestamp = 1191594863750; deleted = false; visible = true; sort = 0010; number = 2; name = 2. Band: Atlantis - Blatthornkäfer; publisher = ; author = ; issued = ; description = ]
author = Christian Aschoff
werk = de.retrobib.dbmodel.Werk[id = 100149; oldid = 1034149743511; timestamp = 1189669728066; deleted = false; sort = 000; name = Meyers Konversationslexikon; shortname = Meyers; publisher = Verlag des Bibliographischen Instituts, Leipzig und Wien; author = Autorenkollektiv; issued = Vierte Auflage, 1885-1892; description = ]
messages = []
org.apache.struts.action.MODULE = [EMAIL PROTECTED]

Header(s):
host = www.retrobibliothek.de
user-agent = Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv: 1.8.1.11) Gecko/20071127 Firefox/2.0.0.11 accept = text/xml,application/xml,application/xhtml+xml,text/ html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
accept-language = de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
accept-encoding = gzip,deflate
accept-charset = ISO-8859-1,utf-8;q=0.7,*;q=0.7
keep-alive = 300
connection = keep-alive
referer = http://www.retrobibliothek.de/retrobib/stoebern.html? werkid=100149 cookie = JSESSIONID=B286AFDDE41B6E58B5349A2FFB93C4ED; __utma=180525476.323824295.1196968319.1196968319.1196968319.1; __utmb=180525476; __utmc=180525476; __utmz=180525476.1196968319.1.1.utmccn=(direct)|utmcsr=(direct)| utmcmd=(none)
---------------- Ende Dump ---------------------------------------




---
Dipl. Ing. (FH) Christian Aschoff

Büro:
Universität Ulm
Kommunikations- und Informationszentrum
Abt. Informationssysteme
Raum O26/5403
Albert-Einstein-Allee 11
89081 Ulm

Tel. 0731 50-22432
Fax. 0731 50-22471
[EMAIL PROTECTED]

Privat:
Fabristr. 13
89075 Ulm
Deutschland/Old Europe

Tel. 0731 602 803 60
Fax. 0731 602 803 61
Mob. 0171 272 03 04
[EMAIL PROTECTED]

Helfen Sie mit: http://www.retrobibliothek.de





---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to