diff --git a/README.md b/README.md
index a8b3a04..818e508 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,14 @@
dropwizard-archetype
====================
-Maven2 Archetype for Coda Hale's Dropwizard
\ No newline at end of file
+Maven2 Archetype for Coda Hale's Dropwizard
+
+$ mvn package
+
+$ java -jar target/dropwizard-example-0.0.1-SNAPSHOT.jar server configs/hello-world.yml
+
+$ open http://localhost:8080/hello-world http://localhost:8080/hello-world?name=Successful+Dropwizard+User
+
+$ open http://localhost:8081/ http://localhost:8081/metrics http://localhost:8081/threads http://localhost:8081/healthcheck
+
+
diff --git a/configs/hello-world.yml b/configs/hello-world.yml
new file mode 100644
index 0000000..89c931f
--- /dev/null
+++ b/configs/hello-world.yml
@@ -0,0 +1,2 @@
+template: Hello, %s!
+defaultName: Stranger
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..d721884
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,72 @@
+
+
+ 4.0.0
+
+ com.alexeypro.samples
+ dropwizard-example
+ 0.0.1-SNAPSHOT
+
+
+
+ com.yammer.dropwizard
+ dropwizard-core
+ 0.4.0
+
+
+
+
+
+ UTF-8
+ UTF-8
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 2.3.2
+
+
+
+ 1.6
+ UTF-8
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 1.6
+
+ true
+
+
+ *:*
+
+ META-INF/*.SF
+ META-INF/*.DSA
+ META-INF/*.RSA
+
+
+
+
+
+
+ package
+
+ shade
+
+
+
+
+
+ com.alexeypro.samples.services.HelloWorldService
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/alexeypro/samples/HelloWorldConfiguration.java b/src/main/java/com/alexeypro/samples/HelloWorldConfiguration.java
new file mode 100644
index 0000000..694b798
--- /dev/null
+++ b/src/main/java/com/alexeypro/samples/HelloWorldConfiguration.java
@@ -0,0 +1,23 @@
+package com.alexeypro.samples;
+
+import com.yammer.dropwizard.config.Configuration;
+import org.codehaus.jackson.annotate.JsonProperty;
+import org.hibernate.validator.constraints.NotEmpty;
+
+public class HelloWorldConfiguration extends Configuration {
+ @NotEmpty
+ @JsonProperty
+ private String template;
+
+ @NotEmpty
+ @JsonProperty
+ private String defaultName = "Stranger";
+
+ public String getTemplate() {
+ return template;
+ }
+
+ public String getDefaultName() {
+ return defaultName;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/alexeypro/samples/Saying.java b/src/main/java/com/alexeypro/samples/Saying.java
new file mode 100644
index 0000000..b3b10cf
--- /dev/null
+++ b/src/main/java/com/alexeypro/samples/Saying.java
@@ -0,0 +1,19 @@
+package com.alexeypro.samples;
+
+public class Saying {
+ private final long id;
+ private final String content;
+
+ public Saying(long id, String content) {
+ this.id = id;
+ this.content = content;
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public String getContent() {
+ return content;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/alexeypro/samples/health/TemplateHealthCheck.java b/src/main/java/com/alexeypro/samples/health/TemplateHealthCheck.java
new file mode 100644
index 0000000..6474cda
--- /dev/null
+++ b/src/main/java/com/alexeypro/samples/health/TemplateHealthCheck.java
@@ -0,0 +1,21 @@
+package com.alexeypro.samples.health;
+
+import com.yammer.metrics.core.HealthCheck;
+
+public class TemplateHealthCheck extends HealthCheck {
+ private final String template;
+
+ public 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();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/alexeypro/samples/resources/HelloWorldResource.java b/src/main/java/com/alexeypro/samples/resources/HelloWorldResource.java
new file mode 100644
index 0000000..9c7f8ca
--- /dev/null
+++ b/src/main/java/com/alexeypro/samples/resources/HelloWorldResource.java
@@ -0,0 +1,33 @@
+package com.alexeypro.samples.resources;
+
+import com.alexeypro.samples.Saying;
+import com.google.common.base.Optional;
+import com.yammer.metrics.annotation.Timed;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import java.util.concurrent.atomic.AtomicLong;
+
+@Path("/hello-world")
+@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 Saying sayHello(@QueryParam("name") Optional name) {
+ return new Saying(counter.incrementAndGet(),
+ String.format(template, name.or(defaultName)));
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/alexeypro/samples/services/HelloWorldService.java b/src/main/java/com/alexeypro/samples/services/HelloWorldService.java
new file mode 100644
index 0000000..f59dd39
--- /dev/null
+++ b/src/main/java/com/alexeypro/samples/services/HelloWorldService.java
@@ -0,0 +1,27 @@
+package com.alexeypro.samples.services;
+
+import com.alexeypro.samples.HelloWorldConfiguration;
+import com.alexeypro.samples.resources.HelloWorldResource;
+import com.alexeypro.samples.health.TemplateHealthCheck;
+import com.yammer.dropwizard.Service;
+import com.yammer.dropwizard.config.Environment;
+
+public class HelloWorldService extends Service {
+ public static void main(String[] args) throws Exception {
+ new HelloWorldService().run(args);
+ }
+
+ private HelloWorldService() {
+ super("hello-world");
+ }
+
+ @Override
+ protected void initialize(HelloWorldConfiguration configuration,
+ Environment environment) {
+ final String template = configuration.getTemplate();
+ final String defaultName = configuration.getDefaultName();
+ environment.addResource(new HelloWorldResource(template, defaultName));
+ environment.addHealthCheck(new TemplateHealthCheck(template));
+ }
+
+}
\ No newline at end of file