Servlet HttpClient 转发 SocketClose Exception

系统部署要求,APP要部在内网,外网必须通过一次Web代理转发进来.就用Servlet + HttpClient 代理;

在内网测试的时挺正常的;上生产经常发现下载8M以上的文件就会出现Socket Colse Exception;

跟踪了好几天才发现不超过60s时就能下载,已超过60s是就会出现Socket Close Exception,

Client 到时设置了connectionManager.getParams().setConnectionTimeout(60000);

但是又没设置Response 60s超时;

开始怀疑是不是防火墙导致的;试了试直接从Web下载用了3分钟也正常;

最后只能怀疑是HttpClient 60s超时的,没办法把HttpClient 用 UrlConnection 重写了,

竟然正常了.

时间: 2024-10-11 05:25:28

Servlet HttpClient 转发 SocketClose Exception的相关文章

Servlet中转发和重定向的路径问题

Servlet中有两种方式获得转发对象(RequestDispatcher):一种是通过HttpServletRequest的getRequestDispatcher()方法获得,一种是通过ServletContext的getRequestDispatcher()方法获得: 重定向的方法只有一种:HttpServletResponse的sendRedirect()方法. 这三个方法的参数都是一个URL形式的字符串,但在使用相对路径或绝对路径上有所区别. ★ HttpServletResponse

servlet请求转发到另一个servlet

servlet请求转发到另一个servlet,并传递数据 . 1.通过request.setAttribute("key",value)给request加信息. 2.通过request.getRequestDispather(目标servlet).forward(request,response) 传递制定servlet. 3.在另一个servlet中通过request.getAttribute("key")来获取附加信息的值.

web项目引用Java项目,连接报错error HTTP Status 500 - Servlet execution threw an exception

错误信息 项目背景: 一个web项目引用一个java Project,项目中添加了引用,但是打开页面访问,总报500错误.提示:servlet初始化错误. 环境:Eclipse luna JDK: 1.7 Tomcat: 8.0 HTTP Status 500 - Servlet execution threw an exception type Exception report message Servlet execution threw an exception description T

Servlet请求转发RequestDispatcher接口

在Servlet中,利用RequestDispatcher对象,可以将请求转发给另外一个Servlet或JSP页面,甚至是HTML页面,来处理对请求的响应. 一,RequestDispatcher接口方法简介 1,RequestDispatcher对象由Servlet容器来创建,封装一个由路径所标识的服务器资源. 2,RequestDispatcher接口中定义了二种方法用于请求转发: forward(ServletRequest,ServletResponse)方法: 将请求转发给服务器上另外

利用servlet做转发,实现js跨域解决同源问题

做前端开发,避免不了跨域这个问题,跨域具体什么概念,不赘述,博客里太多.简单说下,我们用js发请求,不管post还是get,如果发请求的对象和当前web页面不在同一域名下,浏览器的同源策略会限制发请求,也就是说,如果单独写个HTML,用js发远程请求,是发布出去的,浏览器会认为这是不安全的,js在这里能做的很有限. 网上看了很多文章,小弟愚钝,只用js一直没解决这个问题,jQuery的Ajax据说可以,但是测试后发现不行,也许是浏览器版本的原因.有种方法是jsonp,但是好像需要服务器支持,我对

Servlet & JSP - 转发与重定向的区别

本文转载自:http://blog.csdn.net/kobejayandy/article/details/13762043 转发 转发的原理,可以通过下图展示: 浏览器的请求发送给组件 1,组件 1 经过一些处理之后,将 request 和 response 对象 “传递” 给组件 2,由组件 2 继续处理,然后输出响应(当然,也可以继续向其他组件 “传递”),这个传递的过程称之为 “转发”.整个过程只涉及一次浏览器和服务器之间的 “请求-响应” ,转发过程中的组件共享同一个请求 (requ

servlet的转发与重定向

转发和重定向都能让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很大的区别. 1.转发:有两种方式获得转发对象(RequestDispatcher):一种是通过HttpServletRequest的getRequestDispatcher()方法获得,一种是通过ServletContext的getRequestDispatcher()方法获得: 以前的request范围中存放的变量不会失效,就像把两个页面拼到了一起. 例如: request.getRequestDispatche

HttpClient I/O exception (java.net.SocketException) caught when processing request: Connect

转自:http://luan.iteye.com/blog/1820054 I/O exception (java.net.SocketException) caught when processing request: Connect 查阅了HttpClient官方的异常说明文档(http://hc.apache.org/httpclient-3.x/exception-handling.html),可以看到以下一段话: In some circumstances, usually when

servlet请求转发、包含以及重定向

请求转发: 方式一: ServletContext对象.getRequestDispatcher(目标资源的URI).forward(request,response); 目标资源的URI "/servlet/GetParam" 必须以"/"开头,否则报错,此"/"就表示的是当前应用(绝对路径表示法) 方式二: request.getRequestDispatcher(目标资源的URI).forward(request,response); 目标