Tomcat 8.5 几天后没有响应 – Liferay 6.1

Tomcat 8.5 几天后没有响应 – Liferay 6.1

我正在使用 Liferay 6.1 和运行 Java 1.7.82 的 Apache Tomcat 8.5。几天后,Tomcat 运行正常!Liferay 没有响应,我必须重新启动它才能解决这个问题。在线程转储中,我看到几个线程正在运行,但具有类似下面的堆栈:

"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)

或者:

"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)

我认为这是 org.tuckey.web.filters.urlrewrite 库中的一个错误。 我研究过这个问题,但没有发现任何有用的信息。

在 Liferay 6.1 代码中我发现了这个过滤器:

 <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>

似乎可以使用以下设置\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>

版本urlrewrite.jar为2.6.0。

相关内容