Klo*_*ker 5 grails spring tomcat8 spring-websocket grails3
===更新===(见下面的原帖)
虽然由zyro发起的错误修复带来了一些改进,但是错误仍然没有完全消失.它仍然看起来像这样:
31-Jan-2018 19:30:53.529 INFO [MessageBroker-3] org.apache.coyote.AbstractProcessor.setErrorState An error occurred in processing while o
n a non-container thread. The connection will be closed immediately
java.io.IOException: APR error: -32
at org.apache.coyote.http11.InternalAprOutputBuffer.writeToSocket(InternalAprOutputBuffer.java:291)
at org.apache.coyote.http11.InternalAprOutputBuffer.writeToSocket(InternalAprOutputBuffer.java:244)
at org.apache.coyote.http11.InternalAprOutputBuffer.flushBuffer(InternalAprOutputBuffer.java:213)
at org.apache.coyote.http11.AbstractOutputBuffer.flush(AbstractOutputBuffer.java:305)
at org.apache.coyote.http11.AbstractHttp11Processor.action(AbstractHttp11Processor.java:765)
at org.apache.coyote.Response.action(Response.java:177)
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:349)
at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:317)
at org.apache.catalina.connector.Response.flushBuffer(Response.java:510)
at org.apache.catalina.connector.ResponseFacade.flushBuffer(ResponseFacade.java:318)
at javax.servlet.ServletResponseWrapper.flushBuffer(ServletResponseWrapper.java:176)
at org.springframework.boot.web.support.ErrorPageFilter$ErrorWrapperResponse.flushBuffer(ErrorPageFilter.java:318)
at javax.servlet.ServletResponseWrapper.flushBuffer(ServletResponseWrapper.java:176)
at javax.servlet.ServletResponseWrapper.flushBuffer(ServletResponseWrapper.java:176)
at javax.servlet.ServletResponseWrapper.flushBuffer(ServletResponseWrapper.java:176)
at org.springframework.security.web.util.OnCommittedResponseWrapper.flushBuffer(OnCommittedResponseWrapper.java:159)
at org.springframework.http.server.ServletServerHttpResponse.flush(ServletServerHttpResponse.java:96)
at org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession.writeFrameInternal(AbstractHttpSockJsSession
.java:350)
at org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession.writeFrame(AbstractSockJsSession.java:318)
at org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession.sendHeartbeat(AbstractSockJsSession.java:251)
at org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession$HeartbeatTask.run(AbstractSockJsSession.java:455
)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
所以实际上只有错误的第二部分消失了......
===原始帖子===
我在Tomcat 8.0.28 catalina.out日志中找到了很多错误.我想这是由我使用的websocket插件引起的.我在服务类中执行了如下的实现:
def publishNewChart(def productId) {
def linechart = chartService.getLinechart(Product.load(productId));
brokerMessagingTemplate.convertAndSend("/topic/trade_chart/" + productId, linechart);
}
Run Code Online (Sandbox Code Playgroud)
在客户端下面:
$(function() {
var socket = new SockJS("${createLink(uri: '/stomp')}");
var client = Stomp.over(socket);
client.connect({}, function() {
client.subscribe("/topic/trade_chart/${product?.id}", function(message) {
var messageJson = $.parseJSON(message.body);
refreshPriceChart($.parseJSON(messageJson.data));
brushed();
});
});
});
Run Code Online (Sandbox Code Playgroud)
有没有人知道错误来自哪里以及如何处理错误?
提前记录日志!
02-Mar-2017 13:15:33.349 INFO [MessageBroker-4] org.apache.coyote.AbstractProcessor.setErrorState处理非容器线程上的错误时发生错误.连接将被立即关闭java.io.IOException的:APR错误:-32在org.apache.coyote.http11.InternalAprOutputBuffer.writeToSocket(InternalAprOutputBuffer.java:291)在org.apache.coyote.http11.InternalAprOutputBuffer.writeToSocket(InternalAprOutputBuffer的.java:244)在org.apache.coyote.http11.InternalAprOutputBuffer.flushBuffer(InternalAprOutputBuffer.java:213)在org.apache.coyote.http11.AbstractOutputBuffer.flush(AbstractOutputBuffer.java:305)在org.apache.coyote.位于org.apache.coyote.Response.action(Response.java:177)的http11.AbstractHttp11Processor.action(AbstractHttp11Processor.java:765)org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:349)atg .apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:317)在org.apache.catalina.connector.Response.flushBuffer(Response.java:510)在org.apache.catalina.connector.ResponseFacade.flushBuffer(ResponseFacade .java:318)在javax.servlet.ServletResponseWrapper.flushBuffer(ServletResponseWrapper.java):176)atg.springframework.boot.web.support.ErrorPageFilter $ ErrorWrapperResponse.flushBuffer(ErrorPageFilter.java:311)at javax.servlet.ServletResponseWrapper.flushBuffer(ServletResponseWrapper.java:176)at javax.servlet.ServletResponseWrapper.flushBuffer( ServletResponseWrapper.java:176)位于org.springframework.http.server的org.springframework.security.web.util.OnCommittedResponseWrapper.flushBuffer(OnCommittedResponseWrapper.java:158)的javax.servlet.ServletResponseWrapper.flushBuffer(ServletResponseWrapper.java:176) .ServletServerHttpResponse.flush(ServletServerHttpResponse.java:96)位于org.springframework.web.socket.sockjs.transport的org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession.writeFrameInternal(AbstractHttpSockJsSes sion.java:350).在org.sprin的org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession.sendHeartbeat(AbstractSockJsSession.java:255)的session.AbstractSockJsSession.writeFrame(AbstractSockJsSession.java:322)gframework.web.socket.sockjs.transport.session.AbstractSockJsSession $ HeartbeatTask.run(AbstractSockJsSession.java:451)在org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)在java.util.concurrent中.执行人$ RunnableAdapter.call(Executors.java:511)在java.util.concurrent.FutureTask.run(FutureTask.java:266)在java.util.concurrent.ScheduledThreadPoolExecutor中$ ScheduledFutureTask.access $ 201(ScheduledThreadPoolExecutor.java:180)在java.util.concurrent.ScheduledThreadPoolExecutor中的$ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(的ThreadPoolExecutor. java:617)at java.lang.Thread.run(Thread.java:745)
错误org.springframework.scheduling.support.TaskUtils $ LoggingErrorHandler - 计划任务中发生意外错误.org.springframework.web.socket.sockjs.SockJsTransportFailureException:无法写入SockJsFrame content ='h'; 嵌套异常是o rg.apache.catalina.connector.ClientAbortException:java.io.IOException:APR错误:-32 at org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession.writeFrame(AbstractSockJsSession.java:339)在org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession.sendHeartbeat(AbstractSockJsSession.java:255)在org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession $ HeartbeatTask.run(AbstractSockJsSession.java: 451)atg.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask.run (FutureTask.java:266)在java.util.concurrent.ScheduledThreadPoolExecutor中$ $ ScheduledFutureTask.access 201(ScheduledThreadPoolExecutor.java:180)在java.util.concurrent.ScheduledThreadPoolExecutor中$ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)在java.util中.concu rrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)引起:org .apache.catalina.connector.ClientAbortException:java.io.IOException:APR错误:-32位于org.apache.catalina.connector.OutputBuffer的org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:353). flush(OutputBuffer.java:317)org.apache.catalina.connector.Response.flushBuffer(Response.java:510)atg.apache.catalina.connector.ResponseFacade.flushBuffer(ResponseFacade.java:318)at javax.servlet .ServletResponseWrapper.flushBuffer(ServletResponseWrapper.java:176)atg.springframework.boot.web.support.ErrorPageFilter $ ErrorWrapperResponse.flushBuffer(ErrorPageFilter.java:311)at javax.servlet.ServletResponseWrapper.flushBuffer(ServletResponseWrapper.java:176)at at javax.servlet.ServletResponse上的javax.servlet.ServletResponseWrapper.flushBuffer(ServletResponseWrapper.java:176)位于org.springframework.http.server.ServletServerHttpResponse.flush(ServletServerHttpResponse.java:96)的org.springframework.security.web.util.OnCommittedResponseWrapper.flushBuffer(OnCommittedResponseWrapper.java:158)中的Wrapper.flushBuffer(ServletResponseWrapper.java:176) org.springframework.web.socket.sockjs.transport.session.AbstractHttpSockJsSession.writeFrameInternal(AbstractHttpSockJsSes sion.java:350)at org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession.writeFrame(AbstractSockJsSession.java:322) )...省略了10个常见帧引起:java.io.IOException:APR错误:org.apache.coyote.http11.InternalAprOutputBuffer.writeToSocket(InternalAprOutputBuffer.java:291)中的-32位于org.apache.coyote.http11.在org.apache.coyote.http11.InternalAprOutputBuffer.flushBuffer(InternalAprOutputBuffer.java:213)的org.apache.coyote.http11.AbstractOutputBuffer.flush(AbstractOutputBuffer.java:305)处的InternalAprOutputBuffer.writeToSocket(InternalAprOutputBuffer.java:244)org.apache.coyote.http11.AbstractHttp11Processor.action(AbstractHttp11Processor.java:765)org.apache.coyote.Response.action(Response.java:177)org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer. java:349)...省略了22个常用帧
| 归档时间: |
|
| 查看次数: |
378 次 |
| 最近记录: |