Forwarf funktioniert nicht mehr

Hallo

also nach meiner Frage mit dem Response (die habe ich selbst gelöst :wink: )
habe ich nun folgendes Problem.

Ich habe mir ein Beispiel aus dem Internet gesucht welches ein einfaches PDF schreibt und dann in den Response schreibt.

Das Funktioniert auch also ich bekomme das PDF angezeigt kann es speichern öffnen oder abbrechen .

Speicher ist es ab und schließe dann den Dialog steht bei mir im Webbrowser immer noch das die Anfrage in Bearbeitung ist obwohl er den ActionForward längst gemacht hat laut Konsole.

Er sollte also zur Startseite zurückkehren was er aber nicht macht sondern das Programm bleibt einfach hängen.

Das PDF erstelle ich wie folgt :
Document doc = new Document ( ) ;
HttpServletResponse res = getResponse();
res.setContentType(„application/pdf“);
res.setHeader(„Content-Disposition“,
" attachment; filename=„example.pdf“");

try
{ //?? 2. S c h r i t t : Wri ter er zeugen
//PdfWriter.getInstance( doc , new FileOutputStream( "HelloWorld.pdf " ) ) ;
PdfWriter.getInstance(doc,
res.getOutputStream());

// ?? 3. S c h r i t t : Dokument¨o f fnen
doc.open( ) ;

// ?? 4. S c h r i t t : I n h a l t ¨uhinzuf g en
Font font = FontFactory.getFont(FontFactory .HELVETICA_BOLD, 34 ) ;
Chunk c = new Chunk( „Hello World“ , font ) ;
doc.add( c ) ;
// ?? 5. S c h r i t t : Dokument s c h l i e s s e n
doc.close( ) ;
System.out.println("HelloWorld.pdf create ! " ) ;
}catch ( DocumentException e )
{ e.printStackTrace( ) ;

}catch( IOException e )
{ e.printStackTrace( ) ;

}

System.out.println(„Hier ist er vor dem Forward“);

return mapping.findForward(MAPPING_FORWARD);
}

Die letzte Ausgabe vor dem Forward wird in der Konsole auch noch angezeigt

Die Fehlerausgabe sieht wie folgt aus

java.lang.RuntimeException: close called!
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at de.bsdwest.basweb.webcore.filter.ByteArrayServletStream.close(ByteArrayServletStream.java:36)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at java.io.FilterOutputStream.close(FilterOutputStream.java:158)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at com.lowagie.text.pdf.OutputStreamCounter.close(Unknown Source)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at com.lowagie.text.DocWriter.close(Unknown Source)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at com.lowagie.text.pdf.PdfWriter.close(Unknown Source)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at com.lowagie.text.pdf.PdfDocument.close(Unknown Source)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at com.lowagie.text.Document.close(Unknown Source)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at de.bsdwest.basweb.basHLA.control.BasHLADruckenAction.executeSecure(BasHLADruckenAction.java:72)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at de.bsdwest.basweb.webcore.control.SecureAction.executeAction(SecureAction.java:109)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at de.bsdwest.basweb.webcore.control.BaseAction.execute(BaseAction.java:165)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313)
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:76)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at de.bsdwest.basweb.webcore.filter.PersistenceFilter.doFilter(PersistenceFilter.java:84)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:132)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:71)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at de.bsdwest.basweb.webcore.filter.DuplicateRequestFilter.filterRequest(DuplicateRequestFilter.java:168)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at de.bsdwest.basweb.webcore.filter.DuplicateRequestFilter.doFilter(DuplicateRequestFilter.java:93)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:132)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:71)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at de.bsdwest.basweb.webcore.filter.ErrorFilter.doFilter(ErrorFilter.java:44)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:132)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:71)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:1040)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:600)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:201)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:125)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:286)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:182)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:624)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:458)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:912)
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O HelloWorld.pdf create !
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O Hier ist er vor dem Forward
[04.09.08 13:55:39:517 CEST] 1bb1e1af BasHLADrucken I de.bsdwest.basweb.basHLA.control.BasHLADruckenAction Weiterleitung zu Module ‚null‘, Path ‚/webcore/menu.do?id=basHLA‘, Forward-Name ‚forward‘
[04.09.08 13:55:39:517 CEST] 1bb1e1af BasHLADrucken I de.bsdwest.basweb.basHLA.control.BasHLADruckenAction angemeldeter User: 1014 angemeldetes Institut: 401
[04.09.08 13:55:39:517 CEST] 1bb1e1af SystemOut O Hibernate: select this.PARDNR as PARDNR0_, this.PARGRP as PARGRP0_, this.PARNUM as PARNUM0_, this.PARFLG as PARFLG0_, this.PARDNRA as PARDNRA0_, this.PARDATV as PARDATV0_, this.PARDATB as PARDATB0_, this.PARKOM as PARKOM0_, this.PARTXT as PARTXT0_, this.PARWRT as PARWRT0_ from BASDTAS.PAR01P this where this.PARDNR=? and this.PARDNRA=? and this.PARGRP=? and this.PARNUM=? and this.PARFLG=?
[04.09.08 13:55:39:611 CEST] 1bb1e1af MenuAction I de.bsdwest.basweb.webcore.control.MenuAction Weiterleitung zu Module ‚null‘, Path ‚/webcore/submenuSelected.tiles‘, Forward-Name ‚null‘
[04.09.08 13:55:39:611 CEST] 1bb1e1af MenuAction I de.bsdwest.basweb.webcore.control.MenuAction angemeldeter User: 1014 angemeldetes Institut: 401
[04.09.08 13:55:39:611 CEST] 1bb1e1af HeadAction I de.bsdwest.basweb.webcore.control.HeadAction Weiterleitung zu Module ‚null‘, Path ‚/webcore/stdlayout/head.jsp‘, Forward-Name ‚forward‘
[04.09.08 13:55:39:611 CEST] 1bb1e1af HeadAction I de.bsdwest.basweb.webcore.control.HeadAction angemeldeter User: 1014 angemeldetes Institut: 401

