+++ /dev/null
----
-title: Google App Engine Integration
-order: 7
-layout: page
----
-
-[[advanced.gae]]
-= Google App Engine Integration
-
-__This section is not yet fully updated to Vaadin 7.__
-
-Vaadin includes support to run Vaadin applications in the Google App Engine
-(GAE). The most essential requirement for GAE is the ability to serialize the
-application state. Vaadin applications are serializable through the
-[classname]#java.io.Serializable# interface.
-
-To run as a GAE application, an application must use
-[classname]#GAEVaadinServlet# instead of [classname]#VaadinServlet#, and of
-course implement the [classname]#java.io.Serializable# interface for all
-persistent classes. You also need to enable session support in
-[filename]#appengine-web.xml# with:
-
-
-[source, xml]
-----
-<sessions-enabled>true</sessions-enabled>
-----
-
-The Vaadin Project wizard can create the configuration files needed for GAE
-deployment. See
-<<dummy/../../../framework/getting-started/getting-started-first-project#getting-started.first-project.creation,"Creating
-the Project">>. When the Google App Engine deployment configuration is selected,
-the wizard will create the project structure following the GAE Servlet
-convention instead of the regular Servlet convention. The main differences are:
-
-* Source directory: [filename]#src/main/java#
-* Output directory: [filename]#war/WEB-INF/classes#
-* Content directory: [filename]#war#
-
-== Rules and Limitations
-
-Running Vaadin applications in Google App Engine has the following rules and
-limitations:
-
-* Avoid using the session for storage, usual App Engine limitations apply (no
-synchronization, that is, it is unreliable).
-
-* Vaadin uses memcache for mutex, the key is of the form
-[parameter]#_vmutex<sessionid>#.
-
-* The Vaadin [classname]#WebApplicationContext# class is serialized separately
-into memcache and datastore; the memcache key is [parameter]#_vac<sessionid>#
-and the datastore entity kind is [parameter]#_vac# with identifiers of the type
-[parameter]#_vac<sessionid>#.
-
-* __Do not__ update the application state when serving an
-[classname]#ConnectorResource# (such as [classname]#ClassResource#.
-[methodname]#getStream()#).
-
-* __Avoid__ (or be very careful when) updating application state in a
-[classname]#TransactionListener# - it is called even when the application is not
-locked and won't be serialized (such as with [classname]#ConnectorResource#),
-and changes can therefore be lost (it should be safe to update things that can
-be safely discarded later, that is, valid only for the current request).
-
-* The application remains locked during uploads - a progress bar is not possible.
-
-
-
-
-
classes implement the [interfacename]#Serializable# interface. All Vaadin
classes do. If you extend them or implement interfaces, you can provide an
optional serialization key, which is automatically generated by Eclipse if you
-use it. Serialization is also used for clustering and cloud computing, such as
-with Google App Engine.
-
-ifdef::web[]
-For more about that topic, see
-<<dummy/../../../framework/advanced/advanced-gae#advanced.gae,"Google App Engine
-Integration">>.
-endif::web[]
-
+use it. Serialization is also used for clustering and cloud computing.
[[application.lifecycle.servlet-service]]