java ee的小程序

最初,我想将此博客称为“ 具有拦截器驱动的重试策略灵活超时 ”,但后来我认为它太“繁重”。 该声明以及修改后的标题应该(希望)使您了解此帖子可能谈论的内容;-)

触发

这篇文章主要由我在较早的一篇文章中收到的评论/问题之一驱动,其中简短地讨论了超时机制以及如何使用它们为有状态和Singleton EJB定义“并发策略”。

问题

虽然超时是在EJB容器中强制执行并发策略和控制资源分配/使用的好方法,但是当超时不一致且不可预测时,就会出现问题。 那么,您如何配置超时策略呢?

当然,没有完美的解决方案。 但是,我想到的一项工作是“ 重试 ”失败的方法(这对于您的给定方案可能不适当或不可能,但如果用例允许,则可以应用)。 这是“ 跨领域 ”关注(换句话说就是“ 方面 ”)的一个很好的例子。 为此,Java EE的答案是– Interceptors 。 这些要比默认的“ 带有try-catch块的rinp-repeat-until-xyz ”更好,因为

  • 代码重用
  • 灵活性

要点(解决方案)

这是高级描述( 代码可在Github上获得 )

  • 定义一个简单的注释,表示“重试策略元数据”,例如重试次数

  • 定义具有实现的重试器以重试目标方法-这将使用上述“重试策略”元数据并相应地执行操作

  • 将此拦截器附加到所需的方法(调用方)

  • (可选)使用@InterceptorBinding

样例代码

  • 使用Singleton EJB模拟示例服务,并通过显而易见的Thread.sleep()引入延迟(当然,这在Java EE容器中是禁止的)
  • 使用JAX-RS资源,该资源注入并调用Singleton EJB,并且是根据“策略”进行“重试”的候选对象
  • 可以通过在任何兼容Java EE(6或7)的服务器上部署并使用Apache JMeter模拟并发客户端/请求进行测试(在http:// serverip:port / FlexiTimeouts / test上调用HTTP GET)

如果没有重试(拦截器)配置,则测试(针对并发请求)将导致HTTP超时(408)。

一旦重试拦截器被激活,就会有一些延迟,因为一旦失败,任务将自动重试。 当然,这将取决于(并发请求的)数量,并且需要相应地调整阈值–对于高度并发的环境,阈值较高(通常,并非理想情况)

其他想法

  • 在代码中定义阈值或重试策略不是强制性的。 也可以将其外部化(以使事情更灵活),例如,使用@RetryPolicy指向包含所需策略元数据的文件
  • 重试阈值不是唯一可配置的属性。 您可以具有其他条件,并在拦截器逻辑中使用它
  • 可以公开与成功/失败/重试有关的统计信息。 最好以异步方式执行此操作(通过@Async EJB将其推送到JMX?),这样就不会妨碍Interceptor自身的性能。

干杯!

翻译自: https://www.javacodegeeks.com/2015/11/implementing-auto-retry-in-java-ee-applications.html

java ee的小程序

java ee的小程序_在Java EE应用程序中实现自动重试相关推荐

  1. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  2. java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题

    在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...

  3. java ee的小程序_扩展Java EE应用程序的基础

    java ee的小程序 老实说,"可扩展性"是一个详尽的主题,并且通常没有被很好地理解. 通常,它被认为与高可用性相同. 我已经看到新手程序员和"经验丰富"的建 ...

  4. java ee 程序_第一个 JavaEE 应用程序 - JavaWeb 入门开发教程

    第一个 JavaEE 应用程序 JavaEE 是 Java Web 开发当中事实上的标准,诸多框架也都是建立在 JavaEE 的 API 基础之上的.为了从头理解 Java Web 开发,我们将从一个 ...

  5. 在JAVA中 以下程序_在Java中,以下程序的输出结果是()_学小易找答案

    [单选题]运行以下Java代码,说法正确的是( ). [单选题]在Java中,以下程序的输出结果是() [单选题]利用"出声"的方式向学生展示教师分析问题的过程与方法的教学方法是_ ...

  6. java 提醒小工具_【JAVA】一个简单的定时提醒小程序

    [Java] 纯文本查看 复制代码import javax.swing.JOptionPane; public class Test { public static void main(String[ ...

  7. 黑马ee在职进阶视频_进阶– Java EE 7前端5强

    黑马ee在职进阶视频 系列继续. 在初步概述和Arjan关于最重要的后端功能的文章之后 ,我现在非常高兴让Ed Burns( @edburns )使用他最喜欢的Java EE 7前端功能完成本系列. ...

  8. java ee 的使用方法_改善Java EE生产支持技能的8种方法

    java ee 的使用方法 参与Java EE生产支持的每个人都知道这项工作可能很困难. 7/24寻呼机支持,多个事件和错误修复(要定期处理),来自客户和管理团队的压力,要求它们尽快解决生产问题并防止 ...

  9. java质数和合数的程序_《java项目实训》课程设计计算器.doc

    <java项目实训>课程设计计算器.doc 课程设计报告课程名称JAVA项目实训课程设计设计名称基于JAVA计算器的设计与实现学生学号学生姓名学生学号学生姓名学生学号学生姓名学生学号学生姓 ...

最新文章

  1. [转] PuTTY + Xming 远程使用 Linux GUI
  2. STM32低功耗模式下GPIO如何配置最节能?
  3. Java 编程开始啦
  4. c# redis hashid如何设置过期时间_Redis数据库实现原理(划重点)
  5. python中if的效率_Python 代码性能优化技巧
  6. 批量生成印刷字体字库
  7. ArrayList如何对某个对象的日期属性排序?
  8. 大数据系统和分析技术综述(引用最多)
  9. Oracle 索引的分类
  10. 中兴设备交换机路由器清除清理指定接口计数的统计信息命令
  11. Excel快速删除空白行与调整行高列宽的方法,学会了很实用
  12. 使用USB充电的5号电池
  13. 郑捷《机器学习算法原理与编程实践》学习笔记(第六章 神经网络初步)6.3 自组织特征映射神经网路(SOM)...
  14. MySQL 从删库到跑路
  15. 股票做空是什么意思?股票做空和做多是什么意思?
  16. 岭南东方品牌连签两店,持续发力旅游目的地
  17. 25、使用Baidu的paddle自动进行验证码的识别、并计算验证码的数值
  18. nodejs+vue音乐网站与分享平台
  19. 阿里云开发——Node JS模拟钢琴的开发与部署
  20. ANTLR4(十三)解决歧义性总结

热门文章

  1. P3337-[ZJOI2013]防守战线【单纯形】
  2. bzoj1791,P4381-[IOI2008]Island【基环树,树形dp,单调队列dp,树的直径】
  3. POJ2115-C Looooops【扩欧,同余】
  4. 2021牛客暑期多校训练营2 L-WeChat Walk(分块)
  5. Boring Homework 二叉搜索树的打印,模拟
  6. SpringCloud Ribbon(五)之服务实例列表ServerList
  7. 6 道 BATJ 必考的 Java 面试题
  8. 自定义ClassLoader和双亲委派机制
  9. 大家都在说的分布式系统到底是什么
  10. Junit5新功能一览