Tomcat 8.5 reagiert nach einigen Tagen nicht – Liferay 6.1

Tomcat 8.5 reagiert nach einigen Tagen nicht – Liferay 6.1

Ich verwende Liferay 6.1 mit Apache Tomcat 8.5, das mit Java 1.7.82 läuft. Nach ein paar Tagen funktioniert Tomcat einwandfrei! Liferay reagiert nicht und ich muss es neu starten, um dieses Problem zu beheben. In Thread-Dumps sehe ich, dass mehrere Threads laufen, aber einen ähnlichen Stack wie unten:

"https-jsse-nio-8443-exec-1523" daemon prio=10 tid=0x00007f109800c290 nid=0x7bb5 runnable [0x00007f10893ee000]
   java.lang.Thread.State: RUNNABLE
    at java.lang.Character.isHighSurrogate(Character.java:4531)
    at java.lang.Character.codePointAt(Character.java:4669)
    at java.util.regex.Pattern$CharProperty.match(Pattern.java:3693)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:4158)
    at java.util.regex.Pattern$Curly.match(Pattern.java:4132)
    at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556)
    at java.util.regex.Pattern$Start.match(Pattern.java:3408)
    at java.util.regex.Matcher.search(Matcher.java:1199)
    at java.util.regex.Matcher.find(Matcher.java:592)
    at org.tuckey.web.filters.urlrewrite.RuleBase.executeBase(RuleBase.java:126)
    at org.tuckey.web.filters.urlrewrite.Rule.execute(Rule.java:74)
    at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:135)
    at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:726)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:203)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:105)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:164)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:92)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:164)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:92)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:80)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:595)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    - locked <merged>(a org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

oder:

"https-jsse-nio-8443-exec-1524" daemon prio=10 tid=0x00007f118c249340 nid=0x7bca runnable [0x00007f107dc29000]
   java.lang.Thread.State: RUNNABLE
    at java.lang.Character.codePointAt(Character.java:4668)
    at java.util.regex.Pattern$CharProperty.match(Pattern.java:3693)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:4158)
    at java.util.regex.Pattern$Curly.match(Pattern.java:4132)
    at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556)
    at java.util.regex.Pattern$Start.match(Pattern.java:3408)
    at java.util.regex.Matcher.search(Matcher.java:1199)
    at java.util.regex.Matcher.find(Matcher.java:592)
    at org.tuckey.web.filters.urlrewrite.RuleBase.executeBase(RuleBase.java:126)
    at org.tuckey.web.filters.urlrewrite.Rule.execute(Rule.java:74)
    at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:135)
    at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:726)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:203)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:105)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:164)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:92)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:164)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:92)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:80)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:595)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    - locked <merged>(a org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

Ich denke, das ist ein Fehler in der Bibliothek org.tuckey.web.filters.urlrewrite. Ich habe dieses Problem untersucht, aber nichts Hilfreiches gefunden.

In Liferay 6.1-Codes habe ich diesen Filter gefunden:

 <filter>
        <filter-name>UnsyncPrintWriter Pool Filter</filter-name>
        <filter-class>com.liferay.portal.servlet.filters.unsyncprintwriterpool.UnsyncPrintWriterPoolFilter</filter-class>
    </filter>
    <filter>
        <filter-name>URL Rewrite Filter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
        <init-param>
            <param-name>logLevel</param-name>
            <param-value>ERROR</param-value>
        </init-param>
        <init-param>
            <param-name>statusEnabled</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>url-regex-ignore-pattern</param-name>
            <param-value>^/html/.+\.(css|gif|html|ico|jpg|js|png)(\?.*)?$</param-value>
        </init-param>
    </filter>

das scheint mit diesen Einstellungen zu funktionieren in \portal-web\docroot\WEB-INF\urlrewrite.xml:

<urlrewrite>
    <rule>
        <from>(.*)/blog/blogs/rss(.*)</from>
        <to type="permanent-redirect">$1/blog/-/blogs/rss$2</to>
    </rule>
    <rule>
        <from>(.*)/-/blogs/rss\?&amp;(.*)</from>
        <to type="permanent-redirect">$1/-/blogs/rss\?$2</to>
    </rule>
    <rule>
        <from>^/c/journal/view_article_content\?groupId=14&amp;articleId=155291$</from>
        <to type="permanent-redirect">/web/guest/home/-/journal/rss/14/news</to>
    </rule>
    <rule>
        <from>(.*)/tunnel-web(.*)</from>
        <to type="permanent-redirect">$1/api$2</to>
    </rule>
    <rule>
        <from>^/web/guest/community/forums/message_boards(.*)$</from>
        <to type="permanent-redirect">/web/guest/community/forums/-/message_boards$1</to>
    </rule>
    <rule>
        <from>^/web/guest/home/journal/rss/14/news$</from>
        <to type="permanent-redirect">/web/guest/home/-/journal/rss/14/news</to>
    </rule>
</urlrewrite>

und urlrewrite.jardie Version ist 2.6.0.

verwandte Informationen