天天看點

Heroku:快速部署Dropwizard開發的RESTful Service

  上一篇部落格《Dropwizard:用Java輕輕的寫一個RESTful Service》中講到了使用Dropwizard可以快速的開發出一個RESTful service,同時因為Dropwizard使用的是Jetty Embedded Container,就可以不再需要繁瑣的去安裝相應的container,以及其他的好處(參考《Embedded Server:像寫main函數一樣寫Web Server》)。唯一需要的東西,隻是java的運作時環境。為了說明這樣帶來的好處,這篇部落格将會采用大家耳熟能詳的一個PaaS平台Heroku來部署用Dropwizard開發出的RESTful service。

1. dropwizard

使用已有的的項目

git clone https://github.com/kiwiwin/heroku-dropwizard-demo

比上篇Dropwizard的部落格中的項目中僅有的幾個不同點是:

Profile

web: java $JAVA_OPTS -Ddw.http.port=$PORT -Ddw.http.adminPort=$PORT -jar heroku-app/*-standalone.jar server heroku-app/hello.yaml

Profile中包含的内容是,heroku需要啟動App時調用的指令。

system.properties

java.runtime.version=1.7

使用system.properties指定需要使用的java版本是1.7

build.gradle

新增一個task stage,這個在後面會解釋

2.建立heroku project

在項目heroku-dropwizard-demo檔案路徑下

登陸heroku:$heroku login

建立heroku app:$heroku create -s cedar kiwi-dropwizard-demo

kiwi-dropwizard-demo是你建立的heroku的app名稱,需要是唯一的。app的名稱也就對應了你app的url:http://kiwi-dropwizard-demo.herokuapp.com/。cedar是heroku提供的預設runtime環境,在這個環境中,你可以build,deploy你的app。

設定buildpack:buildpack決定了當你把你的代碼push到heroku的時候,heroku怎麼樣build你的代碼,在heroku官網中,其提供了一個gradle的buildpack(https://devcenter.heroku.com/articles/buildpacks)。但這個build腳本使用的是gradle-1.0-milestone-5。版本實在太老了。是以,我自己稍作修改,使用gradle1.9。讓heroku知道你使用這個buildpack:

$heroku config:set BUILDPACK_URL=https://github.com/kiwiwin/heroku-buildpack-gradle

部署到heroku:$git push heroku master

3.通路app

$curl http://kiwi-dropwizard-demo.herokuapp.com/hello?name=recocojie

傳回:

{"id":3,"content":"Hello, recocojie!"}

4.總結

 使用Heroku部署standalone的jar包是非常友善的,不信你也試試。