tomee

介绍

MicroProfile是由知名供应商于2016年9月发起的一项计划,目的是基于JEE平台构建微服务架构。 任务是针对微服务架构优化企业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

tomee

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

最新文章

  1. Python(四)IP代理
  2. 使用Entity Framework code first, migration
  3. Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)
  4. oracle12c复制bdf,Oracle 备份与恢复学习笔记(12)
  5. 《树莓派Python编程入门与实战》——1.7 排除树莓派的故障
  6. Win-MASM64汇编语言-通用寄存器AX/BX/CX/DX/SI/DI/BP
  7. P5 MySQL数据类型和类型选择
  8. string与stream互相转换
  9. 生成商品条形码代码事例
  10. 解决windows下的mysql匿名登陆无法使用mysql数据库的问题
  11. Atitit 学校工作手册attilax艾提拉总结 目录 1. 团队文化 宗旨 与使命 2 1.1. 学术教育vs 技术教育vs 技能职业教育 2 1.2. 天堂模式vs地狱模式 2 2. 组织结构
  12. 计算机五笔打字口诀,五笔打字口诀
  13. mysql .pem 文件_对于https ssl中的pem文件和key 文件的理解
  14. 在Frenet坐标系下的动态障碍物避障
  15. Hexo Next 5.x 升级 6.x
  16. char远非仅仅是字符
  17. 解决mysql重启自动同步的问题
  18. vue-router3路由配置一 路由搭建
  19. Oracle 查询当前系统时间的几种方式
  20. 会讲话是学问,会听话是学问

热门文章

  1. DP专练2 (大理石 + [ZJOI 2010]数字计数)
  2. 洛谷P7518:宝石(倍增、可撤销并查集)
  3. YbtOJ#20240-[冲刺NOIP2020模拟赛Day10]弱者对决【笛卡尔树,区间dp】
  4. P4593-[TJOI2018]教科书般的亵渎【拉格朗日差值】
  5. CSP-S 2021 退役记
  6. 【图论】旅行者(P5304)
  7. 软件质量保证划重点期末复习总结
  8. Hadoop入门(三)HDFS API
  9. 这些棘手的Java面试题,答案你都知道吗?
  10. 头条面试题:请谈谈Redis 9种数据结构以及它们的内部编码实现