Как записать XML в файл из EJB или другого метода Java EE

#java #jakarta-ee #servlets #ejb-3.0

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

Вопрос:

Я пытаюсь создать RSS-файл для доступа в Интернете. У меня уже есть динамический веб-проект, работающий с сервлетом и несколькими EJB для бизнес-логики. Все, что я хочу добавить сейчас, это способ создания файла RSS. Я не нашел хороших примеров в Интернете. И я все равно хотел бы написать это сам. Кто-нибудь знает способ записи в существующий веб-файл, который находится в папке WebContent?

Я создал файл «status.rss» в папке WebContent, содержащий предварительно загруженный XML. Я получил к нему доступ через браузер. Теперь мне просто нужно сослаться на него в моем EJB и изменить содержимое. Я не уверен, как ссылаться на файл и методы, которые нужно вызывать, чтобы записать в него текст / xml.

Используете ли вы XMLstreamwriter инструкции печати и т.д.?

Ответ №1:

Мы не должны делать это из EJB для записи данных в файлы, однако вам следует рассмотреть другие альтернативы. Поскольку транзакции не должны перегружаться.

Если ваша модель данных в xml проста, этот xml API поможет вам добиться этого для вывода XML.

  • Также вы можете реализовать это с помощью сервлета для извлечения данных.

  • http://x-stream.github.io/

О том, почему вы не должны создавать файл с уровня EJB, пожалуйста, смотрите этот проектный документ.

Java синие отпечатки на ограничениях уровня / контейнера EJB.

http://java.sun.com/blueprints/qanda/ejb_tier/restrictions.html

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

1. Спасибо. Я новичок в JEE, я думал, что вся бизнес-логика, включая создание и запись RSS-файла, должна содержаться в Controler / EJB фреймворка MVC. Вы предполагаете, что это должно быть сделано из сервлета вместо этого? Спасибо

2. Ваши вставки / обновления / удаления выполняются через ejb. Все, что я говорю, это то, что во время операции транзакции нет необходимости открывать / записывать файлы. Когда запрашивается RSS-файл, вы можете создать RSS-файл на лету. Пожалуйста, также ознакомьтесь с сервлетами с пользовательским расширением и типом содержимого для вывода xml.

3. В моем веб-проекте уже есть сервлет, который я использую для обработки httprequests. Но сервлет стал бы довольно большим, если бы я начал программировать форматирование XML и другую логику внутри сервлета. Поправьте меня, если я ошибаюсь, но я думаю, что лучше всего сделать это внутри EJB и просто вызвать этот компонент из сервлета. Я проверю сделанные вами предложения.

4. У вас может быть несколько сервлетов. Я также отредактировал ответ, чтобы добавить больше информации о дизайне. Технически это возможно, но не следует.