wer kann helfen ?

Hi firestone,

obwohl er den ActionForward längst gemacht hat laut Konsole.

wer oder was ist ein ActionForward und was soll der machen?

Er sollte also zur Startseite zurückkehren was er aber nicht
macht sondern das Programm bleibt einfach hängen.

Wer ist „er“? Der Browser deines Clients zeigt die PDF-Seite an; der kann nicht zu einer anderen Seite wechseln (außer man sagt es ihm, indem man auf einen Link im PDF klickt oder die History benutzt etc.)
Und auf der Serverseite kannst du, nachdem du das PDF rausgestreamt hast, auch nicht mehr viel machen.

java.lang.RuntimeException: close called!
[04.09.08 13:55:39:470 CEST] 1bb1e1af SystemOut O at
de.bsdwest.basweb.webcore.filter.ByteArrayServletStream.close(ByteArrayServletStream.java:36)

Die benutzte Implementierung von ServletOutputStream scheint sich aus irgendeinem Grund am close() zu verschlucken (doc.close() schließt auch den Stream, auf den geschrieben wurde). Ich würde den Fehler dort suchen; scheint ja eine Eigenentwicklung zu sein (gehörst du zum Blutspendedienst?).

Gruß,

Andreas

Hallo

ich habe schon herausgefunden das er sich an dem Close verschluckt hat was ich schon behoben habe. Der ActionForward der ruft eine weitere Action auf die Wiederum soll ein neues Formular aufrufen.

Also der Benutzer klickt auf den Button bekommt die Möglichkeit das PDF abzuspeichern aber das Programm baut dann ein neues Formular auf . Und das scheint nicht zu gehen :/. Der Internet Explorer bleibt an der Stelle stehen an der das PDF erstellt wird. Die Konsolenausgabe zeigt aber aber das er richtig weiter macht mit der ausführung der Anweisungen :/.

wieso fragst du ob ich zum Blutspendedienst gehöre ?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Also der Benutzer klickt auf den Button bekommt die
Möglichkeit das PDF abzuspeichern aber das Programm baut dann
ein neues Formular auf . Und das scheint nicht zu gehen :/.

Das geht so prinzipiell nicht; der Response (für den Request, der durch den Button ausgelöst wurde) ist ja quasi schon „verbraucht“. Du könntest aber vorher auf zwei unterschiedliche Browser-Tabs/-Seiten/-Frames verzweigen: In einem wird das PDF geladen, im anderen geht’s mit deinem Formular/der Benutzerführung weiter. Aber so etwas dürfte nur mit Javascript oder Frames funktionieren.

wieso fragst du ob ich zum Blutspendedienst gehöre ?

Weil dieses Java-Paket so aussieht, als gehöre es zur Blutspende-Anwendungs-Software des DRK-Blutspendedienst Wests. :smile:

de.bsdwest.basweb.webcore.filter.ByteArrayServletStream

Gruß,

Andreas

Hmmmm das ist aber doof das das nicht geht *heul*. Dann muss ich mir was anderes überlegen .

Kennst du die Software vom Blutspendedienst ???

Kennst du die Software vom Blutspendedienst ???

Nein, aber Google kennt sie. :smile:

Andreas