Сегодня 5 мая, воскресенье ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7272
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Записки Oracle-ойда
Записки Oracle-ойда
Голосов: 1
Адрес блога: http://stan1slav.blogspot.com/
Добавлен: 2011-07-16 14:20:30 блограйдером stan1slav
Принадлежит блограйдеру stan1slav
 

Планировщик заданий в Weblogic Server

2014-01-06 21:02:00 (читать в оригинале)

Рассмотрим реализацию на примере создания простейшего приложения (без использования внешних библиотек) с одним заданием, которое выполняется каждые 5 секунд и пишет в лог время выполнения.
  1. Открываем Oracle JDeveloper и создаём новое приложение (с именем SampleScheduler):
  2. Затем добавляем в проект необходимые библиотеки.
  3. Создаём новый класс задания (с именем HelloWorldJob):
     package com.blogspot.stan1slav.sample.jobs;  

    import commonj.timers.CancelTimerListener;
    import commonj.timers.Timer;
    import commonj.timers.TimerListener;

    import java.io.Serializable;

    import java.util.Date;

    public class HelloWorldJob implements Serializable, TimerListener,
    CancelTimerListener
    {
    private Date timerDate = null;

    public HelloWorldJob() {
    super();
    }

    public void timerExpired(Timer timer) {
    timerDate = new Date(timer.getScheduledExecutionTime());
    System.out.println("HelloWorldJob timer expired called on " +
    timerDate);
    }


    public void timerCancel(Timer timer) {
    timerDate = new Date(timer.getScheduledExecutionTime());
    System.out.println("HelloWorldJob timer cancelled called on " +
    timerDate);
    }

    }
  4. Создаём сервлет для старта/остановки задания, а так же автозапуска:
     package com.blogspot.stan1slav.sample;  

    import com.blogspot.stan1slav.sample.jobs.HelloWorldJob;

    import commonj.timers.Timer;
    import commonj.timers.TimerManager;

    import java.io.IOException;
    import java.io.PrintWriter;

    import java.util.Date;

    import javax.naming.InitialContext;

    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class JobsServlet extends HttpServlet {
    private Timer helloWorldJobTimer = null;
    private TimerManager tm = null;

    public void init(ServletConfig config) throws ServletException {
    super.init(config);
    System.out.println("InitJobsServlet is initialized ");

    try {
    InitialContext ic = new InitialContext();
    tm = (TimerManager)ic.lookup("java:comp/env/tm/TimerManager");
    helloWorldJobTimer =
    tm.schedule(new HelloWorldJob(), new Date(), 5000); //5 seconds

    } catch (Exception ne) {
    ne.printStackTrace();
    }
    }

    public void service(HttpServletRequest req,
    HttpServletResponse res) throws IOException {
    res.setContentType("text/html");
    PrintWriter out = res.getWriter();
    out.println("<h4>JobsServlet is working!</h4>");
    String cmd = req.getParameter("cmd");
    if (cmd != null && cmd.equals("cancel") && helloWorldJobTimer != null) {
    helloWorldJobTimer.cancel();
    helloWorldJobTimer = null;

    }
    if (cmd != null && cmd.equals("start") && helloWorldJobTimer == null) {
    helloWorldJobTimer =
    tm.schedule(new HelloWorldJob(), new Date(), 5000);

    }
    if (helloWorldJobTimer != null) {
    out.println("<h6>HelloWorldJob started</h6>");
    } else {
    out.println("<h6>HelloWorldJob calceled</h6>");
    }
    }
    }
  5. В web.xml прописать ссылку на ресурс (т.е. TimerManager):
     <?xml version = '1.0' encoding = 'UTF-8'?>  
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
    <servlet>
    <servlet-name>JobsServlet</servlet-name>
    <servlet-class>com.blogspot.stan1slav.sample.JobsServlet</servlet-class>
    <load-on-startup>100</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>JobsServlet</servlet-name>
    <url-pattern>/jobsservlet</url-pattern>
    </servlet-mapping>
    <resource-ref>
    <res-ref-name>tm/TimerManager</res-ref-name>
    <res-type>commonj.timers.TimerManager</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Unshareable</res-sharing-scope>
    </resource-ref>

    </web-app>
  6. Деплоим на сервер (как WAR-архив) и проверяем работоспособность
    1. Задание выполняется после деплоя:
    2. С использованием сервлета остановим выполнение задания (?cmd=cancel):
    3. В логе появилась запись об остановке (отмене) задания:
    4. С использованием сервлета стартуем снова задание (?cmd=start):
    5. В логе появились записи о выполнении задания:
Полезная информация:
  • JavaDoc-и;
  • Timer and Work Manager API (CommonJ) Programmer's Guide for Oracle WebLogic Server;
  • архив приложения описанного в данной статье.

Тэги: java, jdeveloper, weblogic

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по количеству голосов (152) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.