在JBoss 4.2.3中提供文件?

时间:2011-01-28 15:03:31

标签: apache tomcat jboss alias

现在我正在使用Apache做一些非常简单的文件服务。我们还有一个JBoss 4.2.3实例,可以完成我们所有的应用程序服务。我想把JBoss用于一切。在Apache中,我在httpd.conf文件中执行以下操作来执行文件服务:

Alias /reports "C:/driveReports/"
<Directory "C:/driveReports/*">
   AllowOverride All
   Options Indexes FollowSymLinks
   Order allow,deny
   Allow from all
</Directory>

在JBoss中我能做些什么来完成同样的事情吗?这似乎很容易,但我找不到任何让我相信有一个解决方案不会让Apache与JBoss的Tomcat相关联的解决方案。

我知道我可以轻松地将文件从“C:/ driveReports”位置移动到JBoss web部署者位置,但我宁愿不必这样做。感谢。

2 个答案:

答案 0 :(得分:0)

我不确定JBoss AS是否有开箱即用的功能。毕竟,这是一个应用服务器。

您可以将servlet用于此目的,类似于Jetty的默认servlet,其代码如下:

private void dispatchFileForDownload( File file, HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException {

    // Check the file existence.
    if( !file.exists() )
        throw new IllegalStateException("File "+file.getPath()+" does not exist.");
    if( !file.isFile() )
        throw new IllegalStateException("File "+file.getPath()+" is not a regular file.");

    // HTTP stuff.
    resp.setContentLength( (int)file.length() );
    if( artifactInfo.getFileName().endsWith(".jar") )
        resp.setContentType("application/java-archive");
    else if( artifactInfo.getFileName().endsWith(".xml") )
        resp.setContentType("text/xml");
    else
        resp.setContentType("application/octet-stream");

    resp.setHeader("Content-Disposition", "attachment; filename="+file.getName());


    ServletOutputStream os = resp.getOutputStream();
    FileInputStream in = new FileInputStream(file);
    IOUtils.copy(in, os);
    in.close();
    os.close();
}

答案 1 :(得分:0)

尝试从此Wiki页面获取有关static file serving的帮助。