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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как заставить Томкат не делать конекшинов 
:(
    Опции темы
Andy_L20066
Дата 23.11.2009, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Привет, есть вопрос, может чего посоветуете...

Есть клиент на С++ который конектится к серверу на джаве (апликуха под Томкатом); но апликуха долго стартует, поднимает базу, делает всякие там инициализации... соответсвенно клиент простаивает, и ждет ответа от сервера, а ответ не приходит пока сервер полностью не поднимет апликацию. Задача поставлена так что на клиенте ничего менять нельзя, нужно сделать изменение на сервере. У кого какие идеи на этот счет?
PM MAIL ICQ   Вверх
Egik2
Дата 23.11.2009, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В чем то вопрос собственно, не совсем понял.
Tomcat не должен соединяться с БД, или что?



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


Бывалый
*


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

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



вопрос в том как отфутболить клиента сразу, чтобы он не ждал кучу времени на риспонс, поскольку сервер долго поднимает апликуху..

Добавлено через 10 минут и 34 секунды
Решил более подробно описать проблему и свои мысли: серверная апликуха вмещает ApplicationContextListener, в котором собственно и выполняется вся загрузка при старте апликухи: 

Код

public class ApplicationContextListener
        implements ServletContextListener
{

    
    public void contextInitialized(ServletContextEvent event) {
        try {

итак запускаем сервер, грузится Томкат, запускается метод contextInitialized, в этот момент клиент пишет серверу: "Привет", но сервер не может сразу что-то ответить, а отвечает через 20-30 секунд, соответсвенно клиент ждет, и потом по таймауту (на стороне клиента) говорит что идет в офлайн. 
Надо как-то заставить сервер сразу сказать клиенту, что я мол еще не готов, и никаких конекшинов делать нельзя. Тут как я понимаю клиент всетаки по сокету соединяется с сервером...

может подскажите какие-то тулзы для мониторинга Томката, чтоб более подробно можно было посмотреть чего там грузится и что творится...

Томкат - древний 5.0 ну и Java 1.4... короче ужас какой то smile 
PM MAIL ICQ   Вверх
ming
Дата 23.11.2009, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



вынести инициализацию в отдельный thread, а в сервлете, на который клиент делает запрос (привет) проверять некий флаг, который фальшив пока идёт инициализация и истиннен после её окончания. 
Или архитектура иная, без сервлетов?
PM MAIL ICQ Jabber   Вверх
Andy_L20066
Дата 23.11.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ну архитектура на сервлетах, только вот инициализацию в отдельный тред - тяжеловато будет вынести, тут очень много кода, надо как-то проще сделать... может можна будет обойтись флагом, и проверять стартанул Томкат или нет

Добавлено @ 17:27
только вот как я вижу сервлет этот на который приходят сообщение инициализируется только после того как апликуха окончательно поднимется...  smile 

то есть после выполнения метода contextInitialized... иначе клиент просто ждет, посылает риквест - и ничего... ждет пока оно поднимется

Это сообщение отредактировал(а) Andy_L20066 - 23.11.2009, 17:28
PM MAIL ICQ   Вверх
COVD
Дата 23.11.2009, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

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



Цитата

Есть клиент на С++ который конектится к серверу на джаве (апликуха под Томкатом); но апликуха долго стартует, поднимает базу, делает всякие там инициализации... 

Никакой изнурительной инициализации в приложении желательно не делать. Приложение должно уметь обработать http запрос, т.е. принять и отослать, т.е. распарсить http хедеры запроса, извлечь куки если нужно и обернуть ответ в http. И все. Готовить ответ может другое приложение. Если для формирования ответа на запрос нужно соединение с БД, которое долго инициализируется, то пусть это соединение обеспечивает или сам Томкат (его-то вы же не рестартуете всякий раз) или другое приложение (сервис), которому сервлет может послать запрос через RMI, например.      


Это сообщение отредактировал(а) COVD - 23.11.2009, 18:43
PM MAIL   Вверх
Andy_L20066
Дата 23.11.2009, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



согласен.... но не от меня зависит этот процес, тоесть никто мне не даст переписать все по другому

Добавлено через 8 минут и 45 секунд
я правильно понимаю: этот лисенер (ApplicationContextListener) прописан в конфигурации web.xml и пока вот этот метод contextInitialized не вернет значение, сервлеты не инициализируются (не считиваются из web.xml)?

так может както поменять возмножно либо написать еще один сервлет который бы грузился где-то до того как завершится contextInitialized?
PM MAIL 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.0465 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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