ServletOutputStream nicht korrekt nach einbinden eines j_security_checks

DerSilv

Grünschnabel
Hallo,

ich habe ein Servlet erstellt, das mir ein Audiofile abspielen soll.
Der Pfad wird z.Z. noch über ein Parameter in der URL angegeben.
Also .../Servlet/?pfad=/bla/blub/test.wav

Code:
private void getAudio(String file, HttpServletResponse response){
    	File f;
    	FileInputStream fis;
    	byte[] buffer = null;
    	ServletOutputStream out = null;
    	
		try {
	    	f = new File(file);
			fis = new FileInputStream(f);
	        buffer = new byte[fis.available()];
	        fis.read(buffer);
	        fis.close();
	        
	    	response.setContentType("audio/x-wav");
	    	response.setContentLength(buffer.length);
	    	
	        // Flush byte array to servlet output stream.
	        out = response.getOutputStream();
	        out.write(buffer);
			out.flush();			
		} 
		catch (FileNotFoundException e) {
			e.printStackTrace();
		} 
		catch (IOException e) {
			e.printStackTrace();
		}
		catch (Exception e) {
			e.printStackTrace();
		}
}

Das ganze funkionierte auch einwandfrei bis ich die Form-Based Authentication eingebaut habe.
Die Authentication ansich funktioniert auch, nur höre ich das Audiofile nicht mehr.
Ich bekomme zwar dieses schwarze Hintergrundbild mit (no video) und als Titel test.wav(audio/x-wav Object) - so wie es sein sollte - nur ohne sound...

Woran könnte das liegen?

Meine Vermutung war, dass es an der Weiterleitung vom j_security_check liegen könnte und dem response-Objekt aber ich weiß nicht wie ich das prüfen kann.
Ich hoffe Ihr könnt mir helfen.

Danke und Gruß
Silvio
 
doPost() wird doppelt aufgerufen?!

mal abgsehen von dem problem mit dem security_check beschäftigt mich was anderes.

und zwar ruft er mir doPost() 2 mal auf, wenn ich die URL aufrufe.

also der gleiche code wie oben, einfach in ein servlet in doPost() gehauen und aufgerufen: ../GetAVFile?path=/tmp/www/video/&filename=small.wav

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

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException 
    {
    	Path = request.getParameter("path");
    	FileName = request.getParameter("filename");
    	
    	System.out.println(new SimpleDateFormat("HH:mm:ss").format(new Date()) + " - GetAVFile-Request:: "
    			+ Path + FileName);
    	
    	File f;
    	FileInputStream fis;
    	byte[] buffer = null;
    	ServletOutputStream out = null;
    	
		try {
			if(Path != null && FileName != null){
		    	f = new File(Path + FileName);
			fis = new FileInputStream(f);
		        buffer = new byte[fis.available()];
		        fis.read(buffer);
		        fis.close();
		        
		    	response.setContentType("audio/x-wav");
		    	response.setContentLength(buffer.length);
		    	
		        out = response.getOutputStream();
		        out.write(buffer);
			out.close();
			}
		} 
		catch (FileNotFoundException e) {
			e.printStackTrace();
		} 
		catch (IOException e) {
			e.printStackTrace();
		}
		catch (Exception e) {
			e.printStackTrace();
		}
    }

Die Ausgabe auf der Console ist folgende:

14:55:11 - GetAVFile-Request:: /tmp/www/video/small.wav
14:55:11 - GetAVFile-Request:: /tmp/www/video/small.wav

Wieso zum Teufel ruft er doPost 2 mal auf?

Danke und Gruß
Silvio
 
Zurück