XPage — сохранить файл свойств из JavaBean

После нескольких попыток и долгих поисков в Google я снова спросил =)

У меня есть Java Bean, который создает TreeSet<String>, содержащий некоторых пользователей для работы с моей базой данных. Поскольку создание моего TreeSet занимает некоторое время, я хочу сохранить его в файл properties.

Получение/чтение файла свойств в моем Bean не было проблемой, также легко установить свойство, но как я могу создать OutputStream для своего ресурса?

Фрагмент кода:

try {
    Properties userproperties;
    userproperties = new Properties();
    userproperties.load(FacesContextEx.getCurrentInstance().getExternalContext().getResourceAsStream("WEB-INF/user.properties"));

    for (String groupmember : groupmembers) {
        userproperties.setProperty("UserList", groupmember);
    }
    // userproperties.save(OutputStream, comments)

} catch (Exception e) {
    // some errorhandling
}

person Michael Saiz    schedule 17.04.2013    source источник
comment
Вы пытались получить OutputStream с помощью user.properties или с помощью getRealPath() таким образом? coderanch.com/t/358508/Servlets/ Java/   -  person Panu Haaramo    schedule 19.04.2013


Ответы (1)


Вы можете сделать это через импорт DXL. Создайте файл DXL в своей файловой системе и импортируйте его в базу данных.

Обратите внимание, что веб-пользователи должны иметь как минимум права дизайнера (расширенные настройки ACL).

Но похоже есть баг с 8.5.2, у меня не получилось заставить его работать с этой версией.

person Matthias Nicklisch    schedule 17.04.2013
comment
Спасибо за идею, но я не хочу трогать файловую систему сервера. Я надеялся на решение, которое позволит мне создать OutputStream для моего файла WebContent/WEB-INF/user.properties в моей базе данных. Как будто я получил InputStream от getResourceAsStream() - person Michael Saiz; 17.04.2013
comment
@MichaelSaiz: не требуется создавать файл DXL, вы можете сделать это «на лету» (из String, NotesStream, RichTextItem). - person Sven Hasselbach; 17.04.2013
comment
@MichaelSaiz Я полагаю, что Матиас и Свен говорят об элементе дизайна File Resource, который вы могли бы использовать вместо WEB-INF/. - person Panu Haaramo; 17.04.2013
comment
Хорошо, звучит интересно, но как я могу создать элемент дизайна File Resource с помощью DXL Exporter? Каждый пример, который я нахожу, просто указывает на местоположение в файловой системе. - person Michael Saiz; 18.04.2013
comment
В основном вы выполняете обычный импорт DXL, тип определяется с помощью флага в DXL, для файловых ресурсов это ‹item name='$Flags'›‹text›345CgQ‹/text›‹/item› Вы создаете объект потока , создайте файл DXL, а затем импортируйте его. С правым флажком объект создается как файловый ресурс. Мой DXL выглядит примерно так: - person Matthias Nicklisch; 18.04.2013
comment
‹?xml version='1.0' encoding='utf-8'?› ‹fileresource name='' noreplace='false' publicaccess='false' Designerversion='8.5.3'› ‹filedata› + содержимое (BASE64) + ‹/filedata› ‹item name='$FileSize' sign='true'› ‹numberlist ‹number›filesize‹/number› ‹/numberlist› ‹/item› ‹item name='$FileModDT' sign='true'› ‹datetimelist› ‹datetime›sdf.format(dt.toJavaDate()) + T + sdf2.format(dt.toJavaDate()) +,00-00);‹/datetime› ‹/datetimelist› ‹/item› ‹item name='$Flags'›‹text›345CgQ‹/text›‹/item› ‹item name=’$TITLE’›‹text›filename‹/text›‹/item› ‹/fileresource› - person Matthias Nicklisch; 18.04.2013