我正在使用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
我将 Spring Boot从1.2.0 升级到1.5.2.
在升级之后,Tomcat 8.5在启动期间抛出FileNotFoundException.
下面是其中一个例外,它引发了超过10个类似的例外.
我不知道这些罐子的用途,换句话说,我没有<dependency>
在pom.xml中添加这些罐子.
INFO: Starting Servlet Engine: Apache Tomcat/8.5.11
Apr 06, 2017 3:53:57 PM org.apache.tomcat.util.scan.StandardJarScanner scan
WARNING: Failed to scan [file:/C:/Users/myname/.m2/repository/com/sun/xml/ws/jaxws-rt/2.1.7/jaxws-api.jar] from classloader hierarchy
java.io.FileNotFoundException: C:\Users\myname\.m2\repository\com\sun\xml\ws\jaxws-rt\2.1.7\jaxws-api.jar (The system cannot find the file specified)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:219)
at java.util.zip.ZipFile.<init>(ZipFile.java:149)
at java.util.jar.JarFile.<init>(JarFile.java:166)
at java.util.jar.JarFile.<init>(JarFile.java:130)
at org.apache.tomcat.util.scan.JarFileUrlJar.<init>(JarFileUrlJar.java:60)
at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:48)
at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:338)
at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:288)
at …
Run Code Online (Sandbox Code Playgroud) secretRequired="false"
添加到AJP
连接器的选项是server.xml
。但是,连接器不会以Protocol handler start failed
错误开始。它位于 Apache Server 2.4.25 版之后。
<Connector port="8009"
address="127.0.0.1" tomcatAuthentication="false" URIEncoding="UTF-8" enableLookups="false"
protocol="AJP/1.3" redirectPort="8663" connectionTimeout="600000" secretRequired="false" />
Run Code Online (Sandbox Code Playgroud)
错误:
Caused by: java.lang.IllegalArgumentException: The AJP Connector is configured with secretRequired="true" but the secret attribute is either null or "". This combination is not valid.
Run Code Online (Sandbox Code Playgroud)
谢谢
我已经创建了一个Spring Boot Web应用程序,并将相同的战争部署到了tomcat容器。应用程序mongoDB
使用异步连接进行连接。我正在mongodb-driver-async
为此使用图书馆。
在启动时,一切正常。但是,一旦负载增加,它就会在数据库连接中显示以下异常:
org.springframework.web.context.request.async.AsyncRequestTimeoutException: null
at org.springframework.web.context.request.async.TimeoutDeferredResultProcessingInterceptor.handleTimeout(TimeoutDeferredResultProcessingInterceptor.java:42)
at org.springframework.web.context.request.async.DeferredResultInterceptorChain.triggerAfterTimeout(DeferredResultInterceptorChain.java:75)
at org.springframework.web.context.request.async.WebAsyncManager$5.run(WebAsyncManager.java:392)
at org.springframework.web.context.request.async.StandardServletAsyncWebRequest.onTimeout(StandardServletAsyncWebRequest.java:143)
at org.apache.catalina.core.AsyncListenerWrapper.fireOnTimeout(AsyncListenerWrapper.java:44)
at org.apache.catalina.core.AsyncContextImpl.timeout(AsyncContextImpl.java:131)
at org.apache.catalina.connector.CoyoteAdapter.asyncDispatch(CoyoteAdapter.java:157)
Run Code Online (Sandbox Code Playgroud)
我正在使用以下版本的软件:
一旦我重新启动了tomcat服务,一切都会开始正常运行。
请帮助,这可能是此问题的根本原因。
PS:我正在使用DeferredResult
CompletableFuture创建异步REST API。
我也尝试spring.mvc.async.request-timeout
在应用程序中使用并asynTimeout
在tomcat中进行配置。但是仍然出现相同的错误。
安装过程中发生错误:没有这样的插件:cloudbees-folder(安装 Jenkins 时建议插件在 Windows 10 上出现错误)
我正在将 Java 应用程序迁移到在 Tomcat 8.5 上运行的 OpenJDK11。应用程序和tomcat启动没有任何问题。使用 JDK1.8 我没有任何异常或错误但是当使用另一个 Webservice 调用应用程序并使用 OpenJDK11 运行 tomcat 时,我收到以下错误:
02-Apr-2019 13:27:07.225 SEVERE [http-nio-0.0.0.0-9000-exec-8] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [CXFServlet] in context with path [/ApplicationName] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoClassDefFoundError: Could not initialize class org.apache.cxf.attachment.AttachmentUtil
at org.apache.cxf.interceptor.AttachmentInInterceptor.handleMessage(AttachmentInInterceptor.java:55)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:216)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:301)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:220)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:276)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at …
Run Code Online (Sandbox Code Playgroud) 我在 macOS Sierra 上使用 Homebrew 安装了 Apache Tomcat 8.5.9。当我启动 Tomcat 服务器时,catalina.out 未按预期在 /usr/local/Cellar/tomcat/8.5.9/libexec/logs 中创建。
我努力了:
echo "log file location $CATALINA_OUT"
在 /usr/local/Cellar/tomcat/8.5.9/bin/catalina 中,它被设置为 libexec/logs/catalina.out 的默认位置。进行此更改后,我可以看到 setenv.sh 正在正确修改此位置。我看到其他日志,例如:
Tomcat 服务器运行良好,因为我可以毫无问题地运行我的 WAR 文件并使用我的应用程序。正如我所期望的那样,其他日志都没有表明创建 catalina.out 时出现问题。
我在我的logging.properties中写了以下配置:
2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.maxDays=5
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
Run Code Online (Sandbox Code Playgroud)
日志完美写入日志文件,但 maxDays 属性不起作用。意味着我在更改日期最多 6 天后手动运行我的应用程序,但在达到 maxDays 后日志文件未删除。
https://tomcat.apache.org/tomcat-8.5-doc/logging.html上的 maxDays 属性说明:默认情况下,日志文件将永远保留在文件系统上。这可以使用 handlerName.maxDays 属性针对每个处理程序进行更改。如果该属性的指定值<=0,则日志文件将永远保留在文件系统上,否则它们将保留指定的最大天数。
您能帮忙验证一下应用的配置是否正确吗?或者我对 maxDays 属性用法的理解错误。
我正在尝试将带有 Web 套接字的 Spring Boot (2.0.5) Web 应用程序 (war) 部署到 Tomcat 8.5.37 服务器,它以前与 Tomcat 7 一起使用。我的 Web 套接字配置抛出异常并阻止应用程序启动. 我是否在 Spring 或 Tomcat 中缺少某种类型的配置?升级Tomcat后不再可用的东西?
我能够在本地运行(通过 eclipse 和 eclipse 的 Tomcat v8.5),但是当我尝试在我们的 qa 环境中部署到我们的 Tomcat 服务器时,我得到以下信息:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'createWebSocketContainer' defined in class path resource [com/soft/core/app/configuration/WebSocketConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Attribute 'javax.websocket.server.ServerContainer' not found in ServletContext
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1699)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:573)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:740)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869) …
Run Code Online (Sandbox Code Playgroud) 我在生产中使用带有Servlet的Tomcat 8.5.23(具有相关的Spring自动装配功能)
在生产中response.getWriter()
返回null
chain.doFilter(req, res);
在自定义过滤器中调用时也会发生这种情况:
public class MyFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
chain.doFilter(req, res);
}
public void init(FilterConfig filterConfig) {}
public void destroy() {}
}
Run Code Online (Sandbox Code Playgroud)
例外:
Request processing failed; nested exception is java.lang.IllegalStateException: getWriter() has already been called for this response] with root cause
java.lang.IllegalStateException: getWriter() has already been called for this response
at org.apache.catalina.connector.Response.getOutputStream(Response.java:591)
at org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:194)
at …
Run Code Online (Sandbox Code Playgroud) tomcat8.5 ×10
java ×6
tomcat ×4
spring ×3
spring-boot ×3
ajp ×1
connector ×1
cxf ×1
homebrew ×1
mongodb ×1
printwriter ×1
tomcat-juli ×1
tomcat8 ×1