Dropwizard 开发环境搭建

news/2024/11/29 15:53:19/

Dropwizard是一个Java框架,其目标是提供高性能、高可靠的Web 应用程序的实现。

一、使用Maven原型创建项目

1、新建项目->选择Maven Archetype

填写好项目名称、路径、选择JDK版本,这里使用JDK11及以上的版本,如下图所示:

2、添加原型

注意上面标明的原型添加的位置,点击添加按钮,输入原型信息,如下图所示:

这里使用的原型信息如下:

GroupId=io.dropwizard.archetypes
ArtifactId=java-simple
Version=4.0.0

具体使用哪个版本的原型可以参考:

dropwizard/dropwizard-archetypes at master · dropwizard/dropwizard · GitHub

原型添加成功之后,会出现附加的属性信息如下:

3、高级设置后创建项目

设置当前项目的信息后点击创建项目,如下:

项目创建成功之后,对应的项目目录如下:

二、启动项目

这里我们直接运行 trueApplication会打印以下提示信息:

usage: java -jar project.jar [-h] [-v] {server,check} ...positional arguments:{server,check}         available commandsnamed arguments:-h, --help             show this help message and exit-v, --version          show the application version and exit

从上面打印出的提示信息来看,运行项目需要使用包才能运行;

这里,我们直接修改pom文件,配置包执行插件:

1、在build -> pluginMangement -> plugins 下添加插件

<plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><version>3.1.0</version>
</plugin>

插件的版本可以在maven仓库中找到,地址如下:

Maven Repository: org.codehaus.mojo » exec-maven-plugin (mvnrepository.com)

2、在build -> plugins 下添加插件执行的配置

<plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><configuration><mainClass>org.example.trueApplication</mainClass><arguments><argument>server</argument></arguments></configuration>
</plugin>

重新加载maven配置后,会在maven工具中看到exec插件,如下图:

双击exec插件下的exec:java,项目就能正常启动了,项目启动的日志如下:

