» »

Java - JBoss - Servlet - getOutputStream() has already been called for this response ???

Java - JBoss - Servlet - getOutputStream() has already been called for this response ???

bboyspin ::

A ma kdo kako resitev za tale problemcek:

getOutputStream() has already been called for this response

koda:

ByteArrayOutputStream baos = new ByteArrayOutputStream();

String appName = "aplikacija.zip";
String partyId = "";
String partyName = "";
String filename = "";

try {
partyId = (String) request.getParameter("partyid");
} catch(Exception e) {}


if((partyId != null) && !partyId.equals("")) {
ItemLocal party = ses.findItem(Integer.valueOf(partyId));
partyName = party.getItemName();

ImportZIP zip = new ImportZIP(appName);

zip.setOutputDir(r.getUploadPath());
zip.setWorkingDir(r.getDownloadPath());
zip.copyZIP(appName, appName);

zip.setWorkingDir(r.getUploadPath());
zip.writePartyData(partyId, partyName);
zip.addZip(appName, "partydata.txt");
}

try {
filename = r.getUploadPath() + "aplikacija.zip";
FileInputStream ins = new FileInputStream(filename);
int data;
byte[] buffer = new byte[4096];
while((data = ins.read(buffer)) !=-1) {
baos.write(buffer);
}
ins.close();

response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition","attachment; filename="+appName+";");
response.setContentLength(baos.size());
ServletOutputStream output = response.getOutputStream();
baos.writeTo(output);
baos.close();
output.close();
output.flush();
}
catch (Exception ex) {}

hvala za pomoc, jest sm ze obupal ;)

Spin

kopernik ::

Zamenjaj vrstni red vrstic:

output.close();
output.flush();

Ko stream enkrat zapreš, je konec muzike...

bboyspin ::

ni to problem :) To sem obrnu okol iz cistega obupa :)

Spin

kopernik ::

hmm, tak exception dobis, ce veckrat pises na response (torej veckrat klices getOutputStream()). Ampak iz tvoje kode to ni razvidno. Tako da nimam pojma, zakaj dobis to napako. A je to vse? vsa koda, ki ima zvezo z response-om?

bboyspin ::

ja to je vse...

Spin

kopernik ::

A lahko poveš, katera vrstica vrže exception? A dobiš exception že tukaj:

ServletOutputStream output = response.getOutputStream();

sli kasneje pri pisanju ?

bboyspin ::

Ok, sm nekak pogruntu :)

Problem pr teh servletih je to, da ti jav to napako vedno ko mu kaj ni vsec, in u bistvu potem sploh ne ves kaj je narobe... Pr men mu ni bil vsec nacin kako sem klical servlet, tako da mi zdej nekako dela...

Spin

bboyspin ::

ok mam ze nov problem :)

Ko poklicem servlet za download mi dela vse lepo, dobim datoteko, samo potem po downloadu mi pa crknejo vsi linki? samo tisti v glavnem frejmu se delajo... mam pa zgornji in desni frame (menija) ter enega glavnega kjer se izpisujejo zadeve ... (dobil sem ze narejeno aplikacijo, drugace jest ne uporabljam frejmov ;) )

Spin

kopernik ::

Žal boš moral bolj natančno razložiti. Kam kažejo tisti linki? Je njihov cilj odvisen od parametrov? Kakšen mini proxy vmes, ki forwardira naprej? itd...

Problemov je lahko več - od napačnega refresha strani do kakšnega problema pri cache-iranju na servlet containerju. Aja, ko smo že pri tem. Kateri servlet container uporabljaš v JBOSSu? Ker vem, da JBOSS podpira različne containerje - Tomcat, Resin, itd... Osebno imam največ izkušenj s Tomcatom.

Čeprav niti ni logično, da pred downloadom linki delajo, po njem pa ne ... Čudne probleme maš :))


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[JAVA] HTTPS client

Oddelek: Programiranje
173166 (1896) peterv6i
»

Jasper subreport

Oddelek: Programiranje
131626 (1375) nightrage
»

[java] Kako v memoriji pretvoriti String objekt v File objekt ? - neka metoda ga zaht

Oddelek: Programiranje
132249 (2249) infiniteLoop
»

[java] Runtime.exec()

Oddelek: Programiranje
111874 (1747) borchi
»

Kako pošiljanje datotek v JAVI.

Oddelek: Programiranje
141829 (1700) kopernik

Več podobnih tem