java - 如何使用 JAX-RS 每两分钟发送一次 Http POST 请求?
java - How to send Http POST request at every two minutes using JAX-RS?
我正在开发服务器端网络服务代码。我正在使用 JAX-RS 作为开发框架。
到目前为止,我已经创建了模型 classes 和资源 class 来响应客户端请求的数据。
示例资源方法...
@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 接口的侦听器 class。
您的代码将如下所示:
工作Class:
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
注释侦听器 class 来跳过 web.xml 修改
我正在开发服务器端网络服务代码。我正在使用 JAX-RS 作为开发框架。
到目前为止,我已经创建了模型 classes 和资源 class 来响应客户端请求的数据。
示例资源方法...
@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 接口的侦听器 class。
您的代码将如下所示:
工作Class:
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