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 the following properties in filter-local.properties
, filter-dev.properties
, and filter-prod.properties
.
google.app.id
google.jsapi.http.key
google.jsapi.https.key
application.hostname
mail.fromAddress
Notes:
- See Sending Mail for details regarding e-mail address restrictions.
- JSAPI keys can be obtained here.
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="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>yourapp.com</id> <!-- this should match the google.app.id property and is the GAE application id -->
<username>you@yourapp.com</username> <!-- GAE username -->
<password>encryptedpass</password> <!-- Encrypted GAE password -->
</server>
</servers>
</settings>
<!-- settings-security.xml -->
<settingsSecurity>
<master>masterpass</master> <!-- Encrypted master password -->
</settingsSecurity>
- 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 messages_xx_YY.properties
and set the new locale via:
/some/url?locale=xx_YY.
- 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
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:
appcfg.py download_data --application=<app-id> --kind=UserAccount --url=https://<app-id>.appspot.com/remote_api --filename=backup.dat
Restore:
appcfg.py upload_data --application=<app-id> --kind=UserAccount --url=http://localhost:8080/remote_api --filename=backup.dat
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 http://www.gnu.org/licenses/.