Обслуживание файлов в JBoss 4.2.3? - PullRequest
0 голосов
/ 28 января 2011

Сейчас я использую 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 с Tomcat JBoss.

Я знаю, что мог бы достаточно легко переместить файлы из их местоположения "C: / driveReports" в расположение веб-развертывания JBoss, но я бы предпочел не делать этого. Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 января 2011

Попробуйте получить справку с этой вики-страницы о обслуживании статических файлов .

0 голосов
/ 28 января 2011

Я не уверен, есть ли в JBoss AS какая-то такая функция из коробки.В конце концов, это сервер приложений.

Вы можете использовать для этой цели сервлет, аналогичный сервлету Jetty по умолчанию, с кодом, подобным следующему:

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();
}
...