miles2run.org是跟踪跑步活动并与亲朋好友共享的简便方法。 可以创建然后跟踪基于天或基于距离的目标。 它还允许创建社区运行目标,并使多个跑步者参与并跟踪他们朝着该目标的活动。 您也可以找出本地跑步者并与他们联系。

该项目已开始,以帮助跟踪#JavaOneStreak的运行活动。 目标是每天一直运行至少一英里,直到JavaOne为止,并使用此网站跟踪运行情况。 有大量复杂的应用程序和网站,可让您跟踪跑步活动。 它们中的大多数都与您的GPS手表,手机GPS和其他精美功能集成在一起。 其中一些甚至允许创建组,但是它们都不基于Java!

该应用程序以网站的形式托管,并使用HTML5和Java EE 7构建。 着陆页提供了有关跑步者总数,其城市/国家/地区,英里和迄今为止记录的小时数的摘要。

可以在台式机,平板电脑或手机上查看该网站。 跑步者可以使用常见的社交中介(例如Facebook,Google和Twitter)登录该网站。

任何机构都可以单击右上角的“社区运行”,以查看到目前为止已创建的所有组运行 。 这些只能由管理员创建。 JavaOne的团体跑步页面显示了有多少跑步者参加了这次跑步及其他统计信息。

每个跑步者都会看到一个仪表板,显示他们到目前为止已经跑了多少距离以及总计/完成/剩余/缺席的天数。

显示了进度的可视化表示和活动日历的热图:

显示了几天的里程折线图:

然后还显示了过去几个月的活动摘要:

跑步者还可以跟随其他跑步者并跟踪他们的活动。

这是应用程序的概念图:

这是该应用程序的技术视图:

这是技术堆栈的简要说明:

  • 介绍

    • JAX-RS呈现的Thymeleaf模板引擎视图
  • 中间层
    • @Stateless EJB用于所有事务性JPA交互, @Asynchronous用于将状态发布到社交网络
  • 后端
    • 用于创建EntityManagers和其他配置对象(例如Redis连接池对象或MongoDB配置对象)的CDI生产者。

平台外部的技术:

  • JavaScript

    • D3.js和C3.js用于吸引人的图形
  • Google Geocoding API将位置文本转换为纬度和经度
  • Jadira用户类型 ,用于在UTC中存储日期
  • Joda-Time处理日期
  • 使用Thymeleaf代替JavaServer Faces是因为:
    • 允许JAX-RS用作MVC框架来呈现服务器端HTML页面和公开REST服务。
  • Redis用于存储所有计数器,例如跑步人数,城市,特定于目标的计数器(例如目标覆盖的总距离等)。为了避免从数据库中进行大量读/写操作,使用了内存数据库,因此所有读写操作非常高效。 Redis计数器是原子的,这意味着没有与此相关的并发问题。 INCR和INCRBY Redis操作用于更新计数器。
  • MongoDB用于位置数据。

工具集

  • JDK 8
  • 带有Maven的IntelliJ 13.1
  • Wildfly 8.1.0.Final –使用本地WildFly实例完成开发,然后将其推送到OpenShift上的可伸缩WildFly实例进行部署。 HA Proxy用作负载平衡器。使用OpenShift的优点是应用程序中没有特定于OpenShift的代码。 因此,在本地工作的同一应用程序已部署到测试和生产环境。 您只需要使用环境变量来抽象出特定于环境的配置。
  • Github

计划的更新

  • 使用Jenkins进行持续集成并管理部署
  • JPA 2.1转换器而不是Jadira
  • Keycloak代替本地社交经纪人
  • 开源应用程序

Java EE 8的愿望清单

  • 与OAuth提供程序集成
  • 真正的MVC框架,支持可插拔模板引擎
  • 无缝使用NoSQL数据库

立即下载WildFly 8.1 ,通过阅读/尝试Java EE 7示例学习该技术,浏览Java EE 7资源 。

或者,如果您想站在最前沿,请查看WildFly 9.0 。

非常感谢Shekhar Gulati( @shekhargulati )编写了应用程序并提供了所有答案!

翻译自: https://www.javacodegeeks.com/2014/09/log-your-miles-and-community-runs-java-ee-7-real-world-experience.html

