繁体   English   中英

java-如何使用JAX-RS每两分钟发送一次Http POST请求?

[英]java - How to send Http POST request at every two minutes using JAX-RS?

我正在开发服务器端Web服务代码。 我正在使用JAX-RS作为开发框架。

到目前为止,我已经创建了模型类和资源类,以将请求的数据响应给客户端。

样本资源方法...

@GET
@Path("/{userId}")
@Produces(MediaType.APPLICATION_JSON)
public User getUserDetails(@PathParam("userId") long id) {
    ..
    // some code here //
    ..
}

基本上,服务器响应数据或执行某些操作取决于客户端调用的URI。

我想在服务器启动后每两分钟向第三方服务器发出Http POST请求。 但是我不知道应该在哪里编写该代码(如我所说,方法的执行取决于被调用的URI)。

因此,我应该在哪里编写在服务器启动时开始执行并在服务器停止时结束的代码。

如何每两分钟发送一次Http请求?

您应该能够结合使用Quartz和ServletContextListener来做到这一点。

您将需要创建一个作业,触发器和调度程序以使您的代码每两分钟运行一次,并且需要一个实现ServletContextListener接口的侦听器类。

您的代码如下所示:

职位类别:

 package com.example;

    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;

    public class ExampleJob implements Job
    {
        public void execute(JobExecutionContext context) throws JobExecutionException {
                // Code to make POST call here
    }

ServletContextListener

package com.example;

public class ExampleListener implements javax.servlet.ServletContextListener {

   public void contextInitialized(ServletContext context) {
      JobDetail job = JobBuilder.newJob(ExampleJob.class)
            .withIdentity("exampleJob", "group").build();
      // Trigger
      Trigger trigger = TriggerBuilder
            .newTrigger()
            .withIdentity("exampleTrigger", "group")
            .withSchedule(
                SimpleScheduleBuilder.simpleSchedule()
                    .withIntervalInSeconds(120).repeatForever())
            .build();
      // Scheduler
        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);

   }
}

并将其添加到web.xml中:

<listener>
    <listener-class>com.example.ExampleListener</listener-class>
</listener>

或者,如果您使用的是Servlet容器3.x,则可以通过使用@WebListener注释侦听器类来跳过web.xml修改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM