当我在多服务器Apache Tomcat 8环境中部署我的应用程序时,我正在低于堆栈跟踪.我经常收到此错误,似乎它阻止了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)
Run Code Online (Sandbox Code Playgroud)
任何人都可以指导我如何解决或缩小这种做法吗?我没有得到任何我的应用程序源文件的任何引用.我试图谷歌周围,并在其说的链接,你试图通过https访问http网址,这似乎不太可能.当应用程序在单个Tomcat 8实例上运行时,我没有收到此错误.我只在多服务器环境中得到它.
我也在分享我在每个页面上嵌入的元标记,如果这有助于确定原因.
<%
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, …
Run Code Online (Sandbox Code Playgroud) 我刚刚将Tomcat从版本7.0.52升级到8.0.14.
我得到了很多静态图像文件:
org.apache.catalina.webresources.Cache.getResource无法将[/base/1325/WA6144-150x112.jpg]上的资源添加到缓存中,因为在驱逐过期的缓存条目后可用空间不足 - 考虑增加最大大小缓存
我没有指定任何特定的资源设置,我没有得到这个7.0.52.
我已经在启动时发现了一个错误报告中提到的这种情况.对我来说,这不是在启动时发生,而是在请求资源时不断发生.
还有其他人有这个问题吗?
试图至少只是禁用缓存,但我找不到如何指定不使用缓存的示例.这些属性已经从Tomcat版本8中的上下文中消失了.尝试添加资源但无法正确配置.
<Resource name="file"
cachingAllowed="false"
className="org.apache.catalina.webresources.FileResourceSet"
/>
Run Code Online (Sandbox Code Playgroud)
谢谢.
是否tomcat7-maven-plugin
使用tomcat 8服务器和java 8?我找不到任何东西tomcat8-maven-plugin
.
我正在使用Tomcat 8.在一种情况下,我需要处理来自外部源的外部请求,其中请求具有由其分隔的参数|
.
请求看起来像这样:
http://localhost:8080/app/handleResponse?msg=name|id|
在这种情况下,我得到以下错误.
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:467)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:667)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
编辑1
它适用于Apache Tomcat 8.0.30但不适用于Tomcat 8.5
有谁知道支持HTTP/2.0的Tomcat的最低版本是什么?我一直在他们的网站上的任何地方寻找,我找不到任何有关这方面的细节.
我根据这个设置了tomcat 8 ,我有以下tomcat-users.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="notadmin" password="not_real_pass" roles="manager-gui"/>
<user username="cargo" password="not_real_pass" roles="manager-script"/>
<tomcat-users/>
Run Code Online (Sandbox Code Playgroud)
当我尝试访问管理器应用程序时,我被403拒绝,没有提示用户名和密码.
我在配置中错过了什么?
Edit1:添加了完整的xml文件.
我的项目目前正在Tomcat 7上运行.我应该升级到Tomcat 8吗?这样做的优点和缺点是什么?tomcat 8在性能,内存利用率方面更好吗?
在Tomcat 8中部署服务时遇到问题.出现以下错误:
引起:java.lang.NoSuchMethodError:javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String; 在org.apache.tomcat.websocket.server.WsServerContainer.(WsServerContainer.java:149)在org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131)在org.apache.tomcat.websocket. server.WsSci.onStartup(WsSci.java:47)在org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5244)在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ......还有10个
方法getVirtualServerName
是在Servlet 3.1中引入的,MANIFEST.MF
从我的servlet-api
jar中提取后我得到了以下细节:
Specification-Title: Java API for Servlets
Specification-Version: 3.1
Specification-Vendor: Sun Microsystems, Inc.
Implementation-Title: javax.servlet
Run Code Online (Sandbox Code Playgroud)
其中说它有3.1.那么这个错误还有其他原因吗?请帮忙
我有一个Tomcat应用程序,需要引用应用程序外部的一些属性文件.通常这些存储在特定地方的本地机器上C:\PROJECT_NAME\conf\
.
在Tomcat 7中,这可以通过放置一个context.xml
文件来实现,/META-INF/
其中使用了一个VirtualWebappLoader
实际上将此位置添加到应用程序类路径的文件,如下所示:
<Context>
<Loader className="org.apache.catalina.loader.VirtualWebappLoader"
virtualClasspath="/PROJECT_NAME/conf"
searchVirtualFirst="true" />
</Context>
Run Code Online (Sandbox Code Playgroud)
如何在Tomcat 8中实现同样的功能?
经过一些研究,我很惊讶我没有在Tomcat中找到任何有关HTTP/2支持的资源.更改日志8.0表示SPDY的实验支持,wiki将HTTP/2称为支持的规范(http://wiki.apache.org/tomcat/Specifications),但我没有找到任何教程.
你知道是否已经可以在Tomcat上启用HTTP/2了吗?如果答案是肯定的我怎么能这样做?