Ich habe Probleme mit der folgenden Situation:
In unserer aktuellen Webanwendung, die auf Tomcat 7.0.64 läuft, schaffen wir es, eine JSP-Seite über Java mit Hilfe einer eigenen Klasse CharArrayWriterResponse implementing HttpServletResponseWrapper
einzubinden.
Der Grund dafür ist, dass wir das resultierende HTML in JSON verpacken, das für eine AJAX-Antwort benötigt wird.
Abhängigkeiten:
%Vor%Codebeispiel:
%Vor%Hinweis: Ich habe die Ausnahmebehandlung in obigen Codebeispielen nicht berücksichtigt.
Ich muss diese Anwendung auf WebLogic (12.2.1) migrieren, aber diese Lösung funktioniert nicht mehr.
Was ich bisher herausgefunden habe:
In Tomcat nach dem Aufruf von request.getRequestDispatcher(jsp).include()
des obigen Beispiels getWriter()
meiner CharArrayWriterResponse
Klasse wird aufgerufen.
In WebLogic getWriter()
wird nicht mehr aufgerufen und das ist der Grund, warum es nicht mehr funktioniert.
Nach einiger Fehlersuche habe ich herausgefunden, dass in WebLogic anstelle von getWriter()
nur getOutputStream()
aufgerufen wird, wenn ich sie überschreibe.
getWriter()
wird nicht einmal in Weblogic aufgerufen, daher müssen Unterschiede in der zugrunde liegenden Implementierung von Tomcat und WebLogic bestehen.
Problem ist, dass ich mit getOutputStream()
keine Möglichkeit sehe, die Antwort des Aufrufs include()
in einem separaten Stream oder etwas anderem zu erhalten und in String zu konvertieren, um den endgültigen JSON mit dem HTML zu erstellen.
Hat jemand dieses Problem bereits gelöst und kann eine funktionierende Lösung für die programmatische Einbindung einer JSP in Kombination mit WebLogic bereitstellen?
Weiß jemand eine andere Lösung, um mein Ziel zu erreichen?
Danke für Anregungen.
Siehe Arbeitsbeispiel hier
Ein Unterschied, den ich zwischen Tomcat und der neuen Weblogic-Lösung herausgefunden habe:
Mit letzterem ist es nicht mehr möglich, JSPFs direkt mit Tomcat getWriter()
zu integrieren.
Die Lösung umschließt die JSPF in einer JSP-Datei.
Ich habe das getan:
%Vor% Ich habe WriterOutputStream
von apache commons-io verwendet, also musste ich in meine pom.xml aufnehmen:
Ich weiß nicht, was in Ihrer jsp-Datei ist, aber ich habe es mit einer einfachen getestet und ich glaube, es hat funktioniert. Meine JSP-Datei:
%Vor%Ausgabe (beim Zugriff auf das Servlet in einem Browser):
%Vor%Tags und Links java jsp tomcat7 weblogic weblogic12c