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

miles2run-徽标

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

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

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

miles2run-landingpage

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

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

miles2run-javaone-mainpage

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

miles2run-javaone-dashboard1

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

miles2run-javaone-dashboard2

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

miles2run-javaone-dashboard3

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

miles2run-javaone-dashboard4

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

这是应用程序的概念图:

miles2run体系结构

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

miles2run-tech

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

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

平台外部的技术:

  • JavaScript
  • 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值