Как получить доступ к файловой системе от EJB 3?

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

я также думаю, что это помогает понять платформу лучше при наличии устройства или устройств, для которых Вы нацелены со своим приложением,

23
задан Pierre Thibault 31 August 2009 в 14:13
поделиться

4 ответа

Инкапсулируйте доступ к данным файла. Затем вы можете использовать любой из описанных выше методов. Даже используйте базу данных. Измерьте производительность вашей системы. Если он соответствует требованиям, все готово. В противном случае доступ к файлу локализован в одном месте, и вы можете заменить его другим решением. Такое же преимущество, если программное обеспечение должно быть перенесено в другой контейнер и / или должно поддерживаться кем-то другим.

5
ответ дан 29 November 2019 в 02:54
поделиться

Простой доступ к файлам не является транзакционным по своей природе. Если вы не встроили поддержку транзакционных операций (я понятия не имею, как - это работа менеджера ресурсов), вам придется беспокоиться о транзакционной семантике выполняемой операции. Если вы действительно встроите поддержку транзакций, вы очень мало выиграете в производительности (некоторая потеря производительности в базах данных связана со всей бухгалтерией, выполняемой менеджером ресурсов). И не забывайте о близком родственнике управления транзакциями - параллелизме. Если вы не начнете писать в новый файл для каждого запроса, проблемы параллелизма будут вас более или менее укусить.

Вы найдете гораздо больше информации в FAQ Sun Blueprint об ограничениях EJB .

Если только не у вас есть хорошее техническое обоснование, вам не следует пытаться получить доступ к файловой системе из EJB. Очень хорошим примером может быть структура ведения журнала (не аудита) - относительно меньше вреда при доступе к файловой системе для записи файлов журнала, учитывая, что ведение журнала не обязательно должно быть операцией транзакции, то есть вам не нужно откатывать запись в журнальный файл; не то, чтобы иметь частичную запись приемлемо.

1
ответ дан 29 November 2019 в 02:54
поделиться

Причина, по которой вам запрещен доступ к файловой системе в EJB-компонентах, заключается в том, что вы не можете контролировать работу вашего приложения в контейнере (Java EE) . Например, ваше приложение может работать на кластере серверов, и в этом случае сохранение некоторого объекта в каталоге на одном сервере, вероятно, будет малоэффективным. (Конечно, у вас может быть сетевая файловая система, поэтому ограничение может не применяться.)

Один из вариантов может заключаться в использовании реализации JNDI , которая поставляется с вашим ] Контейнер . Вы, вероятно, сможете сохранить необработанный массив byte [] в каком-либо месте JNDI, чтобы вы всегда могли сохранить сериализованную форму объекта:

ByteArrayOutputStream baos= new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(myObj);

//Now save into JNDI
new InitialContext().bind("path/to/myobject", baos.toByteArray());

Это можно будет найти позже и повторно преобразовать в ваш объект:

9
ответ дан 29 November 2019 в 02:54
поделиться

Если вы знаете, что никогда не будете кластеризовать свое приложение (или что вы сможете подключить диск к сети), тогда просто используйте java.io. *.

Убедитесь, что вы правильно настроили корневой каталог вашего хранилища файлов.

7
ответ дан 29 November 2019 в 02:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: