介绍
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