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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Tomcat+java.util.Timer, не опнимаю почему так работает 
:(
    Опции темы
bio_hazard
Дата 2.6.2009, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Никогда не работал с java.util.Timer, сегодня решил попробовать. Написал небольшой пример, вроде получилось, но появилось некоторые "особенности". Таймер запускаю из сервлета в томкате. Вот код:
Код

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Timer;

/**
 *
 * @author bio_hazard
 */
public class index extends HttpServlet {

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        Timer timer = new Timer();
        timerProcess task = new timerProcess();
     
        timer.schedule(task, 500, 1000);



    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}




а вот объект, экземпляр которого за пускается "по таймеру". 

Код


package testTimerJsp;

import java.util.TimerTask;

/**
 *
 * @author bio_hazard
 */
public class timerProcess extends TimerTask {

    @Override
    public void run() {
        System.out.println("15 метод");
    }

}



Запускаю все пока из нетбинса, после запуска в консоле пишется "15 метод" бесконечное кол-во раз. Это нормально, я и предпологал такую работу. Странности (на мой взгляд) начинаются потом, из томката я удаляю данное приложение. Но строки продолжают печататся. А если изменить строку на "16 метод" и заново запустить то в консоле будет "15 метод" чередоваться с "16 метод" и так до бесконечности. Такую работу я не предпологал. Кто нибуть сможет объяснить почему так происходит?
PM MAIL   Вверх
Kangaroo
Дата 2.6.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Цитата(bio_hazard @  2.6.2009,  13:44 Найти цитируемый пост)
Странности (на мой взгляд) начинаются потом, из томката я удаляю данное приложение. Но строки продолжают печататся. А если изменить строку на "16 метод" и заново запустить то в консоле будет "15 метод" чередоваться с "16 метод" и так до бесконечности. Такую работу я не предпологал. Кто нибуть сможет объяснить почему так происходит? 

Если ты не останавливаешь Томкет (точнее JVM), то и таймер будет продолжать работать.


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


Опытный
**


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

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



Я хотел приспособить таймер для обработки писем. Но если мне понадобится допустим поменять интервал запуска, я перекомпилирую приложение, и заново задеплою его на томкат то старый таймер будет продолжать тикакть, выполняю ту же работу что и новый, чем будет вызывать конфликт ?
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.0401 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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