记录您的里程和社区运行情况:Java EE 7真实体验相关推荐

  1. java学习里程碑_记录您的里程和社区运行情况:Java EE 7真实体验

    java学习里程碑 miles2run.org是跟踪跑步活动并与亲朋好友共享的简便方法. 可以创建然后跟踪基于天或基于距离的目标. 它还允许创建社区运行目标,并使多个跑步者参与并跟踪他们朝着该目标的活 ...

  2. GIZA++运行情况记录和结果对比

    这篇文章主要详细记录了GIZA++的运行报告,所使用的语言模型为CMU-Cam_Toolkit-v2,解码器使用的是isi-rewrite-decoder-r1.0.0a,使用的操作系统是Ubuntu ...

  3. 【错误记录】应用运行 CPU 占用率达到 90% ( 使用 CPU Profiler 监控应用运行情况 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 Android 运行时 , 进入某界面后 , 退出界面 , CPU 占用率泄漏 12 % , 某个线程没有退出 , 一直在后台运行 ; 再次进入 ...

  4. 使用了JDK自带的jconsole查看Tomcat运行情况

    最近对公司的项目进行JVM调优,使用了JDK自带的jconsole查看Tomcat运行情况,记录下配置以便以后参考: 首先,修改Tomcat的bin目录下的catalina.bat文件,在JAVA_O ...

  5. 数据科学、管理科学系课程教学课件——FineReport实验指导书节选====港口生产运行情况

      数据科学.管理科学系课程教学,0基础也能掌握,本节讲述的是物流管理类专业的数据科学.管理科学系课程案例:港口生产运行情况 使用数据    fredu数据库:地图数据.港口排名.集装箱业务线性图.目 ...

  6. Linux下查看Go语言软件运行情况

    在Linux下,使用"jps"可以查看用Java语言写的软件的运行情况,如果要查看GO语言写的软件的运行情况,可以使用"gops",但这不是系统自带的,需要进行 ...

  7. oracle在哪些系统运行,ORACLE 查看系统运行情况

    1,查看系统当前连接会话数 select s.value,s.sid,a.username from v$sesstat S,v$statname N,v$session A where n.stat ...

  8. 【错误记录】Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( pip 21.0 will drop support for Python 2.7 in January 20 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 [错误记录]Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( No module named 'threadpool' ...

  9. 【Java】多线程相关复习—— 线程的创建、名字、运行情况以及顺序控制(join方法) 【一】...

    一.创建线程的三种方式 · 继承Thread类 · 实现Runnable接口 · 实现Callable接口 二. 线程状态 · 线程名字 getName() · 线程活动情况 isAlive() · ...

最新文章

  1. Elasticsearch之分词
  2. 关于ADAM中自定义Class Schema后不能创建该Class的实例的问题
  3. tts和字符集的关系--要求源和目的端的数据库字符集必须一样,国家字符集必须一样。...
  4. [YTU]_2432( C++习题 对象数组输入与输出)
  5. mysql---表所在数据库
  6. Excel Oledb设置
  7. 二分法如何排查问题版本
  8. Membership学习记录
  9. mysql ado.net 实体数据模型_Visual Studio2017中如何让Entity Framework工具【ADO.NET实体数据模型】支持MYSQL数据源...
  10. linux添加了一条静态路由,为Linux新增静态路由的方法
  11. Linux文件系统和磁盘分区
  12. 搭配-最全的配色方案和色彩搭配
  13. 计算机更改后怎么找不到桌面文件,电脑桌面的文件不见了怎么找回
  14. 前馈神经网络(Feedforward neural network)
  15. 八皇后问题(递归回溯算法详解+C代码)
  16. 翻译: 人工智能的时代的教育将比上一代富豪的孩子更受益 慕课大规模开放在线课程(MOOC)
  17. 第十一章 文件操作_C语言实现文件复制功能(包括文本文件和二进制文件)
  18. 用C语言写一个停车场管理系统代码
  19. 小学语文毕业知识整理与复习题
  20. Linux(U盘挂载,玩客云armbian详细挂载U盘扩容)

热门文章

  1. 2017蓝桥杯省赛---java---C---9(青蛙跳杯子)
  2. 以计算机网络为中介的人际传播,以计算机为中介的人际传播理论范式
  3. 最新开发android版本,Android版本检测升级
  4. 水晶报表图形位置_看了我用Excel做的年度报表,老板直夸好
  5. 实现模糊查询并忽略大小写
  6. java nio教程_Java NIO教程
  7. java程序设置jvm_Java程序员应在2018年学习的3种JVM语言
  8. adf开发_了解ADF生命周期中的ADF绑定
  9. javafx_JavaFX技巧4:总结
  10. javafx 8u40_JavaFX 8u20天的未来过去(始终在最前面)