Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Preface
A Brief History of App Engine
Using This Book
Conventions Used in This Book
SafariĀ® Books Online
How to Contact Us
Acknowledgments
1. Introducing Google App Engine
The Runtime Environment
The Static File Servers
Frontend Caches
Cloud Datastore
Entities and Properties
Queries and Indexes
Transactions
The Services
Google Accounts, OpenID, and OAuth
Google Cloud Endpoints
Task Queues and Cron Jobs
Namespaces
Developer Tools
The Cloud Console
Getting Started
2. Creating an Application
Setting Up the Cloud SDK
Installing Java
Installing Python
Installing the Cloud SDK
Authenticating with the Cloud SDK
Installing the App Engine SDK
Installing the Java SDK with the Google Plugin for Eclipse
Developing the Application
The User Preferences Pattern
A Simple App
Introducing JSPs, JSTL, and EL
Users and Google Accounts
Web Forms and the Datastore
Caching with Memcache
The Development Console
Registering the Application
Uploading the Application
Testing the App
Enabling Billing
3. Configuring an Application
The App Engine Architecture
Configuring a Java App
App IDs and Versions
Multithreading
Request Handlers
Static Files and Resource Files
Domain Names
Google Apps
Configuring Secure Connections
Secure Connections with Custom Domains
Authorization with Google Accounts
Environment Variables
Inbound Services
Custom Error Responses
Java Servlet Sessions
4. Request Handlers and Instances
The Runtime Environment
The Sandbox
Quotas and Limits
Request limits
Service limits
Deployment limits
Projects
Versions
Billable quotas
The Java Runtime Environment
The Request Handler Abstraction
Introducing Instances
Request Scheduling and Pending Latency
Warmup Requests
Resident Instances
Instance Classes and Utilization
Instance Hours and Billing
The Instances Console Panel
Traffic Splitting
5. Using Modules
An Example Layout
Configuring Modules
The Enterprise Archive Layout
Making Modules with Eclipse
Manual and Basic Scaling
Manual Scaling and Versions
Startup Requests
Shutdown Hooks
Background Threads
Modules and the Development Server
Deploying Modules
Addressing Modules with URLs
Calling Modules from Other Modules
Module URLs and Secure Connections
Module URLs and Custom Domains
Dispatching Requests to Modules
Starting and Stopping Modules
Managing and Deleting Modules and Versions
The Modules API
An Always-On Example
6. Datastore Entities
Entities, Keys, and Properties
Introducing the Java Datastore API
Property Values
Strings, Text, and Bytes
Unset Versus the Null Value
Multivalued Properties
Keys and Key Objects
Using Entities
Getting Entities Using Keys
Saving Entities
Deleting Entities
Allocating System IDs
The Development Server and the Datastore
7. Datastore Queries
Queries and Kinds
Query Results and Keys
The Query API
Building the Query
Fetching Results with PreparedQuery
Keys-Only Queries
Introducing Indexes
Automatic Indexes and Simple Queries
All Entities of a Kind
One Equality Filter
Greater-Than and Less-Than Filters
One Sort Order
Queries on Keys
Kindless Queries
Custom Indexes and Complex Queries
Multiple Sort Orders
Filters on Multiple Properties
Multiple Equality Filters
Not-Equal and IN Filters
Unset and Nonindexed Properties
Sort Orders and Value Types
Queries and Multivalued Properties
MVPs in Code
MVPs and Equality Filters
MVPs and Inequality Filters
MVPs and Sort Orders
Exploding Indexes
Query Cursors
Projection Queries
Configuring Indexes
8. Datastore Transactions
Entities and Entity Groups
Keys, Paths, and Ancestors
Ancestor Queries
What Can Happen in a Transaction
Transactional Reads
Eventually Consistent Reads
Transactions in Java
How Entities Are Updated
How Entities Are Read
Batch Updates
How Indexes Are Updated
Cross-Group Transactions
9. Datastore Administration
Inspecting the Datastore
Managing Indexes
Accessing Metadata from the App
Querying Statistics
Querying Metadata
Index Status and Queries
Entity Group Versions
Remote Controls
Setting Up the Remote API
Using the Remote API with the Java Client Library
10. The Java Persistence API
Setting Up JPA
Entities and Keys
Entity Properties
Embedded Objects
Saving, Fetching, and Deleting Objects
Transactions in JPA
Queries and JPQL
Relationships
For More Information
11. Using Google Cloud SQL with App Engine
Choosing a Cloud SQL Instance
Installing MySQL Locally
Creating a Cloud SQL Instance
Connecting to an Instance from Your Computer
Setting Up a Database
Setting Up JDBC
Connecting to the Database from App Engine
Backup and Restore
Exporting and Importing Data
The gcloud sql Commands
12. The Memory Cache
Calling Memcache from Java
Keys and Values
Setting Values
Setting Values That Expire
Adding and Replacing Values
Getting Values
Deleting Values
Locking a Deleted Key
Atomic Increment and Decrement
Compare and Set
Batching Calls to Memcache
Memcache and the Datastore
Handling Memcache Errors
Memcache Administration
Cache Statistics
Flushing the Memcache
13. Fetching URLs and Web Resources
Fetching URLs
Outgoing HTTP Requests
The URL
The HTTP Method and Payload
Request Headers
HTTP over SSL (HTTPS)
Request and Response Sizes
Request Deadlines
Handling Redirects
Response Objects
14. Sending and Receiving Email Messages
Sending Email Messages
Logging Sent Mail in the Development Server
Sender Addresses
Recipients
Attachments
Sending Email
Receiving Email Messages
15. Sending and Receiving Instant Messages with XMPP
Inviting a User to Chat
Sending Chat Messages
Receiving Chat Messages
Receiving Chat Messages in Java
Handling Error Messages
Managing Presence
Managing Subscriptions
Managing Presence Updates
Probing for Presence
16. Task Queues and Scheduled Tasks
Configuring Task Queues
Enqueuing a Task
Task Parameters
Payloads
Task Names
Countdowns and ETAs
Push Queues
Task Requests
Processing Rates and Token Buckets
Retrying Push Tasks
Pull Queues
Enqueuing Tasks to Pull Queues
Leasing and Deleting Tasks
Retrying Pull Queue Tasks
Transactional Task Enqueueing
Task Chaining
Task Queue Administration
Deferring Work
Scheduled Tasks
Configuring Scheduled Tasks
Specifying Schedules
17. Optimizing Service Calls
Calling Services Asynchronously
The Asynchronous Call API
Datastore
Memcache
URL Fetch
Visualizing Calls with AppStats
Installing AppStats
Using the AppStats Console
18. Managing Request Logs
Writing to the Log
Viewing Recent Logs
Downloading Logs
Logs Retention
Querying Logs from the App
19. Deploying and Managing Applications
Uploading an Application
Using Versions
Managing Service Configuration
App Engine Settings
Managing Developers
Quotas and Billing
Getting Help
Index
← Prev
Back
Next →
← Prev
Back
Next →