介绍

MicroProfile是一项由知名供应商于2016年9月发起的举措,目的是基于JEE平台构建微服务架构。 任务是针对微服务架构优化Enterprise Java 。 开发人员可以利用这种体系结构,通过Enterprise Java平台以标准化的方式构建和开发微服务应用程序。

API构建将成为JCP程序的一部分。 MicroProfile当前基于最小占用空间技术堆栈构建,该技术堆栈包括JAX-RS,CDI和JSONP。 未来将添加更多功能,以构建更强大的微服务平台。 MicroProfile项目仍在开发中,其当前版本1.2基于Apache 2.0许可下的Eclipse Foundation。 可以在https://microprofile.io/上找到更多信息。

在本文中,我们将探索如何使用一个名为Apache TomEE的MicroProfile运行时来构建和部署基于JEE的Microservices RESTful端点。 Apache TomEE是一个开源项目,催生了Tomitribe公司,该公司是MicroProfile项目的主要供应商之一。

Apache TomEE Microprofile

这里的示例将集中于构建RESTful端点,该端点将检索特定客户的所有客户费用。 让我们快速跳转到代码:

@ApplicationScoped
@Produces({MediaType.APPLICATION_JSON})
@Path("/expenses")
public class ExpenseEndpoint {private Map<String, List<Expense>> expenses;@GET@Path("{customerId}")public List<Expense> getExpenses(@PathParam("customerId") String customerId) throws Exception {expenses = loadExpenses();return expenses.get(customerId);}
...

上面的代码是一个简单的JAX-RS ExpenseEndpoint端点,它使您可以根据id检索客户费用。 我们将使用Tomee运行时来构建和发布此终结点。 构建叙述是使用TomEE maven插件的POM文件的一部分,该插件使我们能够构建和部署ExpenseEndpoint微服务。

....<dependencies><dependency><groupId>org.apache.tomee</groupId><artifactId>javaee-api</artifactId><version>7.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.8.7</version></dependency></dependencies><build><finalName>tomeeweb</finalName><plugins>...<plugin><groupId>org.apache.tomee.maven</groupId><artifactId>tomee-maven-plugin</artifactId><version>7.0.1</version><configuration><tomeeClassifier>webprofile</tomeeClassifier></configuration><executions><execution><phase>package</phase><goals><goal>exec</goal></goals></execution></executions></plugin>
....

上面的POM文件利用了package阶段的exec目标来构建jar文件。 事实上,我们的端点将是一个独立的微服务,应该能够独立部署和运行,它需要与服务器运行时程序包一起嵌入,更多的是作为胖子。 另一种选择是将其构建为docker映像。 要构建我们的代码,请运行以下命令:

mvn package

上面的maven命令将运行TomEE maven插件的exec目标并构建胖罐。 胖子罐将在内部包含我们的微型Web应用程序运行时,这可以看作是微型配置文件。 要运行我们的应用程序,请使用以下命令:

java -jar target\<buildname>-exec.jar

这将启动TomEE运行时,部署我们的ExpenseEndpoint RESTful服务。 您可以转到浏览器并使用以下URL测试终结点: http:// localhost:8080 / expenses / C001 ,它将带您返回带有客户ID C001的所有费用详细信息的JSON字符串。

如前所述,MicroProfile仍在开发中。 以上只是Apache TomEE的一个微概要文件,它基于JAX-RS,JSON和CDI作为最小的API堆栈。 MicroProfle项目将通过开发人员社区内的开放式协作和讨论来继续其发展。 我们有一个更大的消息:JEE在这里留下来!

可以在https://github.com/rhathi/microprofile上找到本文的代码

翻译自: https://www.javacodegeeks.com/2017/03/microservices-series-microprofile-apache-tomee.html

微服务系列:MicroProfile和Apache TomEE相关推荐

  1. springcloud微服务系列之服务注册与发现组件Eureka

    一.Eurake的简介 二.使用Eureka进行服务的注册消费 1.创建一个服务注册中心 2.创建服务的提供者 3.创建服务的消费者 总结 一.Eurake的简介 今天我们来介绍下springclou ...

  2. 分布式与微服务系列(三)、SpringBoot+Zookeeper集群+Nginx反向代理+Dubbo分布式托管(提供者、消费者)

