org.apache.catalina.connector.ClientAbortException: java.io.IOException: 远程主机强迫关闭了一个现有的连接。
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:322)
at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:285)
at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:118)
at com.fasterxml.jackson.core.json.UTF8JsonGenerator.flush(UTF8JsonGenerator.java:1044)
at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:854)
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:286)
at org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:106)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:231)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:174)
at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:81)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:113)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
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 com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
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:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: 远程主机强迫关闭了一个现有的连接。
at sun.nio.ch.SocketDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134)
at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101)
at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157)
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1306)
at org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:731)
at org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:684)
at org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:674)
at org.apache.coyote.http11.Http11OutputBuffer$SocketOutputBuffer.flush(Http11OutputBuffer.java:646)
at org.apache.coyote.http11.filters.ChunkedOutputFilter.flush(ChunkedOutputFilter.java:169)
at org.apache.coyote.http11.Http11OutputBuffer.flush(Http11OutputBuffer.java:252)
at org.apache.coyote.http11.Http11Processor.flush(Http11Processor.java:1560)
at org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:399)
at org.apache.coyote.Response.action(Response.java:206)
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:318)
... 49 common frames omitted
做毕业设计实现打印的时候出了一个问题,求打什么看一看。
下面是后台代码service层 public OutboundOrder getOutOrderInfo(int id, int num, String pur, HttpServletRequest request){
//获得经办人
SysUser user = (SysUser) request.getSession().getAttribute("user"); SysProduct product = productMapper.selectByPrimaryKey(id);
product.setNumber(product.getNumber()-num);
String totalPrice =String.valueOf (((product.getUnitprice()).doubleValue())*num);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
OutboundOrder outboundOrder = OutboundOrder.builder().id(IDUtil.getShortUniqueId()).productId(id).productName(product.getName())
.unitPrice(product.getUnitprice().toString()).number(num).totalPrice(totalPrice).outboundOrderTime(df.format(new Date())).purchaser(pur)
.userId(user.getUserid()).userName(user.getUsername()).build(); //插入出库单表
SysOutHouse sysOutHouse = SysOutHouse.builder().orderid(IDUtil.getShortUniqueId()).goodsid(id).number(num).operatorid(user.getUserid()).place(pur).time(new Date())
.unitprice(product.getUnitprice()).totalprice(new BigDecimal(totalPrice)).build();
sysOutHouseMapper.insertSelective(sysOutHouse); //修改库存
productMapper.updateByPrimaryKeySelective(product); return outboundOrder;
}
controller层
@RequestMapping("getOrderInfo.json")
@ResponseBody
public JsonData getOrderInfo(@RequestParam("id") String id, @RequestParam("number") String number, @RequestParam("purchse")String purchse, HttpServletRequest request){
OutboundOrder outboundOrder = productService.getOutOrderInfo(Integer.parseInt(id),Integer.parseInt(number),purchse,request);
return JsonData.success(outboundOrder);
}下面是前端代码
function printit(){
if(confirm('确认打印吗?')){
$.ajax({
url:'/sys/product/getOrderInfo.json',
data:{
id:$('#productId').val(),
number:$('#num').val(),
purchse:$('#purchse').val()
},
success:function (result) {
document.getElementById('btnPr').style.display="none";//隐藏
$('#orderId').attr("value",result.data["id"]);
$('#productId').attr("value",result.data["productId"]);
$('#productName').attr("value",result.data["productName"]);
$('#productNumber').attr("value",result.data["number"]);
$('#unitPrice').attr("value",result.data["unitPrice"]);
$('#totalPrice').attr("value",result.data["totalPrice"]);
$('#outTime').attr("value",result.data["outboundOrderTime"]);
$('#pur').attr("value",result.data["purchaser"]);
$('#username').attr("value",result.data["userName"]);
document.getElementById("numberBtn").style.display="none";
document.getElementById('order').style.display="inline";
window.print();//打印
document.getElementById('btnPr').style.display="inline";//显示*/
},
fail: function () {
alert("系统错误")
}
});我注释掉service层的后面两条sql的时候,就不报错了,但是打了断点看了,sql语句没问题,数据库也插入了数据,所以sql正常运行了,报错是在返回的时候,返回的对象也没问题,因为两条sql对返回的对象没影响,而注释掉两条sql可以正常运行,我怀疑是,在服务器返回的时候,客户端已经关闭连接,所以报错,在网上看了一下说是设置tomact超时时间,但是没效果,求大神帮忙解决,感激不尽!!!
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:322)
at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:285)
at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:118)
at com.fasterxml.jackson.core.json.UTF8JsonGenerator.flush(UTF8JsonGenerator.java:1044)
at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:854)
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:286)
at org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:106)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:231)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:174)
at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:81)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:113)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
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 com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
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:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: 远程主机强迫关闭了一个现有的连接。
at sun.nio.ch.SocketDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134)
at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101)
at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157)
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1306)
at org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:731)
at org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:684)
at org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:674)
at org.apache.coyote.http11.Http11OutputBuffer$SocketOutputBuffer.flush(Http11OutputBuffer.java:646)
at org.apache.coyote.http11.filters.ChunkedOutputFilter.flush(ChunkedOutputFilter.java:169)
at org.apache.coyote.http11.Http11OutputBuffer.flush(Http11OutputBuffer.java:252)
at org.apache.coyote.http11.Http11Processor.flush(Http11Processor.java:1560)
at org.apache.coyote.AbstractProcessor.action(AbstractProcessor.java:399)
at org.apache.coyote.Response.action(Response.java:206)
at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:318)
... 49 common frames omitted
做毕业设计实现打印的时候出了一个问题,求打什么看一看。
下面是后台代码service层 public OutboundOrder getOutOrderInfo(int id, int num, String pur, HttpServletRequest request){
//获得经办人
SysUser user = (SysUser) request.getSession().getAttribute("user"); SysProduct product = productMapper.selectByPrimaryKey(id);
product.setNumber(product.getNumber()-num);
String totalPrice =String.valueOf (((product.getUnitprice()).doubleValue())*num);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
OutboundOrder outboundOrder = OutboundOrder.builder().id(IDUtil.getShortUniqueId()).productId(id).productName(product.getName())
.unitPrice(product.getUnitprice().toString()).number(num).totalPrice(totalPrice).outboundOrderTime(df.format(new Date())).purchaser(pur)
.userId(user.getUserid()).userName(user.getUsername()).build(); //插入出库单表
SysOutHouse sysOutHouse = SysOutHouse.builder().orderid(IDUtil.getShortUniqueId()).goodsid(id).number(num).operatorid(user.getUserid()).place(pur).time(new Date())
.unitprice(product.getUnitprice()).totalprice(new BigDecimal(totalPrice)).build();
sysOutHouseMapper.insertSelective(sysOutHouse); //修改库存
productMapper.updateByPrimaryKeySelective(product); return outboundOrder;
}
controller层
@RequestMapping("getOrderInfo.json")
@ResponseBody
public JsonData getOrderInfo(@RequestParam("id") String id, @RequestParam("number") String number, @RequestParam("purchse")String purchse, HttpServletRequest request){
OutboundOrder outboundOrder = productService.getOutOrderInfo(Integer.parseInt(id),Integer.parseInt(number),purchse,request);
return JsonData.success(outboundOrder);
}下面是前端代码
function printit(){
if(confirm('确认打印吗?')){
$.ajax({
url:'/sys/product/getOrderInfo.json',
data:{
id:$('#productId').val(),
number:$('#num').val(),
purchse:$('#purchse').val()
},
success:function (result) {
document.getElementById('btnPr').style.display="none";//隐藏
$('#orderId').attr("value",result.data["id"]);
$('#productId').attr("value",result.data["productId"]);
$('#productName').attr("value",result.data["productName"]);
$('#productNumber').attr("value",result.data["number"]);
$('#unitPrice').attr("value",result.data["unitPrice"]);
$('#totalPrice').attr("value",result.data["totalPrice"]);
$('#outTime').attr("value",result.data["outboundOrderTime"]);
$('#pur').attr("value",result.data["purchaser"]);
$('#username').attr("value",result.data["userName"]);
document.getElementById("numberBtn").style.display="none";
document.getElementById('order').style.display="inline";
window.print();//打印
document.getElementById('btnPr').style.display="inline";//显示*/
},
fail: function () {
alert("系统错误")
}
});我注释掉service层的后面两条sql的时候,就不报错了,但是打了断点看了,sql语句没问题,数据库也插入了数据,所以sql正常运行了,报错是在返回的时候,返回的对象也没问题,因为两条sql对返回的对象没影响,而注释掉两条sql可以正常运行,我怀疑是,在服务器返回的时候,客户端已经关闭连接,所以报错,在网上看了一下说是设置tomact超时时间,但是没效果,求大神帮忙解决,感激不尽!!!
function printit(){ if(confirm('确认打印吗?')){
$.ajax({
url:'/sys/product/getOrderInfo.json',
timeout:5000,
data:{
id:$('#productId').val(),
number:$('#num').val(),
purchse:$('#purchse').val()
},
success:function (result) {