powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF - как узнать текущую директорию?
13 сообщений из 13, страница 1 из 1
JSF - как узнать текущую директорию?
    #34806231
J-Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Такой вопрос: как я могу получить текущую директорию на сервере для последующего сохранения данных туда? Наверное, используя FacesContext. Но как? Кто-нибудь сталкивался?

Когда я работал с сервлетами, всё было так: session.getServletContext().getRealPath("FILES"); А как в данном случае?

Заранее спасибо за ответ.
...
Рейтинг: 0 / 0
JSF - как узнать текущую директорию?
    #34806252
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
через FacesContext можно получить ServletContext и далее все по старому...
...
Рейтинг: 0 / 0
JSF - как узнать текущую директорию?
    #34806573
J-Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм... мне кажется, это немного не тот метод...

Я сделал так:
Код: plaintext
1.
2.
3.
4.
        FacesContext fc = FacesContext.getCurrentInstance();
        ExternalContext ec = fc.getExternalContext();
        HttpSession sess = (HttpSession)ec.getSession(false);
        ServletContext sc = sess.getServletContext();
        String realPath = sc.getRealPath("FILES");


Получил следующее: C:\Program Files\jboss-4.2.0.GA\server\default\.\tmp\deploy\tmp28224MAIN.ear-contents\HRD-exp.war\FILES

Директорию создал в вбб-апп, в WebRoot'е. Но путь к текущей дир мне указывается во временной директории сервера.

Я понимаю, что я деплою приложение в ear-архиве. Но как обычно аплоадят файлы с такими приложениями? Куда? Если рядом с архивом - то как узнать из кода эту директорию?
...
Рейтинг: 0 / 0
JSF - как узнать текущую директорию?
    #34806581
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
JSF - как узнать текущую директорию?
    #34812815
J-Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kachalovбыло
Да, почитал, пасиб. Но только там никто так и не обьяснил как действительно надо. В принципе, с Вами в тех постах абсолютно согласен.

Тут проблема в том, что приложение лежит в архиве и во время редеплоя+запуска он раскаковыватся в НОВУЮ временную директорию. А getRealPath даёт путь именно к ней.

В итоге, опигравшись со всем этим, решил:

1. Сохранять зааплоденные файлы в "..\server\default\MYAPP_FILES\". Ежели понадобится переезд приложения, то всё, что нужно взять - это ear + эту дир.
2. Показывать зааплоденные файлы путём копирования их из вышеуказанной диреткории в ту самую, которую возвращает getRealPath, а потом давать на эти файлы обычные ссылки.

