struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alireza Fattahi (JIRA)" <j...@apache.org>
Subject [jira] [Created] (WW-4559) Define a bean of java.io.FileInputStream in Spring makes the Struts stream result not work
Date Tue, 03 Nov 2015 07:38:27 GMT
Alireza Fattahi created WW-4559:
-----------------------------------

             Summary: Define a bean of java.io.FileInputStream in Spring makes the Struts
stream result not work
                 Key: WW-4559
                 URL: https://issues.apache.org/jira/browse/WW-4559
             Project: Struts 2
          Issue Type: Bug
          Components: Dispatch Filter
            Reporter: Alireza Fattahi
             Fix For: 2.3.x


In a strust2 + Spring 4 project

Consider a simple action with stream result 
{code:title=Bar.java|borderStyle=solid}
@Action(value = "sample-export", 
        results = { @Result(name = "success", type = "stream", params = {
        "inputName", "exportInputStream", "contentType",
        "${exportContentType}; charset=UTF-8", "Content-Disposition",
        "attachment; filename=\"${filename}\"", "contentDisposition",
        "attachment; filename=\"${filename}\"", "bufferSize", "2048" }) })
public String export() throws ClientException {
    //buildExportInputStream() creates and returns new ByteArrayOutputStream by using jasper
    exportInputStream = buildExportInputStream();
    LOG.debug("Exporting to {} file ", getFilename());

    return SUCCESS;

}
{code}

This works fine,

Now define a bean 
{code:xml}
 <bean id="sampleStream" class="java.io.FileInputStream" >
        <constructor-arg  value="c:/sample.jks"/>  
  </bean>
{code}
The export will not work correctly any more, first time you get the c:/sample.jks as file
and then an  error which same stream already closed.

I have found that the sampleStream will be autowired to org.apache.struts2.dispatcher.StreamResult
and I see this log:
{panel:title=My Title|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE}
DEBUG ort.DefaultListableBeanFactory Returning cached instance of singleton bean 'sampleStream'
DEBUG ort.DefaultListableBeanFactory Autowiring by type from bean name 'org.apache.struts2.dispatcher.StreamResult'
via constructor to bean named 'sampleStream'
{panel}
This mistaken autowired is the source of problem ! Is there any workaround. And by the way,
why the sampleStream is autowired here !



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message