![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Andy_L20066 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 10.3.2008 Репутация: нет Всего: 1 |
Привет, есть вопрос, может чего посоветуете...
Есть клиент на С++ который конектится к серверу на джаве (апликуха под Томкатом); но апликуха долго стартует, поднимает базу, делает всякие там инициализации... соответсвенно клиент простаивает, и ждет ответа от сервера, а ответ не приходит пока сервер полностью не поднимет апликацию. Задача поставлена так что на клиенте ничего менять нельзя, нужно сделать изменение на сервере. У кого какие идеи на этот счет? |
|||
|
||||
| Egik2 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 302 Регистрация: 29.7.2008 Где: Агудзера Репутация: 2 Всего: 11 |
В чем то вопрос собственно, не совсем понял.
Tomcat не должен соединяться с БД, или что? -------------------- Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall) a-nav.com developer-blog.ru world-poetry.org |
|||
|
||||
| Andy_L20066 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 10.3.2008 Репутация: нет Всего: 1 |
вопрос в том как отфутболить клиента сразу, чтобы он не ждал кучу времени на риспонс, поскольку сервер долго поднимает апликуху..
Добавлено через 10 минут и 34 секунды Решил более подробно описать проблему и свои мысли: серверная апликуха вмещает ApplicationContextListener, в котором собственно и выполняется вся загрузка при старте апликухи:
итак запускаем сервер, грузится Томкат, запускается метод contextInitialized, в этот момент клиент пишет серверу: "Привет", но сервер не может сразу что-то ответить, а отвечает через 20-30 секунд, соответсвенно клиент ждет, и потом по таймауту (на стороне клиента) говорит что идет в офлайн. Надо как-то заставить сервер сразу сказать клиенту, что я мол еще не готов, и никаких конекшинов делать нельзя. Тут как я понимаю клиент всетаки по сокету соединяется с сервером... может подскажите какие-то тулзы для мониторинга Томката, чтоб более подробно можно было посмотреть чего там грузится и что творится... Томкат - древний 5.0 ну и Java 1.4... короче ужас какой то |
|||
|
||||
| ming |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 30.1.2009 Где: Новосибирск Репутация: нет Всего: 3 |
вынести инициализацию в отдельный thread, а в сервлете, на который клиент делает запрос (привет) проверять некий флаг, который фальшив пока идёт инициализация и истиннен после её окончания.
Или архитектура иная, без сервлетов? |
|||
|
||||
| Andy_L20066 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 10.3.2008 Репутация: нет Всего: 1 |
ну архитектура на сервлетах, только вот инициализацию в отдельный тред - тяжеловато будет вынести, тут очень много кода, надо как-то проще сделать... может можна будет обойтись флагом, и проверять стартанул Томкат или нет
Добавлено @ 17:27 только вот как я вижу сервлет этот на который приходят сообщение инициализируется только после того как апликуха окончательно поднимется... то есть после выполнения метода contextInitialized... иначе клиент просто ждет, посылает риквест - и ничего... ждет пока оно поднимется Это сообщение отредактировал(а) Andy_L20066 - 23.11.2009, 17:28 |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
Никакой изнурительной инициализации в приложении желательно не делать. Приложение должно уметь обработать http запрос, т.е. принять и отослать, т.е. распарсить http хедеры запроса, извлечь куки если нужно и обернуть ответ в http. И все. Готовить ответ может другое приложение. Если для формирования ответа на запрос нужно соединение с БД, которое долго инициализируется, то пусть это соединение обеспечивает или сам Томкат (его-то вы же не рестартуете всякий раз) или другое приложение (сервис), которому сервлет может послать запрос через RMI, например. Это сообщение отредактировал(а) COVD - 23.11.2009, 18:43 |
|||
|
||||
| Andy_L20066 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 10.3.2008 Репутация: нет Всего: 1 |
согласен.... но не от меня зависит этот процес, тоесть никто мне не даст переписать все по другому
Добавлено через 8 минут и 45 секунд я правильно понимаю: этот лисенер (ApplicationContextListener) прописан в конфигурации web.xml и пока вот этот метод contextInitialized не вернет значение, сервлеты не инициализируются (не считиваются из web.xml)? так может както поменять возмножно либо написать еще один сервлет который бы грузился где-то до того как завершится contextInitialized? |
|||
|
||||
![]()
|
| Правила форума "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. |