Как интегрировать кварцевый планировщик в приложение "Джерси" - PullRequest
0 голосов
/ 22 сентября 2018

Я новичок в планировании задач с помощью Quartz API JAVA.В настоящее время я разрабатываю веб-сервис с использованием API Джерси.Веб-сервис работает в Apache Tomcat 9. Для своих нужд я должен планировать периодические задачи.Но тест, который я выполняю, похоже, не работает.

Это содержимое класса App, которое запускает планировщик с основной задачей.

import org.glassfish.jersey.servlet.ServletContainer;
import org.glassfish.jersey.servlet.WebConfig;
import org.quartz.*;
import org.quartz.impl.JobDetailImpl;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.triggers.SimpleTriggerImpl;

import javax.servlet.ServletException;
import java.util.Date;
import java.util.logging.Logger;

public class App extends ServletContainer
{
    public class CustomJob implements Job
    {
        @Override
        public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException
        {
            Logger.getLogger("").info("date : "+ new Date().toLocaleString());
        }
    }

    protected void init(final WebConfig webConfig) throws ServletException
    {
        super.init(webConfig);
        StdSchedulerFactory factory = new StdSchedulerFactory() ;
        try
        {
            Scheduler scheduler = factory.getScheduler();
            //Creating Job and link to our Job class
            JobDetailImpl jobDetail = new JobDetailImpl();
            jobDetail.setName("First Job");
            jobDetail.setJobClass(CustomJob.class);

            //Creating schedule time with trigger
            SimpleTriggerImpl simpleTrigger = new SimpleTriggerImpl();
            simpleTrigger.setStartTime(new Date(System.currentTimeMillis() + 1000));
            simpleTrigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
            simpleTrigger.setRepeatInterval(3200);
            simpleTrigger.setName("FirstTrigger");

            scheduler.scheduleJob(jobDetail, simpleTrigger);
            scheduler.start();
        }
        catch (Exception e)
        {
           e.printStackTrace();
        }
    }
}

My web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>opentrade</display-name>
  <servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>
      com.blitzdev.opentrade.App
    </servlet-class>
    <init-param>
      <param-name>jersey.config.server.provider.packages</param-name>
      <param-value>com.blitzdev.opentrade.rest</param-value>
    </init-param>

    <init-param>
      <param-name>jersey.config.server.provider.classnames</param-name>
      <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/api/*</url-pattern>
  </servlet-mapping>
<!--
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>securedapp</web-resource-name>
      <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
      <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
  </security-constraint>
-->
</web-app>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...