Как выполнить некоторый код в определенное время на сервере ..? - PullRequest
2 голосов
/ 20 февраля 2012

Например, я должен выполнить код после 10 минут каждой записи в базе данных. Как всякий раз, когда клиент добавляет новую строку в базу данных, через 10 минут мне нужно выполнить метод.

Заранее спасибо .. !!

Ответы [ 4 ]

1 голос
/ 20 февраля 2012

Это зависит от вашего приложения.

Если вы используете только сервлеты и jsps и не используете EJB, кластеризацию и т. Д., Просто создайте java.util.Timer и добавляйте туда задачу каждый раз, когда вы обновляете БД,Таймер запустит задачу в соответствии с расписанием.

Если вы разрабатываете более «серьезное» приложение, вы можете использовать Quartz.

Другой возможный подход - использование отложенных сообщений JMS.Подробнее см. здесь .

И следующий, самый сложный подход - использование JCA.Вы можете создать компонент JCA, который имеет «легальный» доступ к опросу потоков и таймеру сервера приложений.

1 голос
/ 20 февраля 2012
Timer timer = new Timer();

Создайте таймер и задачу для каждой записи в БД следующим образом.

TimerTask task = new TimerTask(){
    public void run()
    {
    //execute the code for every 10 mins
    }
}
timer.scheduleAtFixedRate(task, 0, 10 * 60 * 1000); // period is  10 mins 
1 голос
/ 20 февраля 2012

Используйте задание cron, cron - это планировщик заданий, основанный на времени, который позволяет вам периодически запускать код в определенное время или даты.

http://en.wikipedia.org/wiki/Cron

Например, каждые 10 минут запускается «dosomething.sh».

*/10 * * * * /home/me/dosomething.sh

Примеры: http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/

0 голосов
/ 20 февраля 2012

Это зависит от того, насколько точными должны быть ваши «10 минут после того, как пользователь входит в ряд». Ключевым моментом будет привязка «задачи», которую вы хотите выполнить, к данным триггера. Таким образом, вы, вероятно, захотите добавить какой-либо идентификатор транзакции к данным. Затем вы можете добавить отметку времени к этим данным транзакции, а затем запланировать событие, которое будет периодически проверяться (скажем, каждые 15 секунд), и, если обнаружится какая-либо транзакция, которая только что прошла свою 10-минутную отметку, выполните следующий шаг.

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