Foros del Web » Programación para mayores de 30 ;) » Java »

Audio Servlet Interrumpido causa problemas

Estas en el tema de Audio Servlet Interrumpido causa problemas en el foro de Java en Foros del Web. Hola a todos! Tengo una página html con un link hacia un servlet que devuelve audio (clickeo el link y comienza a reproducirse un sonido) ...
  #1 (permalink)  
Antiguo 30/11/2009, 15:47
 
Fecha de Ingreso: julio-2009
Mensajes: 8
Antigüedad: 14 años, 9 meses
Puntos: 0
Pregunta Audio Servlet Interrumpido causa problemas

Hola a todos!
Tengo una página html con un link hacia un servlet que devuelve audio (clickeo el link y
comienza a reproducirse un sonido)
Si dejo que el sonido termine, todo sigue perfecto. Pero cuando interrumpo el audio que genera (por ejemplo, toco el botón "atrás" del navegador mientras lo está reproduciendo) entonces el link
ya no vuelve a funcionar. Es algo raro este problema, no? Bueno paso el código del servlet
(de paso, ayuda para los que quieren un servlet con audio)
Código:
public class NewServlet extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        ServletOutputStream sos = null;
        
        try
        {
           
           
            HttpSession session = request.getSession();

            IgcTextResult tr= ((IgcTextResult)session.getAttribute("text_result"));

            if(tr==null)
            {
                PrintWriter out = response.getWriter();
                response.setContentType("text/html");
                out.println("<p>Error en el sonido</p>");
                out.flush();
                return;
            }
            IGCService service = new IGCService();
            IGC servicePort = service.getIGCPort();
            IgcSoundResult ts = servicePort.text2Sound(tr);
            byte[] data = ts.getSoundBytes();
            System.out.println("tamaño sonido mandado: "+data.length);
            ByteArrayInputStream bin = new ByteArrayInputStream(data);

            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            AudioInputStream sound = null;
            sound = AudioSystem.getAudioInputStream
                    (new BufferedInputStream (bin));

            AudioSystem.write(sound, AudioFileFormat.Type.WAVE, baos);
            baos.flush();
            response.setContentType("audio/x-wav");
            response.setHeader("Cache-Control", "no-store");
            response.setHeader("Pragma", "no-cache");
            response.setDateHeader("Expires", 0);

            sos = response.getOutputStream();
            sos.write(baos.toByteArray());
            sos.flush();
            

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            if(sos!=null)sos.close();
        }
    }


    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

}
Se agradece cualquier hint
Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:06.