tomee_微服务系列:MicroProfile和Apache TomEE

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IntelliJ IDEA中打开项目时用 Import Project(导入项目) 和 Open(打开项目) 的区别

文章目录创建测试目录使用 Open 方式打开用 Import Project 方式打开用 Open 方式打开文件夹下的多个项目用 Import Project 的方式打开多个项目总结对于 IDEA 中如下图所示的 Import Project 和 Open Project 的区别&#xff0c;一开始不明白怎么回事&#xff0c;网上看了很多…

python做数据库压力测试_Python 写的一个MongoDB压力测试

Python 写的一个MongoDB压力测试$ pip install pymongo#!/usr/bin/env python#codingutf-8#Author: Ca0Gu0from pymongo import MongoClientimport datetime,timeclass MongCli(object):def __init__(self, host"127.0.0.1", port27017, userpytest, passwd pytest12…

java命令模式返回值_JAVA 设计模式 命令模式

目录用途命令模式 (Command)将一个请求封装为一个对象&#xff0c;从而使你可以用不同的请求对客户进行参数化&#xff1b;对请求排队或请求日志&#xff0c;以及支持可撤销的操作。命令模式是一种行为型模式。结构图-命令模式结构图Command: 用来声明执行操作的接口。abstract…

IntelliJ IDEA for Mac 如何创建普通的Java项目_创建项目_新建项目

文章目录创建 Java 新项目的流程普通 Java 项目结构Java 项目结构特例讲解创建 Java 新项目的流程 Create New Project Empty Project &#xff08;1&#xff09;选择【Empty Project】&#xff0c;则项目不会自动创建模块&#xff0c;项目创建成功之后&#xff0c;会自动弹出…

java 集成开发工具_最好的Java开发人员测试和集成工具

java 集成开发工具通过从您的应用程序学习企业APM产品&#xff0c;发现更快&#xff0c;更有效的性能监控。 参加AppDynamics APM导览&#xff01; 无论您是刚刚起步还是已经从事了一段时间&#xff0c;使用正确的工具进行编程都可以对项目的成功产生巨大的影响。 适当的工具使…

vue实现上下滑动翻页_基于vue实现上下滑动翻页效果

18年年底的时候&#xff0c;一直在做年度报告的H5页面&#xff0c;因为项目需要&#xff0c;需要实现上下滑动翻页&#xff0c;并且上滑的页面比正常页面的比例要缩小一定比例。效果类似于http://www.17sucai.com/pins/demo-show?id7834&#xff0c;这个链接是基于jquery实现的…

java bytebuffer 大小_java – 为什么DirectByteBuffer.array()有额外的大小?

我的代码是&#xff1a;if (frameRGBABuffer null) {frameRGBABuffer ByteBuffer.allocateDirect(cameraHeight * cameraWidth * 4).order(ByteOrder.nativeOrder());}Log.d("tag",frameRGBABuffer.array().length)我的相机分辨率是1280720,因此frameRGBABuffer应该…

关于登录 token 的设计

设计要点&#xff1a; APP 和 小程序 的登录 token 不需要时效性&#xff0c;PC端的登录 token 需要时效性token 中不要加入到期时间&#xff0c;因为每次有效请求&#xff0c;都要更新 token 的到期时间&#xff0c; 如果把到期时间加入到 token 中&#xff0c;那么每次请求就…

aws高额账单_取消堆放以提高延迟并减少AWS账单

aws高额账单大多数性能问题可以通过几种不同的方式解决。 多数人都容易理解和应用许多适用的解决方案。 一些解决方案&#xff08;例如从JVM管理的堆中删除某些数据结构&#xff09;更加复杂。 因此&#xff0c;如果您不熟悉此概念&#xff0c;我建议您继续学习我们最近如何减少…

丢弃commit_git丢弃本地修改的所有文件(新增、删除、修改)

一&#xff0c;未使用 git add 缓存代码时。可以使用 git checkout -- filepathname (比如&#xff1a; git checkout -- readme.md &#xff0c;不要忘记中间的 “--” &#xff0c;不写就成了检出分支了&#xff01;&#xff01;)。放弃所有的文件修改可以使用 git checkout …

