• 关于

    无连接网啥意思

    的搜索结果

回答

网络IO阻塞,HttpURLConnection 启动太多了.######差不多就是这个意思,呵呵######可能是你程序里面任何一个地方的锁死问题。建议在有可能长时间操作的地方使用线程,让http线程能及时释放###### 这个是代码实现,请大家帮看看有啥问题。谢谢了 package peacemap.coorshare.search; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.Reader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URL; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class test extends HttpServlet { public test() { super(); } public void destroy() { super.destroy(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String url = "http://localhost:8080/solr/select/?q=name%3A%E8%B4%B5%E5%B7%9E&version=2.2&start=0&rows=10&indent=on&wt=json"; response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); PrintWriter printWriter = response.getWriter(); String returnStr=getInfoFromService(url); System.out.println(returnStr); printWriter.write(returnStr); printWriter.close(); } private String getInfoFromService(String url) { String resultStr = ""; try { URL destURL = new URL(url); HttpURLConnection urlConn = (HttpURLConnection) destURL .openConnection(); urlConn.setRequestMethod("GET"); urlConn.setDoOutput(true); urlConn.setDoInput(true); urlConn.setUseCaches(false); InputStreamReader inStream = new InputStreamReader(urlConn .getInputStream(), "utf-8"); resultStr = getRequestContent(inStream); inStream.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (ProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return resultStr; } private String getRequestContent(Reader reader) throws IOException { StringBuffer sb = null; sb = new StringBuffer(); char[] data = new char[1024]; int i = reader.read(data); while (i != -1) { sb.append(data, 0, i); i = reader.read(data); } String sreq = sb.toString(); return sreq; } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } public void init() throws ServletException { } } inStream.close(); 流没关闭吧, 试一下把这个放在finally里面 ######这个。。。不是这个问题###### 这个连接没有手动释放掉吧 finally{ urlConn.close(); } 1.大量的并发,导致请求将tomcat的连接数占满。 每个并发请求线程 需要tomcat连接去访问其他资源String returnStr=getInfoFromService(url); 导致:每一个请求都在等待tomcat连接而挂起。 以上纯属猜测,并无依据。 ######嗯,就是这个原因啊######设置下请求超时时间,如果请求超时未处理会导致大量线程在等待 RequestConfig config = RequestConfig.custom().setConnectTimeout(6000).setSocketTimeout(6000).build(); httpPost.setConfig(config);######建议jstack看一下  ######第一个,请强制关闭流;第二个请关闭请求,在做http请求的时候,每次都要调用close,谢谢。

kun坤 2020-05-29 22:50:29 0 浏览量 回答数 0

问题

【精品问答】Java技术1000问(1)

问问小秘 2019-12-01 21:57:43 37578 浏览量 回答数 11
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站