FileIO из сессионного компонента без сохранения состояния - PullRequest
2 голосов
/ 28 мая 2009

Мне нужно читать и записывать XML-файлы на диск из сессионного компонента без сохранения состояния, работающего в JBoss. Каков предпочтительный способ сделать это?

Сейчас мы обращаемся к файловой системе с помощью классов java.io.

Я нашел простой пример RAR с файловой системой, и он работает, но он может быть более ошибочным, чем просто использование java.io напрямую.

Ответы [ 3 ]

3 голосов
/ 28 мая 2009

Если вы проверите, что Ограничение программирования раздела EJB Spec , вы найдете следующее:

Корпоративный компонент не должен использовать пакет java.io для попытки доступ к файлам и каталогам в файловая система.

Если вы можете найти лучший, возможно, безопасный и, что более важно, транзакционный способ сделать это, пожалуйста, пересмотрите. У нас есть система, которая хранит документы PDF в виде больших двоичных объектов в базе данных, а затем передает их пользователям по электронной почте или сервлету.

FSBanagedConnectionFactory на основе JBoss JCA не так уж и плох. Он основан на JNDI и может работать в большем количестве случаев, чем просто взламывать java.io

1 голос
/ 28 мая 2009

Если вы правильно закроете файл и очистите его, вы можете использовать все, что захотите. Я бы использовал синтаксический анализатор XML для чтения или записи файлов XML, хотя это безопаснее.

0 голосов
/ 28 мая 2009

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

Самое простое «пакетное» решение - вывести одну машину из кластера и запустить там «пакетные» приложения.

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