Ссылка на файл в папке WebContent из EJB (исключение «файл не найден»)

#java #jakarta-ee #servlets #ejb

#java #джакарта-ee #сервлеты #ejb

Вопрос:

Я использую XMLStreamWriter для записи XML в RSS-файл, который находится в каталоге WebContent.

 XMLStreamWriter writer = factory.createXMLStreamWriter(new FileWriter("\XRSSserverlet\StatusRSS.rss")
  

Я получаю исключение FileNotFound.

Каков наилучший способ записи в этот файл — или любой файл, расположенный в папке WeContent. Я ссылаюсь на этот файл с другой страницы, которая обрабатывается сервлетом в качестве моей RSS-ссылки.

Спасибо.

Полное исключение: разорвать: java.io.FileNoteFoundException: XRSSservletStatusRSS.rss (система не может найти указанный путь)

Итак, я думаю, что есть стандартный способ ссылаться на эту папку, или мне нужно где-то добавить что-то в путь сборки.

Редактировать: я должен добавить, что вызывающий ejb находится в отдельном проекте EJB, отличном от папки webcontent, которая находится в динамическом веб-проекте. Все они находятся в одном проекте EAR, хотя и пути сборки настроены правильно.

Ответ №1:

RSS-канал не является статическим ресурсом, вместо этого я бы сгенерировал этот канал динамически в сервлете в качестве ответа. Даже ваш путь к файлу предполагает, что это должен быть сервлет. Также вы могли бы добавить некоторое кэширование и т.д. Просто выведите свой XML в поток ответов и добавьте соответствующие заголовки.

Комментарии:

1. Спасибо, сейчас я пробую именно так. У меня есть ссылка на сервлет, который я пытаюсь сгенерировать XML-код с помощью XMLStreamWriter. Проблема в том, что он не выполняется. Я хочу, чтобы сервлет запускал этот код при загрузке страницы.

2. итак, в методе doPost я ввел: XMLStreamWriter writer = factory.createXMLStreamWriter(response.getOutputStream()); но эта строка никогда не выполняется при загрузке страницы

3. Я предполагаю, что я спрашиваю, каков способ привязать действие к загрузке страницы?