[英]Java. Getting IOException after trying to print on JSP page using simple scheduler(Timer, TimerTask). Need help
我正在嘗試使用Timer和TimerTask類使簡單的調度程序見下面的代碼,在我只想打印“ Hello,World!”的任務中。 在頁面上,但它引發IOException:流已關閉。 請幫忙!
JSP頁面代碼:
<% Test t = new Test(out);%>
測試類代碼:
public class Test {
public Test(JspWriter out){
Timer timer = new Timer();
LpdbTask lTask = new LpdbTask();
lTask.out = out;
timer.scheduleAtFixedRate(lTask, 1000*5, 1000*60);
}
}
Lpdb任務代碼:
public class LpdbTask extends TimerTask{
public JspWriter out;
public void run(){
try {
out.println("Hello, World!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
錯誤:
java.io.IOException: Stream closed
at org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:204)
at org.apache.jasper.runtime.JspWriterImpl.write(JspWriterImpl.java:312)
at org.apache.jasper.runtime.JspWriterImpl.write(JspWriterImpl.java:342)
at org.apache.jasper.runtime.JspWriterImpl.print(JspWriterImpl.java:468)
at org.apache.jasper.runtime.JspWriterImpl.println(JspWriterImpl.java:576)
at scheduler.LpdbTask.run(LpdbTask.java:14)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
在用戶完全看不到您的頁面之前,JSP的Java代碼全部運行。 到Timer
觸發時,JSP已經發送到瀏覽器並呈現了; 該流確實已關閉,因為不再需要它。 這只是不可能的事情。
如果您希望時間相關的事件在用戶瀏覽器的頁面上發生,則必須使用Javascript,Flash或Java Applet進行; 所有這些都在桌面上運行,而不是在服務器上運行的JSP上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.