    SpringBoot+Zookeeper集群+Nginx反向代理+Dubbo分布式托管(提供者.消费者) 一.软件架构和微服务需求 1.1.微服务需求 1.2.框架选择 1.3.集群分布(下面为此图实 ...

  3. 分布式与微服务系列 - Dubbo

    一.前言 本内容仅用于个人学习笔记,如有侵扰,联系删除 视频教程:尚硅谷Dubbo教程(dubbo经典之作) 二.基础知识 1.分布式基础理论 1.1.什么是分布式系统? <分布式系统原理与范型 ...

  4. 微服务系列:分布式文件存储之 MinIO 入门指南

    经过前面多篇文章我们学习了服务网关.服务调用.服务注册.服务监控等微服务系列的的相关知识,今天开始我们来学习一下分布式文件的相关知识. 首先我们从学习 MinIO 对象存储服务开始,后面还会学习下其他 ...

  5. 微服务系列(五):事件驱动的数据管理

    编者的话|本文来自 Nginx 官方博客,是「Chris Richardson 微服务」系列的第五篇文章.第一篇文章介绍了微服务架构模式,并且讨论了使用微服务的优缺点:第二和第三篇描述了微服务架构模块 ...

  6. 微服务系列(七):将单体应用改造为微服务

    编者的话|本文来自 Nginx 官方博客,是「Chris Richardson 微服务」系列的第五篇文章.第一篇文章介绍了微服务架构模式,并且讨论了使用微服务的优缺点:第二和第三篇描述了微服务架构模块 ...

  7. 「微服务系列 13」熔断限流隔离降级

    我们知道微服务分布式依赖关系错综复杂,比方说前端的请求转化为后端调用的服务请求,一个前端请求会转为成很多个后端调用的服务请求,那么这个时候后台的服务出现不稳定或者延迟,如果没有好的限流熔断措施,可能会 ...

  8. Spring Cloud微服务系列文,服务调用框架Feign

    之前博文的案例中,我们是通过RestTemplate来调用服务,而Feign框架则在此基础上做了一层封装,比如,可以通过注解等方式来绑定参数,或者以声明的方式来指定请求返回类型是JSON.    这种 ...

  9. 01.微服务系列介绍

    微服务系列实践 .NET CORE 在开始之前呢,还是得废话一下,毕竟还是需要介绍一下这个系列我们要实现什么样的一套服务架构,也让大家能初步的有一个了解,后续实践起来也有一个完整的概念,相对也会容易的 ...

  10. 微服务系列实践 .NET CORE

    从事这个行业转眼已经6年了,从当初刚毕业的在北京朝八晚十,从二环到五环,仍每天精力充沛的小愤青:再到深圳一点一滴的辛勤在软件行业的耕种,从当初单体应用架构到现在微服务架构的经历,回想起来自己的收获倒是 ...

最新文章

  1. BOM中的其他对象以及短路运算
  2. CCF个贷违约预测0.891的baseline代码分享
  3. python编程小学生学好吗-小学生都开始学的Python编程到底是什么?
  4. iOS: iOS各种设备信息获取
  5. SQL优化的若干原则
  6. Java文件读取 中文乱码
  7. 关于登录 token 的设计
  8. UVAL - 6755 - Swyper Keyboard
  9. python循环练习_Python循环练习
  10. Yahoo团队:网站性能优化的35条黄金准则
  11. error C2864 只有静态常量整型数据成员才可以在类中初始化
  12. Python 之父:移动设备中的 Python 应用“又大又慢”!
  13. 应用 | 使用小O地图制作热力分布图
  14. html5+JS制作音乐播放器
  15. A new deep transfer learning network based on convolutional auto-encoder for mechanical fault diagno
  16. css加透明边框,CSS3实现透明边框的方法分享
  17. 连接mysql报错Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zon
  18. ROS常用局部路径规划算法比较
  19. 数据仓库:分层设计详解
  20. Multi-Objective Data Placement for Multi-Cloud Socially Aware Services---INFOCOM 2014

热门文章

  1. Shell入门(一)之简介
  2. mysql - Docker Wordpress连接到本地主机上的数据库服务器
  3. MySQL导入冲突保留两者_面试被问MySQL 主从复制,怎么破?
  4. apache spark_Apache Spark中的自定义日志
  5. drools 执行函数_Drools可执行模型还活着
  6. neo4j导入两个文件_Neo4j:找到两个纬度/经度之间的中点
  7. java jigsaw_60秒内使用Java 9的Project Jigsaw的JavaFX HelloWorld
  8. 不可变集合相比可变集合_简单的基准测试:不可变集合VS持久集合
  9. HTTP方法:幂等性和安全性
  10. 通过Apache Kafka集成流式传输大数据