- 浏览: 1028905 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
繁星水:
Useful!!
Object-C之(Null)与(Bool) -
pacer123:
请问注解@ApiModelProperty 在哪个jar包下面 ...
Micro Service工具集之Swagger:可测试的样式化API文档 -
sucheng2016:
这东东真的好用么/
对象转换利器之Dozer -
zzq0324:
http://git.oschina.net/zzq0324/ ...
基于Spring-WS的Restful API的集成测试 -
lrz0534:
你好,我在maven上面下载了swagger-springmv ...
Micro Service工具集之Swagger:可测试的样式化API文档
DropWizard是由Yammer开发团队贡献的一个后台服务开发框架,其集成了Java生态系统中各个问题域中最优秀的组件,帮助开发者快速的打造一个Rest风格的后台服务。
对开发者来说,使用DropWizard有如下好处:
1、和Maven集成良好,也就是说和Gradle集成也很良好;
2、开发迅速,部署简单;
3、代码结构好,可读性高;
4、自动为服务提供OM框架;
5、让开发者自然的把一个应用拆分为一个个的小服务
DropWizard结构的Web服务组成
1、Configuration:用于设置该服务的配置,比方说在服务开放在哪个端口,数据库配置是怎样的等等。
2、Service:该服务的主入口,定义该服务使用哪个配置文件,开放哪些Resource,该服务需要哪些HealthCheck等等。
3、Resource:定义一个资源,包括如何获取该资源,对该资源做Get/Post/Delete/Query时,对应的各种业务逻辑。
4、Representation:定义了一个服务返回值对象,当服务返回该对象时,会自动的把该对象按属性值生成一个Json格式的字符串返回给服务调用者。
5、HealthCheck:在DropWizard为每个服务提供的OM框架中用到,通过它可以随时检测当前服务是否可用。
DropWizard之Hello World
怎样开发一个DropWizard的Web服务呢?首先,在你的项目中引入DropWizard依赖
然后,定义Configuration
再接着,定义服务想要开放的Resource,(DropWizard中大量使用了Annotation,大大简化了代码开发)
然后,定义该服务返回值的Representation:
然后,为该服务定义一个HeatlthCheck,这个是可选的,但是,有HealthCheck的web服务让人放心很多:
最后,把该服务涉及的配置,资源,HealthCheck统一整合到Service主类中:
另外配置文件如下:
template: Hello, %s!
defaultName: Stranger
这就是一个完整的REST风格的Web服务代码,另外,DropWizard的部署也非常简单,只需要使用构建脚本把该服务打包,然后使用如下的命令即可运行服务:
注意:1、在打包的时候一定要把依赖库也打进去
2、配置文件的名字一定要和Service类中设置的一样
最后,前面只是关于DropWizard的最基本的应用,DropWizard开发团队还为开发者考虑了很多贴心的功能,比方说,和Hibernate,Liquidbase的集成等等。更多更详细的信息,请移步:http://dropwizard.codahale.com/manual/
1、就是如何配合spring mvc 实现restful风格的web service 并且可以集成Swagger UI测试。
2、这个jar包在哪可以下载呢?
3、因为Dropwizard使用的是Jetty Embedded Container,能支持tomcat服务吗?
DropWizard是一个微服务框架,其目标是所有东西自己一肩挑,同时能保持代码的短小。
1. 配合spring mvc是一个伪命题,用了spring MVC就不要用DropWizard了,任选其一吧。这2者都可以集成swagger,具体的可以去看Swagger官网。
2. jar包是项目build出来的
3. 之前只支持jetty,目前不知道。用tomcat的化可以看看spring boot。
呵呵,现在才有点豁然开朗给,多谢!
1、就是如何配合spring mvc 实现restful风格的web service 并且可以集成Swagger UI测试。
2、这个jar包在哪可以下载呢?
3、因为Dropwizard使用的是Jetty Embedded Container,能支持tomcat服务吗?
DropWizard是一个微服务框架,其目标是所有东西自己一肩挑,同时能保持代码的短小。
1. 配合spring mvc是一个伪命题,用了spring MVC就不要用DropWizard了,任选其一吧。这2者都可以集成swagger,具体的可以去看Swagger官网。
2. jar包是项目build出来的
3. 之前只支持jetty,目前不知道。用tomcat的化可以看看spring boot。
dropwizard打出来就是一个jar包,包含所有的依赖,目前流行的CI,Contuinuous Delivery都可以直接上啊。你所谓的部署是指?
1、就是如何配合spring mvc 实现restful风格的web service 并且可以集成Swagger UI测试。
2、这个jar包在哪可以下载呢?
3、因为Dropwizard使用的是Jetty Embedded Container,能支持tomcat服务吗?
dropwizard打出来就是一个jar包,包含所有的依赖,目前流行的CI,Contuinuous Delivery都可以直接上啊。你所谓的部署是指?
1、就是如何配合spring mvc 实现restful风格的web service 并且可以集成Swagger UI测试。
2、这个jar包在哪可以下载呢?
3、同时因为Dropwizard使用的是Jetty Embedded Container.
dropwizard打出来就是一个jar包,包含所有的依赖,目前流行的CI,Contuinuous Delivery都可以直接上啊。你所谓的部署是指?
1、就是如何配合spring mvc 实现restful风格的web service 并且可以集成Swagger UI测试。
2、这个jar包在哪可以下载呢?
dropwizard打出来就是一个jar包,包含所有的依赖,目前流行的CI,Contuinuous Delivery都可以直接上啊。你所谓的部署是指?
就是如何配合spring mvc 实现restful风格的web service 并且可以集成Swagger UI测试。
dropwizard打出来就是一个jar包,包含所有的依赖,目前流行的CI,Contuinuous Delivery都可以直接上啊。你所谓的部署是指?
微博@xianlinbox,邮箱xianlinbox@gmail.com皆可。
对开发者来说,使用DropWizard有如下好处:
1、和Maven集成良好,也就是说和Gradle集成也很良好;
2、开发迅速,部署简单;
3、代码结构好,可读性高;
4、自动为服务提供OM框架;
5、让开发者自然的把一个应用拆分为一个个的小服务
DropWizard结构的Web服务组成
1、Configuration:用于设置该服务的配置,比方说在服务开放在哪个端口,数据库配置是怎样的等等。
2、Service:该服务的主入口,定义该服务使用哪个配置文件,开放哪些Resource,该服务需要哪些HealthCheck等等。
3、Resource:定义一个资源,包括如何获取该资源,对该资源做Get/Post/Delete/Query时,对应的各种业务逻辑。
4、Representation:定义了一个服务返回值对象,当服务返回该对象时,会自动的把该对象按属性值生成一个Json格式的字符串返回给服务调用者。
5、HealthCheck:在DropWizard为每个服务提供的OM框架中用到,通过它可以随时检测当前服务是否可用。
DropWizard之Hello World
怎样开发一个DropWizard的Web服务呢?首先,在你的项目中引入DropWizard依赖
apply plugin: 'idea' apply plugin: 'maven' apply plugin: 'java' repositories { mavenCentral() } dependencies { compile( 'com.yammer.dropwizard:dropwizard-core:0.6.1' ) }
然后,定义Configuration
public class HelloWorldConfiguration extends Configuration { @NotEmpty //参数检查 @JsonProperty //自动映射配置文件 private String template; @NotEmpty @JsonProperty private String defaultName; public String getTemplate() { return template; } public String getDefaultName() { return defaultName; } }
再接着,定义服务想要开放的Resource,(DropWizard中大量使用了Annotation,大大简化了代码开发)
@Path("/helloWorld") @Produces(MediaType.APPLICATION_JSON) public class HelloWorldResource { private final String template; private final String defaultName; private final AtomicLong counter; public HelloWorldResource(String template, String defaultName) { this.template = template; this.defaultName = defaultName; this.counter = new AtomicLong(); } @GET @Timed public SayingRepresentation sayHello(@QueryParam("name")Optional<String> name){ return new SayingRepresentation(counter.incrementAndGet(),String.format(template,name.or(defaultName))); } }
然后,定义该服务返回值的Representation:
public class SayingRepresentation { private long id; private String content; public SayingRepresentation(long id, String content) { this.id = id; this.content = content; } public long getId() { return id; } public String getContent() { return content; } }
然后,为该服务定义一个HeatlthCheck,这个是可选的,但是,有HealthCheck的web服务让人放心很多:
public class TemplateHealthCheck extends HealthCheck { private final String template; protected TemplateHealthCheck(String template) { super("template"); this.template = template; } @Override protected Result check() throws Exception { final String saying = String.format(template,"TEST"); if(!saying.contains("TEST")){ return Result.unhealthy("template doesn't include a name!"); } return Result.healthy(); } }
最后,把该服务涉及的配置,资源,HealthCheck统一整合到Service主类中:
public class HelloWorldService extends Service<HelloWorldConfiguration> { //服务入口 public static void main(String[] args) throws Exception { new HelloWorldService().run(args); } @Override public void initialize(Bootstrap<HelloWorldConfiguration> bootstrap) { //指定配置文件的名字 bootstrap.setName("helloWorld"); } @Override public void run(HelloWorldConfiguration helloWorldConfiguration, Environment environment) throws Exception { final String template = helloWorldConfiguration.getTemplate(); final String defaultName = helloWorldConfiguration.getDefaultName(); environment.addResource(new HelloWorldResource(template,defaultName)); environment.addHealthCheck(new TemplateHealthCheck(template)); } }
另外配置文件如下:
template: Hello, %s!
defaultName: Stranger
这就是一个完整的REST风格的Web服务代码,另外,DropWizard的部署也非常简单,只需要使用构建脚本把该服务打包,然后使用如下的命令即可运行服务:
java -jar <jar包> server <config_file>
注意:1、在打包的时候一定要把依赖库也打进去
2、配置文件的名字一定要和Service类中设置的一样
最后,前面只是关于DropWizard的最基本的应用,DropWizard开发团队还为开发者考虑了很多贴心的功能,比方说,和Hibernate,Liquidbase的集成等等。更多更详细的信息,请移步:http://dropwizard.codahale.com/manual/
评论
14 楼
ningandjin
2015-02-11
hobitton 写道
看了文章,不知道dropwizard的优势在哪里?因为文章中提到的所有的代码都是jersey很方便就提供了。google了下,好像是提供一站式的解决方法,方便大家不用去了解各个framework的版本就可以使用了?但是如果就这点好处的话,我觉得完全没必要用dropwizard了啊?不管是它文档里面提到的validation,embedded server,rest client等等,这个都是很方便就实现了,这些东西在jersey的文档中都很完善的提到了啊?
完全没懂这个框架的优点在哪里。
严重同意, 他的优点就是你有了做微服务的想法之后,只需要他你就能开发完这个服务, 他本来就是各项技术的一个集成封装,然后加点Annotation用起来更直观,再加一点约定优于配置的思路简化一点配置。 如果你对各项技术都很了解,自己来集成这些技术灵活性可能会更好。。完全没懂这个框架的优点在哪里。
13 楼
hobitton
2015-02-11
看了文章,不知道dropwizard的优势在哪里?因为文章中提到的所有的代码都是jersey很方便就提供了。google了下,好像是提供一站式的解决方法,方便大家不用去了解各个framework的版本就可以使用了?但是如果就这点好处的话,我觉得完全没必要用dropwizard了啊?不管是它文档里面提到的validation,embedded server,rest client等等,这个都是很方便就实现了,这些东西在jersey的文档中都很完善的提到了啊?
完全没懂这个框架的优点在哪里。
完全没懂这个框架的优点在哪里。
12 楼
ron.luo
2014-09-18
ningandjin 写道
ron.luo 写道
1、就是如何配合spring mvc 实现restful风格的web service 并且可以集成Swagger UI测试。
2、这个jar包在哪可以下载呢?
3、因为Dropwizard使用的是Jetty Embedded Container,能支持tomcat服务吗?
DropWizard是一个微服务框架,其目标是所有东西自己一肩挑,同时能保持代码的短小。
1. 配合spring mvc是一个伪命题,用了spring MVC就不要用DropWizard了,任选其一吧。这2者都可以集成swagger,具体的可以去看Swagger官网。
2. jar包是项目build出来的
3. 之前只支持jetty,目前不知道。用tomcat的化可以看看spring boot。
呵呵,现在才有点豁然开朗给,多谢!
11 楼
ningandjin
2014-09-18
ron.luo 写道
1、就是如何配合spring mvc 实现restful风格的web service 并且可以集成Swagger UI测试。
2、这个jar包在哪可以下载呢?
3、因为Dropwizard使用的是Jetty Embedded Container,能支持tomcat服务吗?
DropWizard是一个微服务框架,其目标是所有东西自己一肩挑,同时能保持代码的短小。
1. 配合spring mvc是一个伪命题,用了spring MVC就不要用DropWizard了,任选其一吧。这2者都可以集成swagger,具体的可以去看Swagger官网。
2. jar包是项目build出来的
3. 之前只支持jetty,目前不知道。用tomcat的化可以看看spring boot。
10 楼
ron.luo
2014-09-18
ron.luo 写道
ron.luo 写道
ron.luo 写道
ningandjin 写道
ron.luo 写道
请问下,如何部署dropwizard,还是不太明白?能不能给以demo?
dropwizard打出来就是一个jar包,包含所有的依赖,目前流行的CI,Contuinuous Delivery都可以直接上啊。你所谓的部署是指?
1、就是如何配合spring mvc 实现restful风格的web service 并且可以集成Swagger UI测试。
2、这个jar包在哪可以下载呢?
3、因为Dropwizard使用的是Jetty Embedded Container,能支持tomcat服务吗?
9 楼
ron.luo
2014-09-18
ron.luo 写道
ron.luo 写道
ningandjin 写道
ron.luo 写道
请问下,如何部署dropwizard,还是不太明白?能不能给以demo?
dropwizard打出来就是一个jar包,包含所有的依赖,目前流行的CI,Contuinuous Delivery都可以直接上啊。你所谓的部署是指?
1、就是如何配合spring mvc 实现restful风格的web service 并且可以集成Swagger UI测试。
2、这个jar包在哪可以下载呢?
3、同时因为Dropwizard使用的是Jetty Embedded Container.
8 楼
ron.luo
2014-09-18
ron.luo 写道
ningandjin 写道
ron.luo 写道
请问下,如何部署dropwizard,还是不太明白?能不能给以demo?
dropwizard打出来就是一个jar包,包含所有的依赖,目前流行的CI,Contuinuous Delivery都可以直接上啊。你所谓的部署是指?
1、就是如何配合spring mvc 实现restful风格的web service 并且可以集成Swagger UI测试。
2、这个jar包在哪可以下载呢?
7 楼
ron.luo
2014-09-18
ningandjin 写道
ron.luo 写道
请问下,如何部署dropwizard,还是不太明白?能不能给以demo?
dropwizard打出来就是一个jar包,包含所有的依赖,目前流行的CI,Contuinuous Delivery都可以直接上啊。你所谓的部署是指?
就是如何配合spring mvc 实现restful风格的web service 并且可以集成Swagger UI测试。
6 楼
ningandjin
2014-09-18
ron.luo 写道
请问下,如何部署dropwizard,还是不太明白?能不能给以demo?
dropwizard打出来就是一个jar包,包含所有的依赖,目前流行的CI,Contuinuous Delivery都可以直接上啊。你所谓的部署是指?
5 楼
ron.luo
2014-09-16
请问下,如何部署dropwizard,还是不太明白?能不能给以demo?
4 楼
ningandjin
2014-07-14
mxh_1993 写道
楼主,你能不能留一个联系地址,我有点问题想请教你,谢谢啦
微博@xianlinbox,邮箱xianlinbox@gmail.com皆可。
3 楼
mxh_1993
2014-07-13
楼主,你能不能留一个联系地址,我有点问题想请教你,谢谢啦
2 楼
maidoudao
2013-11-26
2、配置文件的名字一定要和Service类中设置的一样
这个没必要一样的,bootstrap.setName("helloWorld"); 这只是指定服务的名字,而不是配置文件的名字。
只需要在运行的时候将yml文件的路径传入即可。
这个没必要一样的,bootstrap.setName("helloWorld"); 这只是指定服务的名字,而不是配置文件的名字。
只需要在运行的时候将yml文件的路径传入即可。
java -jar <jar包> server <config_file_path>
1 楼
swanky_yao
2013-07-03
抽时间研究研究
发表评论
-
关于并发的思考
2015-02-08 22:33 4256并发数 并发数和2个因 ... -
使用Hystrix守护应用(3)
2015-01-02 22:04 12814监控HystrixCommand 除了隔离依赖服务的调用外,H ... -
使用Hystrix守护应用(2)
2014-12-30 14:35 16745接上篇(http://ningandjiao.iteye.co ... -
使用Hystrix守护应用(1)
2014-12-30 14:28 15175Hystrix(https://github.com/Netf ... -
Mac下同时安装多个版本的JDK
2014-04-14 21:42 33085JDK8 GA之后,小伙伴们喜大普奔,纷纷跃跃欲试,想体验一下 ... -
性能测试工具之Gatling
2014-01-15 19:27 17217Gatling一直是久闻其名但 ... -
JavaMail测试工具之GreenMail
2014-01-08 19:13 7313不管现在各种Mock框架的运用有多广,我个人在写单元测试的时候 ... -
定制一个Gradle Plugin --- project-structure
2014-01-03 21:23 8398最近在项目中遇到一个 ... -
Restful Spring MVC应用的Request验证
2013-12-26 15:05 23283在开放平台的时候,尤其是坐Rest服务的时候,因为用户可以给你 ... -
Spring MVC中的异常处理
2013-12-25 13:13 24096在一个良好的Rest架构的应用中,所有的异常都应该有对应的Ht ... -
Spring 4.0升级小贴士
2013-12-22 19:40 11382随着Spring4.0的发布,很多同志估计都在考虑升级的事情了 ... -
Spring4.0给我们带来什么?
2013-12-22 17:13 44943JDK8 对JDK8的支持,这个目前来说还是探索性质,毕竟Ja ... -
RESTful API版本控制策略
2013-12-15 19:51 31589做RESTful开放平台,一方面其API变动越少, 对API调 ... -
对象转换利器之Dozer
2013-12-14 22:46 19765在Java的世界中,经常会 ... -
基于Spring-WS的Restful API的集成测试
2013-11-28 19:41 8897在很多Java企业级应用中,Spring占据了非常重要的位置, ... -
TDD Of Spring JMS
2013-11-25 19:53 1697不知何时养成了习惯,在没有一个可运行的测试的时候,个人完全没有 ... -
Micro Service工具集之Swagger:可测试的样式化API文档
2013-09-28 19:55 44634在我之前的一篇博文中,介绍了Yammer开发团队贡献的开源微服 ... -
进击的Java开发
2013-07-14 20:48 5842今天在公司的邮件组中看到一组很有趣的讨论,这是我最喜欢目前公司 ... -
说说SpringBatch的领域概念
2013-06-21 20:32 3572谈到Spring Batch,会谈到 ... -
做项目时需要考虑的安全性问题
2013-04-16 20:20 4712在开发一个项目的时候,大家经常会忽略项目的安全性问题,有很多的 ...
相关推荐
全套微服务架构,视频学习java微服务架构,包括如下 第1章 微服务简介 001构建单体应用 002微服务解决复杂问题 003微服务的优点 004微服务的缺点 第2章 Linux使用 005Linux 简介 006Linux 与 Windows ...
REST电子商务微服务架构 在具有Spring Boot,Cloud和多个模块的电子商务中实现REST微服务。 (作者:卡米尔·莱斯尼亚科夫斯基PL) 目录 项目架构 工具与技术 Java 8 Spring Boot-版本2.1.5发行 Spring Web MVC-...
Java微服务架构l零从基础到精通高清视频教程全套 第1章 微服务简介 001构建单体应用 002微服务解决复杂问题 003微服务的优点 004微服务的缺点 第2章 Linux使用 005Linux 简介 006Linux 与 Windows 比较 007...
服务可以使用基于同步请求/响应的通信机制,例如HTTPREST或gRPC。另外,也可以使用异步的基于消息的通信机制,比如AMQP或STOMP。消息的格式也不尽相同。服务可以使用具备可读性的格式,比如基于文本的JSON或XML。也...
的不足,国内外互联网企业探索通过微服务架构方式,优化系统服务化的构建和 管理。微服务架构去中心化、高度自治、自动化等特点进一步对系统架构进行解 耦,并且和敏捷迭代、DevOps文化更加契合,可以使用较低的成本...
j360系列之spring-boot微服务架构和docker部署 ##介绍## j360-order底层服务提供接口 使用restAPI提供服务 j360-deliver提供UI操作界面,调用底层j360-order提供服务 构建 Java 1.7+(官方建议1.8) Maven 3.2+ ...
介绍的:服务网关。服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了
Java高并发高性能分布式框架从无到有微服务架构设计 Java高并发高性能分布式框架从无到有微服务架构设计 微服务架构模式(Microservice Architect Pattern)。近两年在服务的疯狂增长与云计算技术的进步,让微服务...
微服务 使用Django实现微服务架构的简单项目
Springboot-微服务的入门级微框架,用来简化Spring应用的初始搭建以及开发过程。Eureka-云端服务发现,一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。SpringCloudConfig-配置管理工具包,...
本次分享内容由三个部分组成:微服务架构与MQRabbitMQ场景分析与优化RabbitMQ在网易蜂巢中的应用和案例分享微服务架构是一种架构模式,它将单体应用划分成一组微小的服务,各服务之间使用轻量级的通信机制交互。...
日历一个基于 dropwizard 的 REST 微服务,用于 ical-subscription 处理
WEB框架——REST原理(架构风格与基于网络的软件架构设计)
软件开发者想要往软件设计与架构精进的路线及选型。 ``` hikaru-server/ .idea hikaru-api | conrtoller - rest服务 hikaru-application | application - springboot 启动 hikaru-common | common - 基础应用抽...
NodeJS中的REST微服务样板 特征 带有Swagger UI的REST API 中间件(压缩器,头盔,cors,favicon,身体分析器和静态) 开玩笑的单元测试 ES6,ESLint CI与Travis,Docker Build 安装 # install dependencies npm...
Catslap:具有密码策略覆盖支持的LDAP REST微服务
HXAPIGate基于Netty+Shiro开发的一款高性能API网关,对基于REST服务的细粒度API资源的权限管理平台,支持http,dubbo等多协议微服务接口代理。目前多数授权管理平台都只单单对api路径资源本身授权,而不能做到更细...
该项目由使用微服务架构的在线商店的REST API组成。 这个项目的目标是利用我在8个月的过程中以自学成才的方式所获得的所有知识,为在线商店创建一个完整的业余应用程序。 微服务 产品服务微服务,负责产品管理。 ...