- 浏览: 1036052 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
繁星水:
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文档
REST微服务架构之DropWizard
- 博客分类:
- Java学习
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 4333并发数 并发数和2个因 ... -
使用Hystrix守护应用(3)
2015-01-02 22:04 12872监控HystrixCommand 除了隔离依赖服务的调用外,H ... -
使用Hystrix守护应用(2)
2014-12-30 14:35 16812接上篇(http://ningandjiao.iteye.co ... -
使用Hystrix守护应用(1)
2014-12-30 14:28 15279Hystrix(https://github.com/Netf ... -
Mac下同时安装多个版本的JDK
2014-04-14 21:42 33235JDK8 GA之后,小伙伴们喜大普奔,纷纷跃跃欲试,想体验一下 ... -
性能测试工具之Gatling
2014-01-15 19:27 17289Gatling一直是久闻其名但 ... -
JavaMail测试工具之GreenMail
2014-01-08 19:13 7363不管现在各种Mock框架的运用有多广,我个人在写单元测试的时候 ... -
定制一个Gradle Plugin --- project-structure
2014-01-03 21:23 8489最近在项目中遇到一个 ... -
Restful Spring MVC应用的Request验证
2013-12-26 15:05 23365在开放平台的时候,尤其是坐Rest服务的时候,因为用户可以给你 ... -
Spring MVC中的异常处理
2013-12-25 13:13 24160在一个良好的Rest架构的应用中,所有的异常都应该有对应的Ht ... -
Spring 4.0升级小贴士
2013-12-22 19:40 11438随着Spring4.0的发布,很多同志估计都在考虑升级的事情了 ... -
Spring4.0给我们带来什么?
2013-12-22 17:13 45028JDK8 对JDK8的支持,这个目前来说还是探索性质,毕竟Ja ... -
RESTful API版本控制策略
2013-12-15 19:51 31723做RESTful开放平台,一方面其API变动越少, 对API调 ... -
对象转换利器之Dozer
2013-12-14 22:46 19869在Java的世界中,经常会 ... -
基于Spring-WS的Restful API的集成测试
2013-11-28 19:41 9060在很多Java企业级应用中,Spring占据了非常重要的位置, ... -
TDD Of Spring JMS
2013-11-25 19:53 1757不知何时养成了习惯,在没有一个可运行的测试的时候,个人完全没有 ... -
Micro Service工具集之Swagger:可测试的样式化API文档
2013-09-28 19:55 44732在我之前的一篇博文中,介绍了Yammer开发团队贡献的开源微服 ... -
进击的Java开发
2013-07-14 20:48 5907今天在公司的邮件组中看到一组很有趣的讨论,这是我最喜欢目前公司 ... -
说说SpringBatch的领域概念
2013-06-21 20:32 3621谈到Spring Batch,会谈到 ... -
做项目时需要考虑的安全性问题
2013-04-16 20:20 4782在开发一个项目的时候,大家经常会忽略项目的安全性问题,有很多的 ...
相关推荐
在微服务架构中,Java开发者通常会使用Spring Boot和Dropwizard这两个框架。Spring Boot是由Pivotal Software开发的,它简化了基于Spring的应用程序创建。Spring Boot的核心特性包括SpringApplication,用于初始化...
微服务架构是一种现代软件开发的方法论,它将大型应用程序分解为一系列小型、独立的服务,每个服务都专注于特定的业务功能。这种架构风格促进了服务的松耦合,使得开发团队能够更快地迭代和部署代码,同时允许使用...
随着软件系统的复杂度不断提高,微服务架构因其高灵活性、可扩展性和易维护性等特点,成为当前软件开发领域的重要趋势之一。本手册旨在为使用Java语言进行微服务开发的技术人员提供一套详尽的指南,帮助他们更好地...
例如,对于REST框架,可以选择Spring MVC、Jersey或Dropwizard;对于RPC,可以考虑gRPC、Thrift或较老的Hessian。对于网络库,新的项目通常推荐使用支持HTTP/2的Netty 4.1版本。 微服务的实施不仅涉及技术选型,还...
7. **Scala与微服务**:在微服务架构中,每个服务都是独立的,通常使用轻量级通信机制(如HTTP/REST)。DropWizard-Scala使得在Scala中构建这种服务更加容易,同时也保持了DropWizard的性能优势。 通过这些知识点,...
- 小型项目或微服务架构,对资源和复杂度有严格控制。 - 快速原型开发,需要迅速搭建功能演示或验证概念。 - 教学或学习目的,展示基础的RESTful服务开发。 **总结** Atlas REST 框架以其轻量级、高效和易用的特点...
Dropwizard将常见的微服务基础设施打包在一起,让开发者可以专注于业务逻辑而不是基础架构。它包括以下主要部分: 1. **Jersey**:作为JAX-RS(Java API for RESTful Web Services)的实现,Jersey用于创建和消费...
Java提供了多种库和框架来实现REST服务,如Jersey、Spring Boot和Dropwizard等。其中,Spring Boot是目前最流行的框架,因为它简化了微服务的开发过程,并且集成了许多功能,如自动配置、安全管理和数据访问等。 在...
RESTful Server基于Java RESTful框架构建,这表明它利用了诸如Jersey、Spring Boot、Dropwizard等流行的Java REST库。这些框架提供了强大的功能,如自动资源发现、数据绑定、错误处理、测试工具等,使得开发者能够...
- Restlet是最早的REST框架之一,提供了一种组件模型来构建RESTful应用。 - 它支持客户端和服务器端的REST开发,提供了一套全面的API。 - Restlet框架具有高度可扩展性,适用于复杂的REST架构。 6. **Vert.x** ...
REST(Representational State Transfer)是一种架构风格,常用于设计网络应用程序,尤其是Web服务。它强调资源的表示和通过HTTP协议进行交互。 【描述】提到的"样本服务器用户"可能是该项目的核心部分,即创建一个...
使用Java的微服务架构可以实现水平扩展,以满足不断增长的用户需求。 6. **持续集成/持续部署(CI/CD)**:为了快速迭代和保证代码质量,项目通常会采用Git进行版本控制,结合Jenkins或GitHub Actions实现自动化...
"你好服务"是一个基于Java开发的服务程序,可能是一个微服务应用或者一个独立的功能模块。在Java编程中,服务通常指的是提供特定功能并可被其他组件或系统调用的代码单元。下面将详细讨论与Java服务相关的知识点。 ...