Как я могу получить имя файла ресурса сервлета? - PullRequest
2 голосов
/ 30 июля 2009

Я пишу Java-сервлет, который вызывает функцию в банке. У меня нет контроля над кодом в этой банке. Вызываемая функция хочет в качестве аргумента указать имя файла конфигурации.

Я бы хотел связать этот файл с моим файлом войны. Если я помещу это в войну где-нибудь, какое имя файла я могу передать функции в банке?

Обратите внимание, что только API может использоваться только с именем файла jar. Так что ServletContext.getResourceAsStream() не поможет.

Ответы [ 2 ]

3 голосов
/ 30 июля 2009

Используйте ServletContext.getRealPath(). Это возвращает путь файловой системы для данного ресурса контекста сервлета. Вы передаете ему тот же аргумент, что и ServletContext.getResourceAsStream()

Еще лучше, используйте абстракцию ресурса Spring:

Resource resource = new ServletContextResource(servletContext, "/path/to/file");
File resourceFile = resource.getFile();
1 голос
/ 30 июля 2009

Если он находится в вашем .war-файле, вы не сможете получить к нему доступ как к файлу. Некоторые контейнеры сервлетов разбивают файл .war на компоненты, но я не думаю, что вы можете на него положиться.

Задумывались ли вы о том, чтобы извлечь его (через getResourceAsStream()), записать его во временный файл / каталог и затем сослаться на него?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...