微服务 Dropwizard 入门<九>

Getting Started

Dropwizard 没有任何花哨的项目初始化助手或Maven插件。开始使用Dropwizard 时,遵循与任何普通Java项目类似的模式:使用Maven原型,或者使用当前使用的任何工具将其添加到现有应用程序中。您还可以使用JBoss Forge,这是一个与技术无关的Java项目协调和管理工具,它允许您快速创建项目、添加依赖项、添加类等等。在本节中,我们将使用Maven archetypes。

选择要在其中创建新的 Dropwizard 项目的目录。还要验证是否安装了Maven。您可以从操作系统的命令提示符运行命令,也可以使用以下命令中的下列信息填充您喜欢的IDE的对话框或向导:

导航到Maven原型生成器在 hola-dropwizard 中为我们提供的目录,并运行以下命令来构建我们的项目:

你将会成功地构建!

这使用 Dropwizard 原型 java-Simple 来创建我们的微服务。如果进入hola-dropwizard 目录,应该会看到以下结构:

请注意,Dropwizard 为您创建了一个遵循其约定的包结构:

api

定义在REST资源中使用的对象的POJO(有些人将这些对象称为域对象或DTO)。

cli

这就是 Dropwizard 命令的去处(希望添加到应用程序启动过程中的其他命令)。

client

Client helper 类在这里

db

任何与DB相关的代码或配置都放在这里。

health

可以在运行时在管理接口中公开的特定于微服务的健康检查在这里进行。

resources

我们的REST资源类放在这里。

我们还有文件HolaDropwizardApplication.java和Hola-DropwizardConfiguration.java,这是我们的配置和引导代码的地方。例如,看一下HolaDropwizardApplication类,在例子3-1中

这个类包含我们的公共静态void main()方法,除了调用我们的microservice的run()方法之外,它不会做太多的事情。它还有一个getName()方法,该方法在启动时显示。initialize() 和 run() 方法是我们可以引导应用程序的关键位置,我们将在下一节中展示

生成的配置类HolaDropwizardConfigu现在是空的(示例3-2)。

尽管 Dropwizard 本身没有任何特殊的Maven插件,但请看一下生成的 pom.xml。我们看到 Dropwizard 依赖于类路径,并且我们将使用 maven-shade-plugin 插件将我们的JAR打包成一个 jar。这意味着我们的项目的所有依赖项都将被解压缩(即,所有依赖项JAR都被解压缩),并组合成一个单独的JAR,我们的构建将创建这个JAR。对于这个JAR,我们使用maven-jar-plugin来使它可执行。

我们想添加的一个插件是exec-maven-plugin。有了SpringBoot,我们就可以使用MVN的Spring启动:Run运行我们的微服务。我们希望能够在 Dropwizard 应用程序中执行同样的操作,因此让我们将下面的插件添加到apor.xml的<Build>部分中,如示例3-3所示。

现在,我们可以从命令行执行应用程序,如下所示:

我们可以在例子 3-4中看到一些东西


如果您看到应用程序启动,您可以尝试在浏览器中导航到RESTful端点的默认位置:http://localhost:8080。你可能不会看到太多:

如果您尝试访问管理端点http://localhost:8081,您应该会看到一个带有一些链接的简单页面。试着四处点击,看看已经为管理您的微服务提供了什么样的价值!

Hello World

现在我们已经准备好 Dropwizard 微服务模板了,让我们添加一个REST端点。我们希望在/api/hola上公开一个HTTP/REST端点,该端点将返回“HolaDrop向导来自X”,其中X是运行服务的IP地址。为了做这个, 到src/main/java/com/redhat/examples/dropwizard/resources 目录(记住, 这是 Dropwizard 在哪里放置REST资源和创建名为HolaRestResource的新Java类时遵循的约定)。我们将添加一个名为hola()的方法,该方法返回一个字符串以及服务运行位置的IP地址,如示例3-5所示。

Add the HTTP Endpoints

如果我们对 SpringBoot 很熟悉的话,这是有原因的。我们希望能够在可能的情况下使用 POJO 代码创建REST端点和服务,HelloWorld 应用程序是这样做的最佳位置。为了将其作为REST服务公开,我们将利用好的旧JAX-RS注释(参见示例3-6):

@Path
告诉JAX-RS这个服务的上下文路径应该是什么。

@GET

添加一个GET HTTP服务。

现在,在HolaDropwizardApplication类中,让我们为run()方法提供一个实现,以便将新的REST资源添加到微服务(示例3-7)。

现在,我们应该能够构建和运行 Dropwizard 微服务:

当我们到达http://localhost:8080/api/hola的端点时,我们应见以下内容:

下一节更加精彩!!!敬请期待

原文:

作者源码:https://github.com/redhat-developer/microservices-by-example-source

猜你喜欢

转载自my.oschina.net/u/2277632/blog/1797592