|
|
|
автостарт приложения. Tomcat, Spring, Hibernate
|
|||
|---|---|---|---|
|
#18+
Коллеги, Есть автономное приложение которое крутиться под tomcat'ом. Управление приложением осуществляется через spring mvc в связке с hibernate (грубо говоря через базу данных). Хочется чтобы приложением при старте tomcat'а запускалось автоматически(выполнялся метод, который в свою очередь уже запустит нужные thread) Я знаю два способа: 1) В web.xml через параметр <load-on-startup>1</load-on-startup> это вызывает метод init(). Но данный способ как я понял из документации был придуман для сервлетов. А у меня ни разу не сервлет (приложение никому ничего не отвечает, оно крутит ряд потоков ) 2) Через ServletContextListener. Но опять же запуск ContextListener происходит в сааам начале tomcat'а до того как происходит связка бинов. Что тоже не есть круто. Так как моё приложение хочет использовать бины. Будь те добреньки, подскажите пожалуйста как все таки запускать такие приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 17:28:23 |
|
||
|
автостарт приложения. Tomcat, Spring, Hibernate
|
|||
|---|---|---|---|
|
#18+
Как это Spring MVC и без сервлетов. :) Чем вас не устраиваюи всякие спринговые @PostConstruct, init-method и т.п.? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 17:37:54 |
|
||
|
автостарт приложения. Tomcat, Spring, Hibernate
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Сервлеты то есть. Но бизнес-логика же не в сервлете) А особенность моей бизнес-логики в том, чтобы она начинала работать без вмешательства человека. Если вмешательство человека необходимо, то оно осуществляется через веб, т.е. через сервлеты) Ща почитаю про PostConstruct) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 17:47:29 |
|
||
|
автостарт приложения. Tomcat, Spring, Hibernate
|
|||
|---|---|---|---|
|
#18+
Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 17:47:46 |
|
||
|
автостарт приложения. Tomcat, Spring, Hibernate
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Спасибо за наводку, не знал об этой аннотация. Но она черт возьми не подходит( Дело в том что как метод с PostConstruct аннотацией не может стартовать Hibernate Session'ию. Почему не может написано детально вот тут http://forum.springsource.org/showthread.php?58337-No-transaction-in-transactional-service-called-from-PostConstruct. pasha701, Тоже спасибо за наводку. Сейчас усиленно читаю доки по этому поводу. Я так понимаю надо создать класс похожий вот на это Код: java 1. 2. 3. 4. 5. 6. Но в документации ( http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#context-functionality-events) сказано, что для того чтобы сработал этот эвент нужно чтобы интерфейс ApplicationContext вызвал метод start() интерфейса ConfigurableApplicationContext. Но черт возьми) как заставить ApplicationContext вызвать этот метод?) Пытался так Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. и ничего хорошего) эксепшен говорит вначале нужно вызывать метод reload(); Пробовал с reload(); старт приложения уходит в глубокий луп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 21:30:33 |
|
||
|
автостарт приложения. Tomcat, Spring, Hibernate
|
|||
|---|---|---|---|
|
#18+
tepkaДело в том что как метод с PostConstruct аннотацией не может стартовать Hibernate Session'ию. Почему не может написано детально вот тут http://forum.springsource.org/showthread.php?58337-No-transaction-in-transactional-service-called-from-PostConstruct. Не особо там объясняется. Если бин использует хибер, то от зависит от SessionFactory или HibernateTemplate, которые зависят от TransactionManager. Вся эта лабуда должна быть проинициализирована. Опять же в теме написано и про TransactionTemplate, как способ решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 21:49:35 |
|
||
|
автостарт приложения. Tomcat, Spring, Hibernate
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНе особо там объясняется. Если бин использует хибер, то от зависит от SessionFactory или HibernateTemplate, которые зависят от TransactionManager. Вся эта лабуда должна быть проинициализирована. Опять же в теме написано и про TransactionTemplate, как способ решения. "...no way to ensure that all the post processing is already done, so (indeed) there can be no Transactions..." Да эта вся лабуда хибером связанная инициализируется к моменту когда выполняется метод init(). Эт я как в логах вижу, так и в дебаггере. Но вот на аннотацию @Transactional() методу init() по барабану. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. workaround'ы то я нашел (как один из вариантов это TransactionTemplate). Но это все как то кривовато) Буду дальше копать в сторону ContextStartedEvent, ведь по логике мне именно и нужен этот эвент. Но достучатся до него пока не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2012, 22:28:57 |
|
||
|
автостарт приложения. Tomcat, Spring, Hibernate
|
|||
|---|---|---|---|
|
#18+
tepkaХочется чтобы приложением при старте tomcat'а запускалось автоматически(выполнялся метод, который в свою очередь уже запустит нужные thread) Эти thread'ы не реализует работу, которая должна вестись по таймеру? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 11:52:41 |
|
||
|
автостарт приложения. Tomcat, Spring, Hibernate
|
|||
|---|---|---|---|
|
#18+
Вот здесь сказано что проблема в том что PostConstruct вызов идёт мимо прокси. https://jira.springsource.org/browse/SPR-6002 Можно попробовать разделить на 2 бина. Один для вызова PostConstruct, а второй для выполнения самой Transactional операции. Вот в этом случае вызов должен пойти через прокси и проблемы не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 11:58:36 |
|
||
|
автостарт приложения. Tomcat, Spring, Hibernate
|
|||
|---|---|---|---|
|
#18+
tepka, какой нафик Бизнес-метод, если ты привязываешь всё к старту томката. Т.е. грубо к старту АппСервера. Это другой уровень окружения. Если это Админское приложение, тогда другое дело. Но IMHO кривое обоснование велосипеда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2012, 12:18:58 |
|
||
|
|

start [/forum/search_topic.php?author=guest2122&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
15ms |
get forum list: |
26ms |
get settings: |
19ms |
get forum list: |
23ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
55ms |
get topic data: |
22ms |
get forum data: |
6ms |
get page messages: |
95ms |
get tp. blocked users: |
3ms |
| others: | 613ms |
| total: | 893ms |

| 0 / 0 |