Первый пункт осуществляется простым File f = new File("..\server\default\MYAPP_FILES\");

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


Спасибо за ответы.
...
Рейтинг: 0 / 0
JSF - как узнать текущую директорию?
    #34812861
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
J-ProНо только там никто так и не обьяснил как действительно надо.
- если мыслить в стиле Java EE (надеюсь что уловил ход мысли разработчиков спецификации), то надо создавать переменную окружения/JNDI-переменную доступную для редактирования при деплое приложения (т. е. в web.xml, ejb-jar.xml и т. п.) и явно указать в ней путь к папке. Таким образом при развертывании приложения можно явно указать путь к папке.
...
Рейтинг: 0 / 0
JSF - как узнать текущую директорию?
    #34812965
J-Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Явно указать путь к папке где? В архиве?

Ведь явно его можно указать и в константе, в каком-нить классе...

Вопрос в следующем: можно ли писать прямо в архив? Или, если нет, то куда ОБЫЧНО складывают файлы? НЕ временные, а постоянные?
...
Рейтинг: 0 / 0
JSF - как узнать текущую директорию?
    #34813952
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
J-ProВедь явно его можно указать и в константе, в каком-нить классе...
- зашивать пути в код большая ошибка, так как без перекомпиляции ничего не изменишь, а пользователь приложения не всегда способен на такие подвиги

J-ProВопрос в следующем: можно ли писать прямо в архив?
- писать программно? нет
- писать в web.xml (если речь идет о web-приложении) или в ejb-jar.xml (если речь идет о EJB) можно на этапе развертывания приложения (т. е. вручную)

J-Pro Или, если нет, то куда ОБЫЧНО складывают файлы? НЕ временные, а постоянные?
- какие файлы? картинки? HTML? Опишите задачу точнее, а то Вам сейчас насоветуют
...
Рейтинг: 0 / 0
JSF - как узнать текущую директорию?
    #34815458
J-Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kachalov- какие файлы? картинки? HTML? Опишите задачу точнее, а то Вам сейчас насоветуют
Есть в базе люди, для них есть отдельная таблица, одно из полей - путь к фотке этого человека. В базе картинки решено не хранить. Поэтому, картинки хранятся в какой-то постоянной дир в веб-апп.
Если б это был PHP, к примеру, т.е. приложение, представленное не архивом - то директорией этой была бы, к примеру, FILES, расположенная непостредственно рядом с index.html. И переносить приложение с места на место следовало бы вместе с этой дир.
Но ежели у нас врхив EAR и в него программно не положишь файлы, то где их хранить кроме базы?

Вот и решил я, что хранить их буду прямо в директории сервера(куда, ессно, нет доступа из веба). А когда необходимо будет эту самую фотку показать через веб - просто копирую из той папки во временную, куда и было распаковано приложение из EAR. НО может есть какие-то более устоявшиеся способы? Почему спрашиваю? Потому как мне кажется некрасивым хранение файлов какого-то приложения в директории сервера...

Спасибо.
...
Рейтинг: 0 / 0
JSF - как узнать текущую директорию?
    #34815678
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
J-ProНо ежели у нас врхив EAR и в него программно не положишь файлы, то где их хранить кроме базы?
1. папка любая какая Вам удобна, например: "D:/dir/FILES"
2. полный путь к папке прописываете в ejb-jar.xml как текстовый параметр к бину (если сохранением данных о пользователе занимается бин) и считываете в бине. При развертывании бина деплоер может его отредактировать так как ему удобно.
3. в настройках web-сервера задаете на эту папку псевдоним (алиас в Apache или виртуальная директория в IIS). Например: Alias /images/ "D:/dir/FILES" Для большей гибкости имя псевдонима тоже хорошо бы сохранять как параметр бина.
4. на web-страницах путь к картинкам выглядит как: <img src="/images/1.gif">
...
Рейтинг: 0 / 0
JSF - как узнать текущую директорию?
    #34815826
J-Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм... вижу две проблемы:

1. Для того, чтобы перенести приложение на новый сервер, мне сначала необходимо будет покопаться в настройках и настроить алиас.
2. Все фотки будут лежать в одной, ВСЕГДА доступной по веб директории.

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


Уважаемый Kachalov , спасибо Вам за ответы.
...
Рейтинг: 0 / 0
JSF - как узнать текущую директорию?
    #34815905
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
J-Pro Для того, чтобы перенести приложение на новый сервер, мне сначала необходимо будет покопаться в настройках и настроить алиас.
- в спецификации Java EE предусмотрены 6 ролей (этапов) при создании и поддержании Enterprise приложения. Одна из ролей: Deployer - это роль человека, который должен копаться в настройках сервера при развертывании приложения. Так что все так и задумано :)

J-Pro Все фотки будут лежать в одной, ВСЕГДА доступной по веб директории.
- наверное я не правильно понял Вас раньше, но мне казалось что это и нужно, чтобы папка была доступна из Internet, а картинки отдавались клиенту web-сервером, без привлечения БД, сервера приложений и т. д., что хорошо с точки зрения повышения производительности
...
Рейтинг: 0 / 0
JSF - как узнать текущую директорию?
    #34815915
J-Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kachalov- в спецификации Java EE предусмотрены 6 ролей (этапов) при создании и поддержании Enterprise приложения. Одна из ролей: Deployer - это роль человека, который должен копаться в настройках сервера при развертывании приложения. Так что все так и задумано :)
К сожалению, не всегда так задумано на предприятии, на котором производится продукт :) Поэтому, и деплоить, и писать часто должен один человек :)

Kachalov- наверное я не правильно понял Вас раньше, но мне казалось что это и нужно, чтобы папка была доступна из Internet, а картинки отдавались клиенту web-сервером, без привлечения БД, сервера приложений и т. д., что хорошо с точки зрения повышения производительности
Та нет, это просто я путаю Вас. Изначально я так и хотел, т.е. по аналогу с PHP. Но когда понял, что в архив EAR писать нельзя, плюс можно держать все фотки в недоступном из веба месте, а просто копировать во ВРЕМЕННУЮ диреткорию при необходимости и лишь потом давать линк, то подумал, что так даже круче. Но тогда смущало место, где хранятся "недоступные из веба" файлы, т.е. в директории сервера...

В общем, ладно :) Буду делать пока так. Но ещё раз за помощь и ответы больше спасибо.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF - как узнать текущую директорию?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]