簡體   English   中英

Java的。 嘗試使用簡單的調度程序(Timer,TimerTask)在JSP頁面上打印后獲得IOException。 需要幫忙

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM