Networking struts 2在结果之后关闭网络连接

Networking struts 2在结果之后关闭网络连接,networking,connection,struts,inputstream,Networking,Connection,Struts,Inputstream,我使用struts应用程序的网络连接连接到网络资源,并将文件直接下载到浏览器,而无需将其存储在运行struts的服务器上(需要避免传输的文件污染struts服务器)。我使用结果类型流将inputstream从网络资源直接下载到用户的浏览器中,inputstream会自动关闭,但承载该流的网络连接永远不会返回(当我使用httpclient进行网络连接时,有一个连接池) 在结果(类型为stream)完成(文件已下载到浏览器)后,是否有任何人可以看到的方法来实际调用代码?事实上,拦截器确实解决了这一问

我使用struts应用程序的网络连接连接到网络资源,并将文件直接下载到浏览器,而无需将其存储在运行struts的服务器上(需要避免传输的文件污染struts服务器)。我使用结果类型流将inputstream从网络资源直接下载到用户的浏览器中,inputstream会自动关闭,但承载该流的网络连接永远不会返回(当我使用httpclient进行网络连接时,有一个连接池)


在结果(类型为stream)完成(文件已下载到浏览器)后,是否有任何人可以看到的方法来实际调用代码?

事实上,拦截器确实解决了这一问题: 我在行动的拦截器中写了以下内容:

public String intercept(ActionInvocation invocation) throws Exception {
    try {
        return invocation.invoke();
    } finally {
        DownloadAction da = (DownloadAction) invocation.getAction();
        if (null != da && null != da.getResponse()) {
            logger.debug("@@@@@@ connection releasing");
            da.getResponse().releaseConnection();
        }else{
            logger.error("@@@@@@ connection cannot be released");
        }
    }
}
与我之前的想法相反,这实际上只有在执行所有结果(流下载)后才会运行。原来我一直在释放与soon的连接,所以我在日志中遇到了一个令人困惑的错误,我认为这是因为拦截器运行得太快了。我错了

我希望有一天这能帮助其他人