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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> hibernate.cfg.xml в папку conf томката 
:(
    Опции темы
Samotnik
Дата 4.10.2010, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



привет. 
Хочу, чтобы hibernate.cfg.xml загружался по пути  /conf/Catalina/localhost/hibernate.cfg.xml
Как это можно сделать ? 
Знаю вариант в классе HibernateUtil указать прямой путь, что-то вроде
Код

private static SessionFactory buildSessionFactory() {
        try {
            return new AnnotationConfiguration()
       .configure("c:\\tomcat\\conf\\Catalina\\localhost\\hibernate.cfg.xml" ).buildSessionFactory();
        }
        catch (Throwable t) {
         logger.fatal(t, t);
            throw new ExceptionInInitializerError(t);
        }
    }

Но это не подходит, нужно решение, чтобы без хардкода. 
 smile 

Это сообщение отредактировал(а) Samotnik - 4.10.2010, 21:35
PM MAIL   Вверх
Egik2
Дата 4.10.2010, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если тебе нужно просто составить относительный путь от корня tomcata, то его корневую директорию можешь получить из переменных окружения:
Код

System.getProperty("catalina.home")

И отсюда например плясать:

Код

private static SessionFactory buildSessionFactory() {
        char delim = File.pathSeparatorChar;
        try {
            return new AnnotationConfiguration()
       .configure(System.getProperty("catalina.home") + delim + "conf" + delim + "Catalina" + delim + "localhost" + delim + "hibernate.cfg.xml" ).buildSessionFactory();
        }
        catch (Throwable t) {
         logger.fatal(t, t);
            throw new ExceptionInInitializerError(t);
        }



--------------------
Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall)
a-nav.com
developer-blog.ru
world-poetry.org
PM MAIL WWW ICQ   Вверх
Samotnik
Дата 5.10.2010, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



не очень изящное решение. 
Может еще есть варианты ?
PM MAIL   Вверх
Samotnik
Дата 5.10.2010, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Вобщем сделал вот так 
Код

    private static SessionFactory buildSessionFactory() {
        try {
         File file  = new File(System.getProperty("catalina.home") + PATH_TO_HIBERNATE_CONFIG_FILE);
            return new AnnotationConfiguration().configure(file).buildSessionFactory();
        }
        catch (Throwable t) {
         logger.fatal(t, t);
            throw new ExceptionInInitializerError(t);
        }
    }

Приложение работает. Но, не понятно почему примерно каждые 10 сек, пишутся логи в консоль томката
Цитата

INFO: Server startup in 18002 ms
05.10.2010 12:06:13 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor hibernate.cfg.xml
05.10.2010 12:06:15 org.apache.catalina.startup.HostConfig deployDescriptor
SEVERE: Error deploying configuration descriptor hibernate.cfg.xml
05.10.2010 12:06:25 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor hibernate.cfg.xml
05.10.2010 12:06:27 org.apache.catalina.startup.HostConfig deployDescriptor
SEVERE: Error deploying configuration descriptor hibernate.cfg.xml
05.10.2010 12:06:37 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor hibernate.cfg.xml
05.10.2010 12:06:38 org.apache.catalina.startup.HostConfig deployDescriptor
SEVERE: Error deploying configuration descriptor hibernate.cfg.xml
05.10.2010 12:06:48 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor hibernate.cfg.xml
05.10.2010 12:06:50 org.apache.catalina.startup.HostConfig deployDescriptor
SEVERE: Error deploying configuration descriptor hibernate.cfg.xml
05.10.2010 12:07:00 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor hibernate.cfg.xml
05.10.2010 12:07:01 org.apache.catalina.startup.HostConfig deployDescriptor
SEVERE: Error deploying configuration descriptor hibernate.cfg.xml
05.10.2010 12:07:11 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor hibernate.cfg.xml
05.10.2010 12:07:12 org.apache.catalina.startup.HostConfig deployDescriptor
SEVERE: Error deploying configuration descriptor hibernate.cfg.xml
05.10.2010 12:07:22 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor hibernate.cfg.xml
05.10.2010 12:07:24 org.apache.catalina.startup.HostConfig deployDescriptor
SEVERE: Error deploying configuration descriptor hibernate.cfg.xml


PM MAIL   Вверх
kkorsakoff
Дата 5.10.2010, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В этой папке томкет ожидает увидеть дескрипторы контекстов веб-приложений, а не конфиги hibernate:)
Оттуда и ошибки.

Это сообщение отредактировал(а) kkorsakoff - 5.10.2010, 12:22
PM MAIL WWW ICQ   Вверх
Egik2
Дата 5.10.2010, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Установи в server.xml 
для Hosta соотвествующего 
deployXML = false

