![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
4epT |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: 3 Всего: 3 |
Доброе утро, собственно проблема в том, что после конфигурации SessionFactory через Spring он не инициализируется.
Вот его конфигурация:
Файл hibernate.cfg.xml:
Так же в файле конфигурации указываю какие пакеты сканировать:
В DAO классе создается приватная переменная sessionFactory (get и set методы я для нее не делал) .... и в момент вызова какого либо метода класса sessionFactory null. Кто может подсказать что я не правильно делаю ? |
||||||
|
|||||||
Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: 3 Всего: 5 |
На самом DAO какие нибудь ещё аннотации висят?... безопасность, транзакции...
Посмотри типы бинов в рантайме sessionFactory и dao-бинов... -------------------- Таково моё общее мнение. |
|||
|
||||
4epT |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: 3 Всего: 3 |
На самом DAO классе висит еще аннотация @Repository, в транзакции методы пока что не оборачивал.
а вот насчет этого можно поподробнее ? Как посмотреть и зачем ? Это сообщение отредактировал(а) 4epT - 13.7.2011, 10:52 |
||||
|
|||||
Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: 3 Всего: 5 |
Да сделай так, чтобы тот же DAO реализовывал интерфейс ApplicationContextAware. Он добавит метод, где присваивается applicationContext, сохрани его в какое-нибудь поле класса. Затем в методе, который можешь вызвать, брось брекпоинт. А в отладке на брекпоинте через watch можно повызывать метод getBean с разными параметрами у контекста. Он будет возвращать бины. Так можно проверить, существуют ли бины в контексте, в каком количестве и какой у них класс... Короче можно посмотреть что творится с контекстом в рантайме.
-------------------- Таково моё общее мнение. |
|||
|
||||
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: 3 Всего: 3 |
Хорошо, попробую .. и отпишусь о результате ) Спасибо! P.s. я надеюсь это ведь делается только для отладки ?) |
|||
|
||||
Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: 3 Всего: 5 |
applicationContext бывает удобно получать бинам-синглтонам, чтоб они могли выдёргивать из контекста прототипы и сессионные бины...
-------------------- Таково моё общее мнение. |
|||
|
||||
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: 3 Всего: 3 |
А чем удобнее выдергивать бины из контекста, чем сразу описать нужные бины полями в классе ?
|
|||
|
||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Получишь такой баг как "Scope Impedance". Выйдет ситуация такая: твой бин в scope="singleton" "проаутоварится" бинами в более низком scope только один раз - при инициализации. И зашарит эти поля для всех конечных пользователей. -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: 3 Всего: 3 |
Не очень понятно насчет бага ... в конечном счете он все равно про инициализирует эти поля и с этими полями можно будет нормально работать.
Например я ведь могу сделать singleton класс, в котором будут "аутоварится" все бины (к примеру Dao классы). все бины сделать static, и через этот класс всегда доставать нужный мне бин ... как тут проявится этот баг ? |
|||
|
||||
MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
4epT,
Ты привел пример, когда все бины у тебя сервисы. А вот что ты будешь делать, если у тебя этот синглетонный сервис на этапе вызова должен обслужить сессионные данные конкретного пользователя? Сначала почитай , а потом ругайся -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: 3 Всего: 3 |
Ты меня не правильно понял. Я даже не пытался ругаться =) Я знал что я не прав, но мне хотелось понять когда именно проявляется этот баг. теперь все понятно. спасибо. |
|||
|
||||
Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: 3 Всего: 5 |
клерик всё грамотно задвинул )
-------------------- Таково моё общее мнение. |
|||
|
||||
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: 3 Всего: 3 |
Хм, очень интересно ) сделал все как вы посоветовали ... в момент вызова любого метода dao класса у меня applicationContext = null.
Вот код инициализации ApplicationContext:
сам arg0 - не пустой, в нем есть множество бинов .... в том чсиле и бин "countryDaoImpl" - это класс помеченный аннотацией @Repository. Так же в arg0 есть и бин - "sessionFactory", проинициализирован он вроде нормально (не null, хотя многие поля там все таки null, но мне кажется что так и должно быть). так же хочется заметить что в момент вызова метода "setApplicationContext" sessionFactory не null. Где то у меня происходит повторная инициализация либо какой то баг с временем жизни этого бина, хотя если время жизни бина заканчивается повторная его инициализация должна ведь заного все поля обносить. Поправьте если я ошибаюсь. Это сообщение отредактировал(а) 4epT - 14.7.2011, 00:02 |
|||
|
||||
Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: 3 Всего: 5 |
У тебя DAO точно через контекст создаётся?... Для любого бина созданного в контексте и меющего интерфейс ApplicationContextAware вызывается метод setApplicationContext...
Кажется, как будто ты DAO вне контекста создал... Это сообщение отредактировал(а) Farmazon - 14.7.2011, 05:40 -------------------- Таково моё общее мнение. |
|||
|
||||
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: 3 Всего: 3 |
setApplicationContext у меня вызывается в момент когда стартует томкет, это означает что этот бин создается именно в контексте ?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |