Newsgroup: it.comp.java
Titolo: [servlet]L'esecuzione si blocca ma in realtà ha funzionato tutto

Ho questa servlet:
package Servlet;
import java.io.*;
import java.sql.*;
import java.net.*;
import java.text.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Gestione extends HttpServlet {
    MyConnection m = new MyConnection();
    protected void processRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException,
ClassNotFoundException, SQLException {
        response.setContentType("text/xml;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String user =
request.getSession().getAttribute("s_usr").toString();
        int id_usr =
Integer.parseInt(request.getSession().getAttribute("s_idusr").toString());
        try {
            String act = request.getParameter("act");
       if(act.equals("nonso")) {
                int idq =
Integer.parseInt(request.getParameter("idq"));
                String idd = request.getParameter("idd");
                int idc =
Integer.parseInt(request.getParameter("idc"));
                int prog =
Integer.parseInt(request.getParameter("prog"));
                normalizzaQuestionario(id_usr, idq, prog, idc);
                out.println("<msg>finito</msg>");
            }
        } catch(){....}
all'internodi questa servlet c'è anche la dichiarazione di
normalizzaQuestionario():
protected void normalizzaQuestionario(int id_usr, int id_qst, int
prog, int id_crs) {
        try {
            // Leggo quante domande andranno aggiunte da web.xml
            int quanti = Integer.parseInt(getParam("quanti"));
            int esi;
            String sql0 = "SELECT id_dom, data FROM questionari WHERE
id_qst="+id_qst+" AND prog >="+prog;
            ResultSet rs = m.eseguiQuery(sql0);
            // creo la stringa SQL che andrà ad incrementare il prog
delle domande di un determinato 'quanto'
            int i = 0;
            String sql[] = new String[m.rowCount(rs)];
            while (rs.next()) {
                sql[i] = "UPDATE questionari SET prog = (prog + " +
quanti + ") WHERE id_qst=" + id_qst + " AND id_dom=" +
rs.getInt("id_dom") + ";";
                i++;
            }
            for (int k = 0; k <= i; k++) {
                esi = m.eseguiUpdate(sql[k]);
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
Normalizza questionario mi esegue delle operazioni sul Database,
l'ultimo whille e l'ultimo for non sono riuscito a metterli insieme
altrimenti andava in errore e non eseguiva gli update.
così comè il programma funziona correttamente, ma nel processRequest,
dopo la chiamata a normalizzaQuestionario, si blocca, infatti non
stampa mai finito, anche se ha correttamente eseguito le operazioni
SQL. Ovviamente ho provato a mettere la stringa finito prima della
chiamata e tutto funziona correttamente, e il DB è cmq aggiornato.
Idee sul problema????

 Idee sul problema????
il PrintWriter č bufferizzato, devi chiamare flush() e (perchč no) 
close() per committare la response. altrimenti quando mandi i dati 
sull'output e non dai tempo al writer di inviarli ti restano in canna.
-- 
Fino all'anno scorso avevo un solo difetto. Ero presuntuoso.
http://softvalley.blogspot.com

 sull'output e non dai tempo al writer di inviarli ti restano in canna.
Dove andrebbe messo flush??? il close c'è già... ed è in un finally
alla fine della processRequst.

 alla fine della processRequst.
Prima del close.
Ciao,
Paolo