java restful_Java EE中的RESTful计时器

java restful

在这篇文章中...。

  • EJB计时器旋风之旅
  • 通过带有示例实现的简单REST接口即时使用EJB计时器
更新(2015年7月14日)

该应用程序的前端现在可以在OpenShift上使用 。 由于我是前端新手,因此我在其他来源的帮助下组装了此HTML5 + AngularJS应用程序:)因此,它可能有些笨拙。 在我尝试改善此问题的同时,请多包涵!

在用户界面中,您可以:

  • 查看所有活动计时器
  • 创建一个计时器
  • 取消计时器
更新(2015年7月14日)

如果您需要自动创建计时器,则EJB @Schedule注释会派上用场。 可以使用类似cron的表达式来配​​置适当的时间表。 如果您需要更多的灵活性,可以使用旧的TimerService来作为一种魅力。

快速背景

  • EJB 2.1中引入了TimerService接口[是的.. J2EE天! ;-)]
  • 用于以编程方式创建Timer对象
  • 用于与TimedObject接口[EJB 3.0之前的版本]的实现配合使用,以用作计时器触发器的回调
  • 从EJB 3.0开始, @ Timeout批注用于标记(无状态/单例/消息驱动)Bean中的方法,以充当EBJ容器中的计时器回调的接收者。
  • EJB 3.1中引入了ScheduleExpression ,使事情得到了进一步的改善,它允许细粒度的计时器调度–这与@Schedule在程序上等效

EJB Timer相关组件(快速参考)

RESTful计时器

可以轻松地公开一个简单的RESTful接口,以与EJB Timers一起使用。 创建计时器,获取计时器详细信息以及取消计时器等操作可以即时执行。

这个Github项目提供了一个简单的实现。 这是一个基于Netbeans的简单Java EE 7 Maven项目。 您应该能够轻松进行设置。

这是要点
  • POST请求以计划计时器(代表计划配置的JSON / XML有效负载)
    @POST
    @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public Response schedule(@HeaderParam("name") final String timerName, final ScheduleConfiguration config) {
        auditScheduler.schedule(from(config), new TimerConfig(timerName, config.isPersistent()));
        return Response.created(UriBuilder.fromResource(AuditSchedulerResource.class).path(timerName).build(timerName)).build();
    }
  • 获取所有活动计时器及其各自的详细信息(JSON / XML表示形式)
    @GET
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public Response getAllTimers() {
        List<String> ejbTimers = auditScheduler.getAllTimers();
        List<ScheduledTimerInfo> timers = ejbTimers.stream().map((id) -> auditScheduler.getTimerInfo(id)).collect(Collectors.toList());
        GenericEntity<List<ScheduledTimerInfo>> entities = new GenericEntity<List<ScheduledTimerInfo>>(timers) {};
        return Response.ok(entities).build();
    }
  • 获取特定计时器的信息(JSON / XML表示形式)
    @GET
    @Path("{id}")
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public Response getTimerInfo(@PathParam("id") String name) {
        ScheduledTimerInfo info = auditScheduler.getTimerInfo(name);
        return Response.ok(info).build();
    }
  • 删除(取消)现有计时器
    @DELETE
    @Path("{id}")
    public void cancel(@PathParam("id") String name) {
        auditScheduler.cancel(name);
    }
  • 使用带有JAXB注释的POJO表示调度程序配置详细信息
  • 利用Java EE 7中的默认JSON支持

WADL应该讲故事:

宁静的ejb计时器wadl

干杯!

翻译自: https://www.javacodegeeks.com/2015/07/restful-timers-in-java-ee.html

java restful

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值