Доступ к папкам вне пакета приложения (файл .ear / .war) - PullRequest
3 голосов
/ 24 июня 2010

Есть ли способ сделать папку, которая НЕ упакована в файл war, доступной через GET.

Возможно, установить что-то в web.xml?

Ответы [ 2 ]

4 голосов
/ 24 июня 2010

Да, вы можете использовать свойство alternatedocroot (в Glassfish) для обслуживания файлов (например, изображений) вне войны.

Это свойство может быть вложенным элементомэлемента sun-web-app в файле sun-web.xml или элемента виртуального сервера в файле domain.xml

См. здесь: http://docs.sun.com/app/docs/doc/820-4496/geqpl?l=en&a=view

пример:

<property name="alternatedocroot_1" value="from=/images/* dir=/usr/gifs"/>
1 голос
/ 24 июня 2010

Вы можете добавить в приложение сервлет, который читает файл.

Пример (требуется обработка ошибок)

public class FileDownloadServlet extends HttpServlet {

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String filename = request.getParameter( "filename" );
        InputStream is;
        try {
            is = FileUtils.openInputStream( new File( filename ) );
            byte[] buf = new byte[ 8192 ];
            int bytesRead;
            while ( ( bytesRead = is.read( buf ) ) != -1 )
                os.write( buf, 0, bytesRead );
        }
        catch( ... ) {
        }
        finally {
            is.close();
            os.close();
        }
        response.setContentType( "application/octet-stream" );
      }
    }
...