diff --git a/test-jetty-webapp/src/main/java/com/acme/JDK8AnnotatedServlet.java b/test-jetty-webapp/src/main/java/com/acme/JDK8AnnotatedServlet.java
new file mode 100644
index 0000000..449d735
--- /dev/null
+++ b/test-jetty-webapp/src/main/java/com/acme/JDK8AnnotatedServlet.java
@@ -0,0 +1,49 @@
+//
+//  ========================================================================
+//  Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd.
+//  ------------------------------------------------------------------------
+//  All rights reserved. This program and the accompanying materials
+//  are made available under the terms of the Eclipse Public License v1.0
+//  and Apache License v2.0 which accompanies this distribution.
+//
+//      The Eclipse Public License is available at
+//      http://www.eclipse.org/legal/epl-v10.html
+//
+//      The Apache License v2.0 is available at
+//      http://www.opensource.org/licenses/apache2.0.php
+//
+//  You may elect to redistribute this code under either of these licenses.
+//  ========================================================================
+//
+
+package com.acme;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Map;
+import java.util.TreeMap;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@WebServlet(urlPatterns = "/jdk8")
+public class JDK8AnnotatedServlet extends HttpServlet
+{
+//    @Resource TODO
+
+    @Override
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
+    {
+        PrintWriter output = response.getWriter();
+        output.println("<h2>JDK 8 Servlet</h2>");
+
+        Map<Object, Object> properties = new TreeMap<>(System.getProperties());
+        properties.entrySet().stream()
+                .map(entry -> String.format("<p>%s = %s</p>", entry.getKey(), entry.getValue()))
+                .forEach(output::println);
+
+        output.close();
+    }
+}
