मेरे पास GetFile नामक एक क्रिया है जो सीधे पीडीएफ खोलने के लिए फ़ाइल डाउनलोड बॉक्स खोलती है।struts2 - java.lang.IllegalStateException intermittently होता है जबकि कार्रवाई कॉल परिणाम पीडीएफ फ़ाइल डाउनलोड करने के लिए परिणाम स्ट्रीम
नीचे struts.xml कॉन्फ़िगरेशन और उसके लिए एक्शन क्लास है। मैं इसे प्राप्त करने के लिए परिणाम के रूप में परिणाम प्रकार का उपयोग कर रहा हूँ। मैं देख सकता हूं कि पीडीएफ डाउनलोड बॉक्स हर बार खुलता है और मैं फ़ाइल डाउनलोड करने में भी सक्षम हूं।
लेकिन मुझे लगता है कि कल रात कुछ अनुरोध थे जिन्होंने कार्रवाई को निकाल दिया था और इससे नीचे की त्रुटि उत्पन्न हुई है।
org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:570)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:452)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530)
at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:159)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:374)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:278)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at deshaw.irweb.web.interceptor.AuthInterceptor.intercept(AuthInterceptor.java:60)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:394)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:294)
at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:183)
at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:169)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:636)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:205)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:105)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:182)
at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:123)
at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:80)
at org.apache.jsp.jsp.ServerError_jsp._jspService(ServerError_jsp.java:157)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
... 38 more
क्या कोई मुझे बता सकता है कि समस्या का कारण क्या हो सकता है? मैं वर्तमान में समस्या को पुन: उत्पन्न करने में सक्षम नहीं हूं। मैंने कहीं पढ़ा है कि यह डाउनलोड संवाद बंद करने के कारण हो सकता है, लेकिन कई ब्राउज़रों से कोशिश करने के बाद भी यह मामला नहीं था। getOutputStream() has already been called for this response भी चेक किया, लेकिन सीधे मेरी समस्या से संबंधित नहीं हो सका क्योंकि jsp के लिए कोई पुनर्निर्देशन नहीं है क्योंकि struts2 एक्शन सीधे परिणाम स्ट्रीम की ओर जाता है।
struts.xml
<action name="GetFile" class="Class" method="DownloadFile">
<result name="success" type="stream">
<param name="contentType">contentType</param>
<param name="contentDisposition">fileName</param>
<param name="bufferSize">1024</param>
<param name="inputName">inputStream</param>
</result>
</action>
कार्रवाई कक्षा
public String DownloadFile()
{
// create the object variable pdfdoc which is a custom object.
// You can assume that the pdfdoc is properly constructed
// and getFileContent does what it is required to do, so
// that the final pdf is generated.
...
...
inputStream = new ByteArrayInputStream(pdfdoc.getFileContent());
contentType = pdfdoc.getContentType();
fileName = pdfdoc.getFileName();
contentDisposition = doc.getContentDisposition();
bufferSize = 1024;
return "success";
}
आप पूरा स्टैक ट्रेस और कम में पोस्ट करें सकते हैं कि इस व्यवहार उपयोगकर्ता व्यवहार का अनुमान लगाना कठिन इसकी प्रतिलिपि प्रस्तुत करने योग्य नहीं है। –
जोड़ा गया पूर्ण स्टैक ट्रेस –
क्या कार्रवाई कोई पैरामीटर लेती है? –