当前位置: 首页 > 工具软件 > Apache TomEE > 使用案例 >

微服务系列:MicroProfile和Apache TomEE

厍浩广
2023-12-01

介绍

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

 类似资料: