Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проект на JSP+Tomcat где хранить файл настроек? 
V
    Опции темы
Иван Человеков
  Дата 17.1.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 11.3.2006
Где: Минск

Репутация: 1
Всего: 1



Ребята пишу проект на JSP+Tomcat, подскажите куда мне положить файл «ini.properties», чтобы там указывать имя базы данных, строки подключения к СУБД, и другие настройки. 
Пользуюсь средой разработки IDEA 6, получаю текущий директорий вот так в сервлете:

Код

private final String curDir =//System.getProperty("user.dir")+"/";//Определяем текущий каталог

  public void getIni(){
      Properties settings =new Properties();
      try {
            settings.load(new FileInputStream(curDir+"ini.properties"));
            System.out.println("property1 = " + settings.getProperty("property1"));
      }catch (FileNotFoundException ex) {
            ex.printStackTrace();
      } catch (IOException ex) {
            ex.printStackTrace();
      }

Ложу файл в «resources». Получаю ошибку:
Код

java.io.FileNotFoundException: D:\Java_Tools\apache-tomcat-5.5.17\bin\ini.properties (The system cannot find the file specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:106)
    at java.io.FileInputStream.<init>(FileInputStream.java:66)
    at by.Kononenko_Egor.zpl.servlet.IniZpl.getIni(IniZpl.java:17)


Где вы храните файл конфигурации в подобных проектах, и как ищете к нему путь? Спасибо.



PM ICQ   Вверх
YuG
Дата 17.1.2007, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 20.2.2006

Репутация: 3
Всего: 4



Например, так (например, файл лежит в корне папки с *.class файлами):

Код

            .........
            ClassLoader loader = this.getClass().getClassLoader();
            InputStream stream = loader.getResource("ini.properties").openStream();
            .........
            Properties properties = new Properties();
            properties.load(stream);
            .........



PM WWW ICQ Skype   Вверх
tux
Дата 17.1.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Храни внутри приложения. http://forum.vingrad.ru/topic-126384/index.html
PM MAIL Skype GTalk Jabber YIM   Вверх
Иван Человеков
  Дата 18.1.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 11.3.2006
Где: Минск

Репутация: 1
Всего: 1



Цитата(tux @ 17.1.2007,  18:03)
 Путь к тому каталогу, где лежит приложение, можно получить так:
Код

private static String getContextPath(ServletContext ctx) {
     String path = null;
     try {
        String p = ctx.getResource("/").getPath();
        path = p.substring(0, p.lastIndexOf("/"));
        path = path.substring(path.lastIndexOf("/") + 1);
     } catch (MalformedURLException e) {
         e.printStackTrace();
         return "";
     }
     return path;
}

tux, можешь прокомментировать свой код?

Меня очень интересует класс ServletContext. Если ссылки, можно на русском языке smile

Пытаюсь создать его так:
Код

ServletContext sc = getServletContext();


Cannot resolve method ‘getServletContext();’

В документации к JDKTM 5.0 Documentation есть только слабое упоминание, как я понимаю надо документация к J2EE? Где её можно взять? Что вообще надо, для того чтобы писать программы на J2EE? Я думал Tomcat-а хватит. Спасибо.

PM ICQ   Вверх
tux
Дата 18.1.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Цитата(Иван Человеков @  18.1.2007,  16:37 Найти цитируемый пост)
Меня очень интересует класс ServletContext

ServletContext получить можно так:
Код

ServletContext sc = request.getSession().getServletContext();

Здесь request - это объект класса HttpServletRequest. Вот ссылка на javadoc - http://java.sun.com/j2ee/1.4/docs/api/java...letContext.html.

Цитата(Иван Человеков @  18.1.2007,  16:37 Найти цитируемый пост)
Что вообще надо, для того чтобы писать программы на J2EE? Я думал Tomcat-а хватит.

Если ты не собираешься использовать EJB, то хватит за глаза. Вся документация по J2EE здесь - http://java.sun.com/j2ee/1.4/docs/.
PM MAIL Skype GTalk Jabber YIM   Вверх
3x3
Дата 18.1.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 17.9.2006

Репутация: 5
Всего: 8



Цитата(Иван Человеков @ 18.1.2007,  16:37)
Где её можно взять?

Вообще, тут: http://java.sun.com/products/servlet/2.5/d...-mr2/index.html


Цитата(Иван Человеков)
Я думал Tomcat-а хватит. 


Должно хватить. Вот тут не смотрел?
http://localhost:8080/tomcat-docs/servletapi/index.html


--------------------
Зачем платить больше,
когда можно заплатить дважды?
PM   Вверх
Иван Человеков
Дата 20.1.2007, 06:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 11.3.2006
Где: Минск

Репутация: 1
Всего: 1



tux,  спасибо, получилось! Однако я получил от процедуры не т что ожидал smile Она по урлу определяет папку Web-проекта. Значит мне ещё надо опрелелить где находится Tomcat + добавить путь /ewbapps/+то что выдаёт процедура - имя проекта.  По этому пути я буду писать *.properties.
Как это сделать? Спасибо.

3x3, Tomcat девственно чист по отношению к документации   smile 

PM ICQ   Вверх
tux
Дата 20.1.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Иван Человеков, я дико извиняюсь. Я тебе совсем не то насоветовал. Метод этот - попытка вернуть контекст приложения. И та неудачная. Вот такой код в Томкате работает, в других веб-контейнерах тоже должен. Возвращает путь до корня приложения (тот путь, куда веб-контейнер приложение развернул).
Код

private static String getApplicationPath(ServletContext ctx) {
    String p = ctx.getRealPath("/");
    return p;
}

Хранение настроек в ресурсах (вместе с классами), которое тебе посоветовал YuG, - тоже удачная идея, так часто делают.

Это сообщение отредактировал(а) tux - 20.1.2007, 11:33
PM MAIL Skype GTalk Jabber YIM   Вверх
JUncle
Дата 20.1.2007, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(tux @  20.1.2007,  11:09 Найти цитируемый пост)
Вот такой код в Томкате работает, в других веб-контейнерах тоже должен. Возвращает путь до корня приложения (тот путь, куда веб-контейнер приложение развернул).

Иван Человеков,  именно так, а сам файл храни в какой-нибудь подпапке WEB-INF (она извне недоступна).
ЗЫ: а вообще советую настройки хранить в XML файле. Но это так... на будущее.

Это сообщение отредактировал(а) JUncle - 20.1.2007, 16:40
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
Иван Человеков
Дата 21.1.2007, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 11.3.2006
Где: Минск

Репутация: 1
Всего: 1



Спасибо tux  smile  получилось smile 
YuG спасибо за вариант smile но хочется хранить в папке приложения smile
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0531 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.