Java. Obtenir IOException après avoir essayé d'imprimer à la page JSP en utilisant le programmateur simple (Timer, TimerTask). Besoin d'aide

StackOverflow https://stackoverflow.com/questions/7357069

Question

Je suis en train de faire ordonnanceur simple à l'aide du minuteur et TimerTask CLASSIFICATION DES voir le code ci-dessous, à l'intérieur de la tâche que je veux juste imprimer « Bonjour, monde! » sur la page, mais il jette IOException: fermé Stream. S'il vous plaît aider!

JSP code page:

<% Test t = new Test(out);%>

Test de code de classe:

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);
    }
}

Code LpdbTask:

public class LpdbTask extends TimerTask{
    public JspWriter out;
    public void run(){
        try {
            out.println("Hello, World!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Erreur:

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)
Était-ce utile?

La solution

Le code Java pour une JSP toutes les pistes avant que l'utilisateur voit votre page du tout. Au moment où les feux de Timer, la JSP a déjà été envoyé au navigateur et rendu; le flux est en effet fermé parce qu'il est plus nécessaire. Ce n'est pas quelque chose qui est possible de faire.

Si vous voulez que les choses en fonction du temps pour arriver sur votre page dans le navigateur de l'utilisateur, alors vous devez le faire en Javascript, Flash ou Java Applet; tous ces parcours sur le bureau, par opposition à votre JSP, qui fonctionne sur le serveur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top