Пример:
Код

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false" deployXML="false">



--------------------
Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall)
a-nav.com
developer-blog.ru
world-poetry.org
PM MAIL WWW ICQ   Вверх
Samotnik
Дата 5.10.2010, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Цитата(kkorsakoff @  5.10.2010,  12:21 Найти цитируемый пост)
В этой папке томкет ожидает увидеть дескрипторы контекстов веб-приложений, а не конфиги hibernate:)

о как )
а куда можно тогда положить конфиг хибернета ?
сюда, например, можно ? 
c:\TomcatPushNotification\shared\classes\alfa\hibernate.cfg.xml 
у меня уже там файл с пропертями приложения есть
PM MAIL   Вверх
Egik2
Дата 5.10.2010, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



По идее если у тебя файл лежит в класспасе то он должен сам найтись  smile.
То есть просто пишешь hibernate.cfg.xml


--------------------
Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall)
a-nav.com
developer-blog.ru
world-poetry.org
PM MAIL WWW ICQ   Вверх
Samotnik
Дата 5.10.2010, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Egik2,  smile 
Код

    private static SessionFactory buildSessionFactory() {
        try {
            return new AnnotationConfiguration().configure(new File("hibernate.cfg.xml")).buildSessionFactory();
        } catch (Throwable t) {
         logger.fatal(t, t);
            throw new ExceptionInInitializerError(t);
        }
    }

Цитата

SEVERE: org.hibernate.HibernateException: could not find file: hibernate.cfg.xml
org.hibernate.HibernateException: could not find file: hibernate.cfg.xml
        at org.hibernate.cfg.Configuration.configure(Configuration.java:1557)
        at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1206)
        at de.my.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:20)
        at de.my.util.HibernateUtil.<clinit>(HibernateUtil.java:14)
        at de.my.ContextListener.contextInitialized(ContextListener.java:16)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
        at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
        at org.apache.catalina.core.StandardService.start(StandardService.java:519)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.io.FileNotFoundException: hibernate.cfg.xml (The system cannot find the file specified)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at org.hibernate.cfg.Configuration.configure(Configuration.java:1554)

PM MAIL   Вверх
Skipy
Дата 5.10.2010, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Samotnik @ 5.10.2010,  13:10)
а куда можно тогда положить конфиг хибернета ?

В WEB-INF/classes. Ему там самое место.


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
Samotnik
Дата 5.10.2010, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Цитата(Skipy @  5.10.2010,  13:32 Найти цитируемый пост)
В WEB-INF/classes. Ему там самое место. 

Самый умный ?  smile  туда нельзя. 
Если бы можно было, то я бы эту тему не создавал
 smile 
PM MAIL   Вверх
Egik2
Дата 5.10.2010, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А эта папка в classpath входит?



--------------------
Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall)
a-nav.com
developer-blog.ru
world-poetry.org
PM MAIL WWW ICQ   Вверх
Samotnik
Дата 5.10.2010, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



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

Добавлено через 7 минут и 32 секунды
Egik2, что в classpath положить нужно ? 
c:\tomcat\shared\classes\name\hibernate.cfg.xml  
ето ?
PM MAIL   Вверх
Samotnik
Дата 5.10.2010, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



так что. 
Останавливаться на этом варианте ? Больше идей нету ? 
Код

    private static SessionFactory buildSessionFactory() {
        try {
         File file = new File(System.getProperty("catalina.home") + "/shared/classes/my/hibernate.cfg.xml");
            return new AnnotationConfiguration().configure(file).buildSessionFactory();
        } catch (Throwable t) {
         logger.fatal(t, t);
            throw new ExceptionInInitializerError(t);
        }
    }


?
PM MAIL   Вверх
Egik2
Дата 5.10.2010, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Пропиши путь к твоей директории где лежит конфиг
в classpath.

Логично это сделать в файле $catalina_home/bin/setclasspath.bat
Там есть строка вида:
Код

set CLASSPATH=%JAVA_HOME%\lib\tools.jar


Добавь свой путь:
set CLASSPATH=%JAVA_HOME%\lib\tools.jar;c:\tomcat\shared\classes\name\

Теперь при запуске tomcata будет класспас показывать в твою папку и получить доступ к нему можно так:
Код

InputStream is = this.getClass().getClassLoader().getResourceAsStream("hibernate.cfg.xml");


Больше путей нигде не надо указывать.



--------------------
Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall)
a-nav.com
developer-blog.ru
world-poetry.org
PM MAIL WWW 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.0754 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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