Podczas wdrażania aplikacji w środowisku wieloserwerowym Apache Tomcat 8 pojawia się poniżej śladu stosu. Często otrzymuję ten błąd i wygląda na to, że blokuje wątek tomcat:
INFO [http-nio-80-exec-4461] org.apache.coyote.http11.AbstractHttp11Processor.process Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens
at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:233)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1524)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1480)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Czy ktoś może mi wskazać, jak rozwiązać problem lub zawęzić taki wyjątek? Nie otrzymuję żadnego odniesienia do żadnego z plików źródłowych mojej aplikacji. Próbowałem przeszukać go w Google, a wśród podanych linków próbujesz uzyskać dostęp do adresu URL http przez https, co wydaje się mało prawdopodobne. Nie pojawia się ten błąd, gdy aplikacja działa na jednej instancji Tomcat 8. Dostaję to tylko w środowisku wieloserwerowym.
Udostępniam również metatagi, które umieściłem na każdej stronie, jeśli pomoże to zidentyfikować przyczynę.
<%
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);
response.setHeader("Pragma", "no-cache");
%>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
<meta name="viewport" content="width=device-width, initial-scale=1">
Na kilku stronach używam również tego, co w zasadzie jest takie samo jak powyżej:
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Cache-Control" content="private" />
<meta http-equiv="Cache-Control" content="no-store" />
<meta http-equiv="Pragma" content="no-cache" />
Nawet jeśli ktoś pomoże mi wskazać kierunek mojej próby rozwiązania problemu, będzie to przydatne, ponieważ obecnie nie mam pojęcia, gdzie zajrzeć.
Z góry dziękuję.