[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------------< org.example:demo >--------------------------
[INFO] Building true 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- exec-maven-plugin:3.1.0:java (default-cli) @ demo ---
WARN  [2023-05-20 15:09:32,509] org.hibernate.validator.internal.properties.javabean.JavaBeanExecutable: HV000254: Missing parameter metadata for ResponseMeteredLevel(String, int), which declares implicit or synthetic parameters. Automatic resolution of generic type information for method parameters may yield incorrect results if multiple parameters have the same erasure. To solve this, compile your code with the '-parameters' flag.
INFO  [2023-05-20 07:09:32,657] io.dropwizard.core.server.DefaultServerFactory: Registering jersey handler with root path prefix: /
INFO  [2023-05-20 07:09:32,659] io.dropwizard.core.server.DefaultServerFactory: Registering admin handler with root path prefix: /
INFO  [2023-05-20 07:09:32,667] io.dropwizard.core.server.ServerFactory: Starting true
================================================================================true================================================================================INFO  [2023-05-20 07:09:32,784] org.eclipse.jetty.setuid.SetUIDListener: Opened application@daffda3{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
INFO  [2023-05-20 07:09:32,784] org.eclipse.jetty.setuid.SetUIDListener: Opened admin@603b59db{HTTP/1.1, (http/1.1)}{0.0.0.0:8081}
INFO  [2023-05-20 07:09:32,787] org.eclipse.jetty.server.Server: jetty-11.0.14; built: 2023-02-22T23:41:48.575Z; git: 4601fe8dd805ce75b69c64466c115a162586641b; jvm 11.0.19+7-LTSINFO  [2023-05-20 07:09:33,444] io.dropwizard.jersey.DropwizardResourceConfig: The following paths were found for the configured resources:NONEINFO  [2023-05-20 07:09:33,448] org.eclipse.jetty.server.handler.ContextHandler: Started i.d.j.MutableServletContextHandler@62902118{/,null,AVAILABLE}
INFO  [2023-05-20 07:09:33,452] io.dropwizard.core.setup.AdminEnvironment: tasks = POST    /tasks/log-level (io.dropwizard.servlets.tasks.LogConfigurationTask)POST    /tasks/gc (io.dropwizard.servlets.tasks.GarbageCollectionTask)WARN  [2023-05-20 07:09:33,452] io.dropwizard.core.setup.AdminEnvironment: 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!    THIS APPLICATION HAS NO HEALTHCHECKS. THIS MEANS YOU WILL NEVER KNOW      !
!     IF IT DIES IN PRODUCTION, WHICH MEANS YOU WILL NEVER KNOW IF YOU'RE      !
!    LETTING YOUR USERS DOWN. YOU SHOULD ADD A HEALTHCHECK FOR EACH OF YOUR    !
!         APPLICATION'S DEPENDENCIES WHICH FULLY (BUT LIGHTLY) TESTS IT.       !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
INFO  [2023-05-20 07:09:33,453] org.eclipse.jetty.server.handler.ContextHandler: Started i.d.j.MutableServletContextHandler@29f22138{/,null,AVAILABLE}
INFO  [2023-05-20 07:09:33,485] org.eclipse.jetty.server.AbstractConnector: Started application@daffda3{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
INFO  [2023-05-20 07:09:33,494] org.eclipse.jetty.server.AbstractConnector: Started admin@603b59db{HTTP/1.1, (http/1.1)}{0.0.0.0:8081}
INFO  [2023-05-20 07:09:33,496] org.eclipse.jetty.server.Server: Started Server@6115115a{STARTING}[11.0.14,sto=30000] @4841ms

通过日志我们可以看出项目使用Jetty作为服务容器;项目启动后默认监听了两个端口,分别是

8080:对外提供服务的端口

8081:对外提供管理服务的端口

三、访问服务

1、访问8080端口

访问地址: http://localhost:8080/

返回的结果如下:

{"code": 404,"message": "HTTP 404 Not Found"
}

原因是,我们没有开发对外访问的服务

2、访问8081端口

访问地址: http://localhost:8081/

返回的结果如下:

 原因是8081端口提供的是管理服务


http://www.ppmy.cn/news/73988.html

相关文章

【回眸】JupiterTC397的PWM开发

前言 正文部分 电路分频是社么 电路分频怎么分&#xff1f; PWM 里的结构体开发思路 使用CAN方法发送PWM参数的开发思路 更新PWM输出开发思路 给PWM输出一个初值 设置PWM输出通道的电平状态开发思路 结语 前言 笔者在之前的三周都在准备毕业论文和相关资料的定稿&am…

JavaScript:对象

对象 ① Object.create(原型指向) 用于创建对象&#xff0c;和 new Object() 的区别在于&#xff1a;该方法创建出来的对象的原型取决于传递的参数&#xff0c;而 new Object() 创建出来的对象永远指向 Object的 prototype var obj1 Object.create(null); // 创建一个纯净对…

记一次支付宝支付的功能开发

背景&#xff1a; 公司需要增加一项支付宝PC端的收款功能 解决&#xff1a; 使用的支付宝官方文档中的电脑网站支付->统一收单下单并支付&#xff0c;当然&#xff0c;我们的支付宝账号需要开通该产品。官方API连接&#xff1a;https://opendocs.alipay.com/open/028r8t?…

【C++】基础知识--程序的结构(1)

C简介&#xff1a; C 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言&#xff0c;支持过程化编程、面向对象编程和泛型编程。 C 被认为是一种中级语言&#xff0c;它综合了高级语言和低级语言的特点。 C 是由 Bjarne Stroustrup 于 1979 年在新泽西州…

基于html+css的图展示85

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Maven属性与版本管理

文章目录 1 属性1.1 问题分析1.2 解决步骤步骤1:父工程中定义属性步骤2:修改依赖的version 2 配置文件加载属性步骤1:父工程定义属性步骤2:jdbc.properties文件中引用属性步骤3:设置maven过滤文件范围步骤4:测试是否生效 3 版本管理 在这一章节内容中&#xff0c;我们将学习两个…

在vue项目中引入swiper进而出现的坑和处理

一、项目中的问题展示 在做公司的一个老项目迭代的过程中&#xff0c;出现了不少的坑&#xff0c;今天专门说一下与swiper相关的坑以及体会吧&#xff01; 1.1 swiper的事件&#xff0c;没有成功挂载 这个世界&#xff0c;总是会有意外发生的&#xff0c;尤其当你对老代码的…

科技云报道:垂直大模型竞争,能突破数据“卡点”吗?

科技云报道原创。 AI大模型火遍全球&#xff0c;中国产业也激发了对人工智能应用的新热情。 随着各大厂商参与竞逐&#xff0c;市场正在分化为通用与垂直两大路径&#xff0c;两者在参数级别、应用场景、商业模式等方面差异已逐步显现。 企业涌入垂直大模型赛道 通用AI大模型…