Java framework for Google App Engine
Java JavaScript

Getting Started Guide

jappstart is a Java framework for Google App Engine built on Spring, Spring Security, and Sitemesh. The project aims to be the starting point for Google App Engine Java applications. It's not a framework in the traditional sense -- rather it is designed to provide a solid foundation for GAE/Java applications that can be easily extended by developers.


  • Appstats Support
  • Google AJAX Library API (jQuery)
  • Gravatar Integration
  • JRebel Support
  • Local Development Console Support (http://localhost:8080/_ah/admin)
  • Maven Support
    • CSS/JS minification via the yuicompressor-maven-plugin
    • Uses the maven-gae-plugin
  • Remote API/Bulk Loader Support
  • Sitemesh Integration
  • Spring 3
    • JPA support
    • JSON/AJAX integration (Jackson)
    • JSR-303 validation
    • Localization support
  • Spring Security 3
    • Authentication
    • Expression based access control
    • Fully integrated with the App Engine Datastore and Memcache
    • Login/create account functionality with e-mail confirmation
    • Remember Me
    • Support for hierarchical roles
  • Static Error Handler Support
  • Task Queue Support
  • URL Rewrite Integration


  • Goole App Engine SDK for Java 1.7.0
  • jQuery 1.7.1
  • Maven GAE Plugin 0.9.2
  • Spring 3.1.0
  • Spring Security 3.1.0

Configure Property Files

Configure the following properties in,, and


  • See Sending Mail for details regarding e-mail address restrictions.
  • JSAPI keys can be obtained here.

Configure Settings

Create a settings.xml and a settings-security.xml in your local .m2 folder. See Maven - Password Encryption for instructions on how to encrypt your GAE password.

<!-- settings.xml -->
<settings xmlns=""

      <id></id> <!-- this should match the property and is the GAE application id -->
      <username></username> <!-- GAE username -->
      <password>encryptedpass</password> <!-- Encrypted GAE password -->

<!-- settings-security.xml -->
  <master>masterpass</master> <!-- Encrypted master password -->


  • Run mvn clean package -P local to create a new local build
  • Run mvn gae:run -P local to run locally
  • Run mvn gae:stop -P local to stop the local jetty server
  • Run mvn clean package -P dev to create a new dev build
  • Run mvn gae:deploy -P dev to deploy to your dev app engine app
  • Run mvn clean package -P prod to create a new prod build
  • Run mvn gae:deploy -P prod to deploy to your prod app engine app


To demonstrate the localization functionality just append the following to any url:

/some/url?locale=en_US or /some/url?locale=tl_PH. 

To support additional locales just create a new and set the new locale via:


JRebel Usage

  • Install the JRebel Nightly Build.
  • Define a REBEL_HOME environment variable
  • Run mvn clean compile -P local to create a new local build
  • Run mvn gae:run -P local-jrebel to run locally with JRebel support

Remote API/Bulk Loader Usage

Below is an example of how to use the bulk loader to copy all data from the production server to the local development server. Omit the "--kind" option to dump/restore all kinds. See this for more info.

Backup: download_data --application=<app-id> --kind=UserAccount --url=https://<app-id> --filename=backup.dat

Restore: upload_data --application=<app-id> --kind=UserAccount --url=http://localhost:8080/remote_api --filename=backup.dat

Google Plugin for Eclipse Usage

See the Google App Engine Blog.


Copyright (C) 2010-2012 Taylor Leese

This file is part of jappstart.

jappstart is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

jappstart is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with jappstart. If not, see