- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
编辑:所有这些代码在外部环境下运行良好(即在 DEA12 中它运行完美),但是当我部署它时它在 bufferedreader 处停止。
编辑二: 所以,问题肯定出在缓冲阅读器上。如果我将 URLS 更改为带有少量文本的内容(例如 https://www.google.com ),一切都会完美无缺。我必须使用的 URL 有很多文本(例如:http://www.otc.edu/GEN/schedule/all_classes_fall.txt)。有人知道解决这个问题的方法吗?
我的 serlvet 正在超时,通过我的日志我已经缩小了它发生的范围。 servlet 通过 URL 读取数据并解析它们,但是当它到达 bufferedreader 时超时(我在代码中的位置评论过,它就在切换之后):
private void loadAllClasses()
throws IOException
{
//Log beginning of load
logger.info("Started loading classes at " + new Date());
URLConnection connection = null;
LinkedList<ClassInfo> currentList = null;
final int NUMBEROFSEMESTERS = 3;
final String SPLITONTAB = "\\t";
final int STARTINDEX = 0;
for(int counter = STARTINDEX; counter < NUMBEROFSEMESTERS; counter++)
{
//Change local fields for whatever semester we are in, there will always only be three semesters
switch(counter)
{
//Build out the Fall classes
case 0:
currentList = null;
try{
connection = this.urlFall.openConnection();
logger.info("Opened up Fall URL at " + new Date());
}
catch (Exception ex)
{
logger.fatal("FATAL! COULD NOT OPEN GIVEN URL FOR FALL CLASSES!");
}
currentList = fallClassListings;
break;
//Build out the Spring classes
case 1:
currentList = null;
try{
connection = this.urlSpring.openConnection();
logger.info("Opened up Spring URL at " + new Date());
}
catch (Exception ex)
{
logger.fatal("FATAL! COULD NOT OPEN GIVEN URL FOR SPRING CLASSES!");
}
currentList = springClassListings;
break;
//Build out the Summer classes
case 2:
currentList = null;
try{
connection = this.urlSummer.openConnection();
logger.info("Opened up Summer URL at " + new Date());
}
catch (Exception ex)
{
logger.fatal("FATAL! COULD NOT OPEN GIVEN URL FOR SUMMER CLASSES!");
}
currentList = summerClassListings;
break;
}//end switch
//Opening a URL Successful
logger.info("Successfully opened URL, beginning parse at " + new Date());
//!!!!IT HAPPENS HERE AS THE LOG BELOW WILL NEVER BE REACHED!!!!
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
logger.info("Bufferedreader opened at " + new Date());
String line = reader.readLine();
//This is what is reading through and parsing all of the text from the URL
while(line != null)
{
//Log beginning of parse
logger.info("Parsing next text line of current URL at " + new Date());
//Keeps track of how big the array is
int index = Integer.parseInt(properties.getProperty("FIRSTINDEX"));
//Split data on tab character
String[] data = line.split(SPLITONTAB);
//Strip all the white space so everything doesn't turn out poorly formatted
for(int arrayCounter = Integer.parseInt(properties.getProperty("FIRSTINDEX")); arrayCounter < data.length; arrayCounter++)
{
data[arrayCounter] = data[arrayCounter].trim();
index++;
}
//ADD THE DATA TO THE ACTUAL CLASS INFO OBJECTS
if(index == Integer.parseInt(properties.getProperty("MAXSIZEARRAY")))//Size of array was 14, which has all of the class information
{
//TEST CONDITION TO FIND A LAB, if the name is empty this is a new class. If it isn't it is
//Supplementary data to the last class created.
if(!data[Integer.parseInt(properties.getProperty("NAME"))].isEmpty())//REGULAR CLASS IF TRUE
{
//Strip out empty space and make it say "N/A"
data = convertEmptySpace(data);
currentList.add(new ClassInfo(data));
logger.info("Added a class.");
}
else//THESE ARE LABS OR ADDITIONAL LECTURE TIMES, so add all the last information from the last class since it's the same.
{
ClassInfo classForLab = new ClassInfo(data);
//Lab details are already set from the array, so fill the empty data correctly
classForLab.setSectionName(currentList.get(currentList.size()- Integer.parseInt(properties.getProperty("SUBTRACTTOP"))).getSectionName());
classForLab.setSectionSynonym(currentList.get(currentList.size()- Integer.parseInt(properties.getProperty("SUBTRACTTOP"))).getSectionSynonym());
classForLab.setSectionCredits(properties.getProperty("ZERO_OUT_INFO"));
classForLab.setSectionTitle(currentList.get(currentList.size()- Integer.parseInt(properties.getProperty("SUBTRACTTOP"))).getSectionTitle());
classForLab.setSectionCapacity(currentList.get(currentList.size()- Integer.parseInt(properties.getProperty("SUBTRACTTOP"))).getSectionCapacity());
classForLab.setSectionAvailableSeats(properties.getProperty("ZERO_OUT_INFO"));
classForLab.setSectionInstructor(currentList.get(currentList.size()- Integer.parseInt(properties.getProperty("SUBTRACTTOP"))).getSectionInstructor());
classForLab.setSectionMysteryVariable(currentList.get(currentList.size()- Integer.parseInt(properties.getProperty("SUBTRACTTOP"))).getSectionMysteryVariable());
//After everything is set, add lab to the class listings
currentList.add(classForLab);
logger.info("Added a lab.");
}
}
//Log classes added
logger.info("Done parsing text at " + new Date());
//End of the current line.
line = reader.readLine();
}
//Close the reader
reader.close();
}//All semester are loaded, add them to the master list as well
logger.info("All classes were successfully retrieved via parsing at " + new Date());
allClassListings.addAll(fallClassListings);
allClassListings.addAll(springClassListings);
allClassListings.addAll(summerClassListings);
}
我的日志:
13:30:38,145 [TP-Processor18] INFO Properties file was loaded successfully.
13:30:38,146 [TP-Processor18] INFO URLs were successfully loaded at Thu Mar 07 13:30:38 CST 2013
13:30:38,146 [TP-Processor18] INFO Started loading classes at Thu Mar 07 13:30:38 CST 2013
13:30:38,146 [TP-Processor18] INFO Opened up Fall URL at Thu Mar 07 13:30:38 CST 2013
13:30:38,146 [TP-Processor18] INFO Successfully opened URL, beginning parse at Thu Mar 07 13:30:38 CST 2013
知道为什么会发生这种情况,或者我该如何进行故障排除?
最佳答案
URLConnetion 不会从该行之前的连接开始读取(流式数据),
BufferedReader reader = new BufferedReader(new
InputStreamReader(connection.getInputStream()));
connection.getInputStream()
将导致连接对象开始从 URL 读取数据。
您的服务器似乎无法访问该 URL 并且正在超时。
您可能想通过调用 connection.setTimeOut()
来更改超时时间
尝试从服务器对这些 URL 执行 PING,TRACE
以验证您可以访问这些 URL 并且没有防火墙阻止
来自 JavaDocs -
> openConnection()
> ---------------------------->
> The connection object is created by invoking the openConnection method on a URL.
>
> getInputStream()
> ---------------------------->
> Returns an input stream that reads from this open connection.
关于java - Servlet 到达 BufferedReader 会超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15280172/
wait() 和 wait(timeout) 之间有什么区别。无论如何 wait() 需要等待通知调用,但为什么我们有 wait(timeout)? 那么 sleep(timeout) 和 wait(
如何向以下脚本添加超时?我希望它将文本显示为“超时”。 var bustcachevar = 1 //bust potential caching of external pages after in
我正在使用 Firebase once() 方法来检索 React Native 移动应用中的值。问题是,如果手机离线,once() 永远不会返回。文档说 ref.off() 方法应该取消回调,但这似
我在一个表中有一个大型数据集(超过 200 万行,每行超过 100 列),存储在 cassandra 中,几个月前(也许是 2 个月?)我能够执行一个简单的命令来跟踪该表中的记录数量: SELECT
我使用 jquery 开发移动应用程序,下面是我的代码,当我向包含的页面添加 5 或 6 行时,一切正常。但如果我添加多行显示错误消息:Javascript 执行超时。 function succes
我正在使用一个 javascript 确认,它将在 15 分钟后重复调用。如果用户未选择确认框中的任何选项我会在等待 1 分钟后重定向他。如何实现这一目标?我的代码是这样的 var timeo
每次我在沙箱环境中运行这段代码时,我都会超时并最终崩溃。我已经通过多个 IDE 运行它,但仍然找不到任何语法错误。如果有人看到了我没有看到的东西,我将非常感谢您的意见。 //assign variab
更新联系人后我会显示一条消息,1500 毫秒后我会转到另一个页面。我是这样做的: onSubmit() { if (this.form.valid) {
从昨天开始,我拼命尝试使用最新版本的 PHPMailer 运行一个非常简单的电子邮件脚本。 最荒谬的是,同一个脚本在两台服务器上不起作用,但在另一台服务器上却起作用。 这是我的尝试(来自 PHPMai
我已阅读以下 2 篇文章并尝试实现相同的文章。 我的代码是这样的,超时发生在这里 HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
我正在尝试连接到 wsdl 服务, 但收到此错误: wsdl 错误:获取 http://api.didww.com/api/?wsdl - HTTP 错误: header 的套接字读取超时 本地没有问
我在使用 Ansible 的 CentOs7 实例上从 Artifactory 下载 jar 文件时遇到问题。这是我第一次在 Linux 实例上这样做。 我在每个 Windows 实例上都使用了 wi
在过去的两天里,我一直在寻找原因,我在互联网上和堆栈上尝试了很多解决方案。 我有一个带有 ubuntu 16.04 和 apache2 的专用 VM -> 服务器版本:Apache/2.4.18 (U
我正处于构建 PHP 应用程序的早期阶段,其中一部分涉及使用 file_get_contents()从远程服务器获取大文件并将它们传输给用户。例如,要获取的目标文件是 200 mB。 如果下载到服务器
我正在尝试连接到本地网络内的路由器。到目前为止,我已经使用了 TcpClient。 检查我的代码: public static void RouterConnect() {
我正在尝试构建一段代码来搜索使用 Mechanize 和 Ruby 超时的页面。我的测试台包括一个专门写入超时的页面,以及 3 个正常运行的页面。这是代码: urls = ['http://examp
我是 python 的新手,也是语义网查询领域的新手。我正在使用 SPARQLWrapper 库查询 dbpedia,我搜索了库文档但未能找到从 sparqlWrapper 触发到 dbpedia 的
我正在从 GenServer 中的句柄信息功能调用 elixir genserver 以添加电话号码获取表单客户端。但是一旦调用了handle_call,所有者进程就会崩溃[超时]。请帮忙。 全局创建
假设我的 WCF 服务中有以下执行链: ServiceMethod 调用并等待 Method1,然后调用并等待 Method2,后者调用并等待 Method3。最后 ServiceMethod 在返回
目前我正在开发一个从远程服务器发送和接收文件的应用程序。为了进行网络操作,我正在使用 QNetworkAccessManager。 要上传文件,我使用 QNetworkAccessManager::p
我是一名优秀的程序员,十分优秀!