title: Google App Engine HTTP Error 403
body: <p>I am trying to write a simple Google App Engine application. I am following this tutorial:
  <a href="https://developers.google.com/appengine/docs/java/gettingstarted/creating" rel="nofollow">https://developers.google.com/appengine/docs/java/gettingstarted/creating</a>, however I cannot make it working.</p>
  
  <p>When testing on the localhost, I receive:</p>
  
  <pre><code>HTTP ERROR 403
  Problem accessing /. Reason:
      FORBIDDEN
  Powered by Jetty://
  </code></pre>
  
  <p>This is my application code:</p>
  
  <pre><code>package test;
  
  import java.io.IOException;
  import javax.servlet.http.*;
  
  public class Test extends HttpServlet {
      private static final long serialVersionUID = 1L;
  
      public void doGet(HttpServletRequest req, HttpServletResponse resp)
              throws IOException {
          resp.setContentType("text/plain");
          resp.getWriter().println("Hello, world");
      }
  }
  </code></pre>
  
  <p>My web.xml file:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;!DOCTYPE web-app PUBLIC
   "-//Oracle Corporation//DTD Web Application 2.3//EN"
   "http://java.sun.com/dtd/web-app_2_3.dtd"&gt;
  
  &lt;web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5"&gt;
      &lt;servlet&gt;
          &lt;servlet-name&gt;test&lt;/servlet-name&gt;
          &lt;servlet-class&gt;test.Test&lt;/servlet-class&gt;
      &lt;/servlet&gt;
      &lt;servlet-mapping&gt;
          &lt;servlet-name&gt;test&lt;/servlet-name&gt;
          &lt;url-pattern&gt;/test&lt;/url-pattern&gt;
      &lt;/servlet-mapping&gt;
      &lt;welcome-file-list&gt;
          &lt;welcome-file&gt;index.html&lt;/welcome-file&gt;
      &lt;/welcome-file-list&gt;
  &lt;/web-app&gt;
  </code></pre>
  
  <p>My appengine-web.xml file:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;appengine-web-app xmlns="http://appengine.google.com/ns/1.0"&gt;
    &lt;application&gt;halocline-test&lt;/application&gt;
    &lt;version&gt;10&lt;/version&gt;
  
    &lt;!--
      Allows App Engine to send multiple requests to one instance in parallel:
    --&gt;
    &lt;threadsafe&gt;true&lt;/threadsafe&gt;
  
    &lt;!-- Configure java.util.logging --&gt;
    &lt;system-properties&gt;
      &lt;property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/&gt;
    &lt;/system-properties&gt;
  
    &lt;!--
      HTTP Sessions are disabled by default. To enable HTTP sessions specify:
  
        &lt;sessions-enabled&gt;true&lt;/sessions-enabled&gt;
  
      It's possible to reduce request latency by configuring your application to
      asynchronously write HTTP session data to the datastore:
  
        &lt;async-session-persistence enabled="true" /&gt;
  
      With this feature enabled, there is a very small chance your app will see
      stale session data. For details, see
      http://code.google.com/appengine/docs/java/config/appconfig.html#Enabling_Sessions
    --&gt;
  
  &lt;/appengine-web-app&gt;
  </code></pre>
  
  <p>Console output:</p>
  
  <pre><code>Jul 06, 2012 2:42:34 PM com.google.apphosting.utils.jetty.JettyLogger info
  INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
  Jul 06, 2012 2:42:35 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
  INFO: Successfully processed C:\Users\Halocline\workspace\Test\war\WEB-INF/appengine-web.xml
  Jul 06, 2012 2:42:35 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
  INFO: Successfully processed C:\Users\Halocline\workspace\Test\war\WEB-INF/web.xml
  Jul 06, 2012 3:42:36 PM com.google.appengine.tools.development.DevAppServerImpl start
  INFO: The server is running at http://localhost:8888/
  Jul 06, 2012 3:42:36 PM com.google.appengine.tools.development.DevAppServerImpl start
  INFO: The admin console is running at http://localhost:8888/_ah/admin
  </code></pre>
  
  <p>No errors are shown in the console when I open localhost:8888 in my web browser.</p>
  
  <p>Any idea what I am doing wrong?</p>