Iphone 手机如何导入/导出通讯录

打开苹果云官网&#xff0c;选择「通讯录」&#xff0c;点击左下角的「设置」&#xff0c;可以看到导入/导出菜单 点击进入 icloud 官网

php通过ajax下载文件,通过ajax调用php下载文件

我有一个按钮&#xff0c;点击它会调用ajax函数。这是我的ajax功能function csv(){ajaxRequest ajax();//ajax() is function that has all the XML HTTP Requestspostdata "data" document.getElementById("id").value;ajaxRequest.onreadystatechange…

intellij远程调试_IntelliJ中的远程调试Wildfly应用程序

intellij远程调试远程调试Java应用程序意味着使用本地开发环境连接到远程运行的应用程序。 Java开箱即-agentlib:jdwp[options]支持远程调试&#xff1a;目标应用程序必须使用-agentlib:jdwp[options]选项执行&#xff0c; -agentlib:jdwp[options]选项加​​载Java调试线协议&…

oracle 取系统当前年份_Oracle 获取当前日期及日期格式

Oracle 获取当前日期及日期格式获取系统日期&#xff1a; SYSDATE()格式化日期&#xff1a; TO_CHAR(SYSDATE(),YY/MM/DD HH24:MI:SS)或 TO_DATE(SYSDATE(),YY/MM/DD HH24:MI:SS)格式化数字&#xff1a; TO_NUMBER注&#xff1a; TO_CHAR 把日期或数字转换为字符串T…

php thread linux,Linux_linux内核函数kernel_thread,设备驱动程序中,如果需要几 - phpStudy...

linux内核函数kernel_thread设备驱动程序中&#xff0c;如果需要几个并发执行的人物&#xff0c;可以启动内核线程&#xff0c;启动内和县城的函数为:int kernel_thread (int ( * fn )( void * ), void * arg, unsigned long flags);kernel_thread函数的作用是产生一个新的线程…

ljc.framework_Java 9模块系统(拼图)@ LJC的HackTheTower

ljc.framework今天&#xff0c;我们花了半天时间参加了第一次HackTheTower活动。 伦敦的Java用户组&#xff08;aka LJC &#xff09;的成员应邀在伦敦市的SalesForceTower&#xff08;aka Heron Tower &#xff09;26楼聚会。 Heather VanCura是Java社区流程的主席 马尼萨卡…

微信小程序注册/登录接口开发

文章目录后端有关说明前端有关说明接口设计小程序注册/登录接口APP 注册/登录接口PC Web 端的注册/登录接口小程序注册/登录序列图校验 token后端有关说明 登录和注册的逻辑要独立抽取写成2个接口&#xff1a;注册接口、登录接口 小程序、APP、PC端的登录接口和注册接口要分开…

php中符号 的作用是什么意思,PHP中@符号的用途是什么?

PHP支持错误控制运算符&#xff0c;即at符号()。当放在表达式之前时&#xff0c;该表达式可能生成的任何错误消息都将被忽略。要在PHP中使用符号&#xff0c;代码如下-示例<?php $file file (non_existent_file) ordie ("Failed in opening the file: Error Message …

couchbase_使用Portworx和Couchbase的有状态容器

couchbase容器本应是短暂的&#xff0c;因此可以很好地扩展以用于无状态应用程序。 有状态的容器&#xff08;例如Couchbase&#xff09;需要区别对待。 管理Docker容器的持久性概述了如何管理有状态容器的持久性。 该博客将说明如何使用Docker Volume Plugins和Portworx创建有…

jpa获取数据库当前时间_SpringDataJPA存储数据时通过注解自动设置创建时间和修改时间...

如果我们此时是通过 Spring Data JPA进行数据库的操作&#xff0c;Spring Data JAP提供了Auditing特性&#xff0c;我们可以通过起很好的实现我们的需求。其原因基本时通过插入监听器&#xff0c;当我们对被特定注解的数据bean进行操作时&#xff0c;其在中间自动进行一系列的操…