您的位置:首页 > 运维架构

Dropwizard 编写Hello world应用

2016-10-27 16:25 316 查看

Dropwizard 编写Hello world应用

本文介绍如何创建Dropwizard Hello world应用,适合Dropwizard使用入门,对使用Dropwizard的基本流程的理解有一定帮助。

Dropwizard 编写Hello world应用
环境准备

创建Maven项目

配置POM文件

编写Hello World

构建编译运行

更多

环境准备

在创建Dropwizard应用之前,需要准备好开发环境,Java(JDK 7以上)MavenMySQL是必须的。

Java JDK 7下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html

Maven 下载地址:

http://maven.apache.org/download.cgi

MySQL下载地址:

http://dev.mysql.com/downloads/mysql/#downloads

Java和Maven需要配置好环境变量。

创建Maven项目

Maven项目可以使用maven的原型命令maven-archetype-quickstart快速创建,创建出的Maven项目为一个基于标准Maven模板的空项目。

具体步骤如下:

打开命令行,切换到想要创建项目的目录

在命令行中输入以下命令,创建Maven项目:

$ mvn archetype:generate
-DgroupId=com.dwbook.phonebook
-DartifactId=dwbook-phonebook
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false


(输入时不要换行符,“-”前接空格)

创建成功则会在当前目录下创建一个空的Maven项目在名为dwbook-phonebook文件夹中。

配置POM文件

创建Maven项目成功后,在dwbook-phonebook目录下会自动生成一个pom.xml文件。想要通过Maven项目创建Dropwizard应用,需要在pom文件中配置Dropwizard依赖项。创建Dropwizard所需要的模块都可以由Maven中央存储库提供,我们需要做的只是提供模块的ID配置到pom中的依赖项,Maven会自动下载所需模块并包含到项目中。

具体步骤如下:

在pom.xml文件中加入Dropwizard依赖项,在<dependencies>标签之间加入以下项:

<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-core</artifactId>
<version>1.0.2</version>
</dependency>


(依赖项可能存在groupId,artifactId,和合适的version问题,可以自行查找所需依赖,推荐网址:http://repository.sonatype.org/index.html)

2. 加入Maven所需相关插件,用来编译和打包整个项目为一个Jar文件,并可以利用Maven直接运行。在<project>标签之间加入以下项:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.6</version>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
section:<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.dwbook.phonebook.App</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>


编写Hello World

在Maven项目的dwbook-phonebook\src\main\java\com\dwbook\phonebook目录中已经自动生成了App.java文件,只是目前此java文件还只是一个普通的java应用类。所以我们需要将其改写为一个Dropwizard应用的类。具体步骤如下:

在App.java中导入Dropwizard相关包:

import io.dropwizard.Application;
import io.dropwizard.Configuration;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;


让App类继承Application <Configuration>类:

public class App extends Application<AppConfig>


实现Service类的抽象方法initialize() 和 run():

public void initialize(Bootstrap<AppConfig> b) {}

public void run(AppConfig c, Environment e) throws Exception
{

System.out.println( "Hello world, by Dropwizard!" );
}


最后添加main()方法来启动Dropwizard服务:

public static void main( String[] args ) throws Exception
{
new App().run(args);
}


构建、编译运行

命令行在项目根目录dwbook-phonebook下,输入:

$ mvn package


构建项目成功,命令行显示如下:



此时,在target文件夹中生成了dwbook-phonebook-1.0-SNAPSHOT.jar文件,即我们要运行的jar文件。

在命令行下输入:

$ java -jar target/dwbook-phonebook-1.0-SNAPSHOT.jar server


来运行Dropwizard应用。命令行中显示:



Hello World显示成功。

更多

命令行中可能会出现服务启动错误,并提示address already in

use,这是因为Dropwizard应用内置的Jetty服务默认使用8080端口监听应用请求,8081端口监听用户请求,如果这两个端口被其他应用占用则会导致报错。

另外,可能会出现错误the ResourceConfig instance does not contain any root resource classes。这是由于我们的Hello world应用还没有创建和配置任何的REST资源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: