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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как оптимизировать работу сервлета 
V
    Опции темы
Samotnik
Дата 23.10.2007, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


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

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



Значит есть следущее:
Сервлет
Код

public class SayHello extends HttpServlet {
    private static final Logger log = Logger.getLogger(SayHello.class);
    MessageService msgService = new MessageService();

    public void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String message = request.getParameter("Name");
        log.debug("message = " + message);

        request.setAttribute("fromServlet", msgService.getTimeBasedPrefixMessage(message));

        log.info("Info log message:))))   ");
        request.setAttribute("MessageType", request.getMethod());
        request.getRequestDispatcher("/indexPast.jsp").forward(request, response);
    }
}

и класс MessageService  (обычный) в котором, тупо передается приветствие в зависимости от времени суток (к примеру Доброе утро, ..      Добрый день, ....    и т.д.)
Код

public class MessageService {
    private static Logger log = Logger.getLogger("log4j.properties");

    MessageService() {
    }

    public String getTimeBasedPrefixMessage(String name) {
        String messageOfDay;
        Calendar cal = new GregorianCalendar();

        int hour = cal.get(Calendar.HOUR_OF_DAY);
        log.info("Time (hour): " + hour);

        if (hour <= 9)
            messageOfDay = "Good Morning, ";
        else if (hour <= 12 && hour >= 9)
            messageOfDay = "Good Day, ";
        else if (hour <= 17 && hour >= 12)
            messageOfDay = "Gootten  tag, ";
        else if (hour <= 24 && hour >= 17)
            messageOfDay = "Good  evening, ";
        else
            messageOfDay = "Good  night, ";

        log.info("Result message : " + messageOfDay);

        return messageOfDay + name;
    }

Любопытно кзнать на счет этой строки  MessageService msgService = new MessageService();  из сервлета!  Нужна ли она, а если нужна, то чем ее заменить, ведь если на мой сервер полезут 200  человек, то этот обьект для Каждого  будет создаваться заново, Так вот вопрос, как сделать что бы  оптимизировать эту строку (чтоб не создавался обьект каждый раз, когда  идет запрос на сервер ???)

Добавлено @ 18:08
Вобщем как заменить создание обьекта MessageService msgService = new MessageService();  на что нибудь  НЕ генерирующееся при каждом  запросе!!

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


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 8
Всего: 118



Так сделай метод static - тогда он будет вызываться без создания объекта.
PM MAIL WWW ICQ   Вверх
Samotnik
Дата 23.10.2007, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


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

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



AntonSaburov,   smile   Блин, попробывал - не работает!!!
пишу
Код

request.setAttribute("fromServlet", getTimeBasedPrefixMessage(message));

и есттно  его сделал  static ,  а  мне ошибка в ответ 
Cannot find symbol method  getTimeBasedPrefixMessage()
 smile 
PM MAIL   Вверх
AntonSaburov
Дата 23.10.2007, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 8
Всего: 118



Эй, ты чего.

static сделать для класса MessageService.

Код

class MessageService
{
   public static String getTimeBasedPrefixMessage(String name) 
   {
   .......
   }
}


А вызов внутри сервлета в таком виде

Код

request.setAttribute("fromServlet", MessageService.getTimeBasedPrefixMessage(message));

PM MAIL WWW ICQ   Вверх
Samotnik
Дата 23.10.2007, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


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

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



Прошу прощения, я ступил, нужно ведь имя класса  указывать!!!
PM MAIL   Вверх
Samotnik
Дата 23.10.2007, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


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

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



AntonSaburov,  Пасибо вам!  Способ классный, но сказали, что не совсем корректный!  Т.е. статик метод вызывает статик данные, и если 10 юзеров начнут их юзать, то с данными (или  сервером) что - то случиться!!  (Я точно не помню, но как-то так обьяснили)
Может есть еще какой нибудь способ вызвать метод из другого класса, не создавая его обьекта!!!
PM MAIL   Вверх
solve
Дата 23.10.2007, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



потому что не указал, метод какого класса вызываетсяsmile)
Вариант со статическим методом у меня заработал. но в любом случае внутри вызываемого метода будет каждый раз вызываться инициализация того же календаря и выигрыш в производительности будет невелик,поэтому его стоит сделать статической переменной класса 
PM MAIL   Вверх
Samotnik
Дата 23.10.2007, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


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

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



solve,  Я же написал, что я ступил, и все у меня заработало. Но заказчика, не устраивает такой вариант, т. к. он .....  ну в общем не устраивает он его.
Есть еще какие-нить предположения о том, как можно заменить создание обьекта и static  метод ??
PM MAIL   Вверх
Zamuta
Дата 23.10.2007, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
ведь если на мой сервер полезут 200  человек, то этот обьект для Каждого  будет создаваться заново


Да, будет создаваться заново, но если я не ошибаюсь, то неиспользуемые объекты удаляются сборщиком мусора. 

Samotnik, почитайте Брюса Эккеля и основные принципы ооп.


--------------------
Thank you opensource.
PM MAIL ICQ   Вверх
Kangaroo
Дата 24.10.2007, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Цитата

Так вот вопрос, как сделать что бы  оптимизировать эту строку (чтоб не создавался обьект каждый раз, когда  идет запрос на сервер ???)

Может от тебя хотят использование Singleton шаблона?
Почитай тут.
Ну или любую статью в интернете, по Синглтону их много


--------------------
Lost....
PM MAIL MSN   Вверх
Samotnik
Дата 24.10.2007, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


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

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



2 all
Всем спаисбо за участие, оказалось вообще  все просто. Нужно было просто создать обьект в методе Инит!!  Тогда, он походу будет ток один раз создаваться!  smile 

PM MAIL   Вверх
Kangaroo
Дата 24.10.2007, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Samotnik,
но про Синглетон ты все равно почитай smile, на будущее будет полезно.


--------------------
Lost....
PM MAIL MSN   Вверх
Samotnik
Дата 24.10.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


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

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



Kangaroo,  ок!  Спс!  smile 
PM MAIL   Вверх
fixxer
Дата 25.10.2007, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Samotnik @ 24.10.2007,  11:35)
2 all
Всем спаисбо за участие, оказалось вообще  все просто. Нужно было просто создать обьект в методе Инит!!  Тогда, он походу будет ток один раз создаваться!  smile

Сильно в этом сомневаюсь. Ну создашь ты его в ините и куда положишь? В поле сервлета? Нехорошо.

Добавлено через 1 минуту и 28 секунд
Я предлагаю по совету Zamuta забить. Не такой уж тяжелый объект. GC разрулит.


--------------------
user posted image
PM MAIL ICQ   Вверх
AlexeyVorotnikov
Дата 25.10.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Кстати, а с чего это вы взяли, что объект MessageService  будут создаваться при каждом запросе?


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0569 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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