这篇文章来自于:http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine?pli=1
支持
While we do not support the entirety of the Java EE specification, many of its individual components are supported. These include:
- Java Data Objects (JDO) -- notes
- Java Persistence API (JPA) -- notes *
- Java Server Faces (JSF) 1.1 - 2.0 **
- Java Server Pages (JSP) + JSTL ***
- Java Servlet API 2.4 -- notes
- JavaBeans™ Activation Framework (JAF)
- JavaMail -- notes
- XML processing APIs including DOM, SAX, and XSLT
* For a guide on "converting" between JPA and JDO, see the blog entry at http://objectuser.wordpress.com/2009/07/04/17-minute-jdo/ .
** JSF 1.1 appears to be working out-of-the-box. JSF 1.2 and JSF 2.0 should also work if you set the com.sun.faces.enableMultiThreadedStartup context parameter to false to your web.xml file. Setting this parameter to false (it's set to true by default) will prevent additional threads from being spawned. For more information on running JSF 2.0 in App Engine, see this Site .
*** JSP session beans are not supported.
不支持
There are various APIs and technologies that are not supported by App Engine at present for various reasons. These include:
- Enterprise Java Beans (EJB)
- JAX-RPC
- JAX-WS
- JAXB
- Java Database Connectivity (JDBC) **
- Java EE™ Connector Architecture (JCA)
- Java Management Extensions (JMX)
- Java Message Service (JMS)
- Java Naming and Directory Interface (JNDI)
- Remote Method Invocation (RMI)
** App Engine's underlying datastore is based on BigTable, not a traditional SQL-based RDBMS like MySQL or PostgreSQL. You may either use the low-level datastore API or the JDO or JPA object-relational mapping interfaces provided. Various JDBC wrappers are available for the datastore, and you may still be able to connect to in-memory databases such as the H2 database engine or HSQLDB.
JVM-based Languages
NOTE: All JVM-based languages are subject to the same App Engine sandbox restrictions as Java.
BeanShell
Version(s): ?
Status: COMPATIBLE
CAL
Version(s): ?
Status: COMPATIBLE
- CAL, together with the Open Quark framework, can be run on App Engine. More details at http://www.kablambda.org/blog/2009/04/09/functional-programming-on-google-appengine/ .
Groovy
Versions: 1.6.1 +
Status: COMPATIBLE
- More information is available on the Spring Source blog .
JRuby (Ruby)
Versions: 1.3.1+
Status: COMPATIBLE (see notes)
- The latest instructions for rails are athttp://rails-primer.appspot.com/ .
- Ola Bini has posted a series of steps along with his impressions to his blog .
- A proof-of-concept sinatra app using JRuby has been posted by Samuel Goebert at http://blog.bigcurl.de/2009/04/running-sinatra-apps-on-google.html . For more on Sinatra, seehttp://code.google.com/p/appengine-jruby/wiki/GettingStarted .
Jython (Python)
Versions: 2.2, 2.5rc4 +
Status: COMPATIBLE
- Modjy, used to bridge Jython WSGI applications to those running inside Java servlet containers, is also compatible with App Engine. See http://opensource.xhaus.com/projects/modjy/wiki/ModjyGoogleAppEngine for a quick tutorial.
Quercus (PHP)
Version(s): ?
Status: COMPATIBLE
- See http://brian.brispace.net/2009/04/09/php-on-google-app-engine/#post-398 for an example of how to configure your deployment descriptor to work with Quercus.
Rhino (JavaScript)
Version(s): ?
Status: COMPATIBLE
- For a quick tutorial demonstrating how to run Rhino and Helma NG on App Engine, see http://dev.helma.org/ng/Running+Rhino+and+Helma+NG+on+Google+App+Engine/ .
- Jack, a implementation of the JSGI spec with Rhino support, also works with App Engine. A servlet is available .
Scala
Version(s): ?
Status: COMPATIBLE
- Scala works out-of-the-box as does the Lift Web Framework for Scala.
- Scala Actors do not work, because they are implemented using threads, which are not supported.
- Dave Briccetti has posted his experience running Scala with App Engine to his blog .
Miscellaneous Java™ Libraries and Frameworks
Apache Commons FileUpload
Version: 1.2.1
Status: SEMI-COMPATIBLE
- The streaming API added in version 1.2.1 works out of the box.
- The traditional API is not supported due to dependencies on java.io.File (App Engine does not expose a writable file system), although a custom FileItemFactory implementation that does not rely on writing files should work.
Apache POI
Version(s): ?
Status: INCOMPATIBLE
- Apache POI relies on several classes not in the JRE class whitelist including java.awt.Color. A bug has been filed at https://issues.apache.org/bugzilla/show_bug.cgi?id=47497 .
BlazeDS
Version: 3.2.0.3978
Status: COMPATIBLE
- To workaround an EMFException thrown by flex.messaging.io.amf.AbstractAmfInput, follow Martin Zoldano's workarounds at http://martinzoldano.blogspot.com/2009/04/appengine-adobe-blazeds-fix.html .
- You will need to enable sessions to get BlazeDS working.
Compass
Version(s): ?
Status: SEMI-COMPATIBLE
- Shay Banon has posted a screencast at http://www.kimchy.org/searchable-google-appengine-with-compass/ which shows the basic configuration changes needed to enable full text search of datastore entities.
- To workaround issues with Compass and JPA persistence, see http://forum.compass-project.org/thread.jspa?threadID=216243&tstart=0 .
Direct Web Remoting (DWR)
Version(s): 2.0.5, 3.0 RC1
Status: COMPATIBLE
dyuproject (OpenID RelyingParty 2.0 implementation, OAuth consumer and service provider, JSON IOC, lightweight Servlet-based REST framework)
Version(s): ?
Status: COMPATIBLE
Ehcache
Version: 1.6.0
Status: COMPATIBLE
- All features work aside from the DiskStore and replication, but workarounds are available. See http://ehcache.sourceforge.net/documentation/googleappengine.html for more.
Facelets
Version: 1.1.14
Status: COMPATIBLE
Google Data (GData) client library for Java
Version(s): all
Status: COMPATIBLE
- As per this FAQ , you need set a specific configuration error to avoid a runtime permissions error. Otherwise, you will see java.security.AccessControlException: access denied (java.net.NetPermission getCookieHandler) when you try to use the library.
Google Web Toolkit (GWT)
Versions: All
Status: COMPATIBLE
- The Google Plugin for Eclipse enhances GWT and App Engine cross-development.
Grails
Version: 1.1.1
Status: SEMI-COMPATIBLE
- A plugin has been made available which integrates the App Engine SDK with Grails, adding features to upload Grails application automatically and run the local dev server. To download this plugin or see a screencast and tutorial, see http://grails.org/plugin/app-engine .
- As of now, you have to use the "grails app-engine run" command rather than "grails run-app", which blocks other plugins that extend run-app including the GWT plugin. More incompatibilities noted in this thread .
GraniteDS
Version(s): ?
Status: COMPATIBLE
Guice
Version(s): ?
Status: SEMI-COMPATIBLE
Notes:
- Guice should work if you build it from trunk.
- You may have to add a try-catch block to Finalizer.java to prevent a SecurityException from being thrown. More details at http://groups.google.com/group/google-guice/browse_thread/thread/13a63dc40684abe8 .
Hibernate
Versions: All
Status: INCOMPATIBLE
- You cannot currently use Hibernate directly. The differences between the App Engine datastore and SQL were too great to get the standard Hibernate up and running under App Engine. App Engine does support JDO and JPA, so you may be able to convert your Hibernate code to use one of these ORM interfaces.
ICEfaces
Version(s): ?
Status: UNKNOWN
iText
Version(s): ?
Status: INCOMPATIBLE
- iText relies on several classes not in the JRE class whitelist including java.awt.Color and java.nio.MappedByteBuffer. A bug has been filed at http://sourceforge.net/tracker/?func=detail&atid=365255&aid=2810312&group_id=15255 .
Java Topology Suite (JTS)
Version(s): 1.10
Status: COMPATIBLE
- A JTS + Restlet demo is available at http://iqbalyusuf.wordpress.com/java-topology-suite-google-app-engine-restlet-test/ .
JBoss Seam
Version(s): ?
Status: SEMI-COMPATIBLE
- See http://ctpjava.blogspot.com/2009/04/jboss-seam-on-google-app-engine-first.html for a list of modifications that need to be made in order to get JBoss Seam working in App Engine's sandbox.
Jersey
Version: 1.0.2
Status: SEMI-COMPATIBLE
- Jersey does not run in App Engine's production environment out-of-the-box, but you can make some modifications to get basic uses working. Several of these are documented at http://lqd.hybird.org/journal/?p=123 .
log4j
Version(s): ?
Status: COMPATIBLE
MyFaces
Version: 1.1.6
Status: COMPATIBLE
OpenSocial client library for Java
Version(s): 20090402
Status: COMPATIBLE
OSGi
Version(s): ?
Status: SEMI-COMPATIBLE
- At least one developer has managed to get OSGi working locally using the Equinox servlet bridge. Details at http://eclipsesource.com/blogs/2009/04/10/osgi-on-appengine/ .
Restlet
Version(s): ?
Status: COMPATIBLE
- The team has created an adaptation of Restlet just for App Engine.
- See http://wiki.restlet.org/developers/172-restlet/251-restlet.html for instructions on tuning a standard installation of Restlet for App Engine.
RichFaces
Version: 3.1.6
Status: INCOMPATIBLE
- RichFaces depends on the javax.imageio package which is presently not listed on the JRE class whitelist .
SiteMesh
Versions: 2.4.2 +
Status: COMPATIBLE
- Beginning with version 2.4.2, SiteMesh contains some fixes to allow it to work more smoothly on App Engine, as indicated on its blog .
- To use older versions of SiteMesh you may need to make modifications to the com.opensymphony.module.sitemesh.Factory.getEnvEntry method and build the JAR file for the library. For more details, see http://groups.google.com/group/google-appengine-java/browse_thread/thread/1e3868a6a2661585 .
Spring MVC
Version: 2.5.6
Status: COMPATIBLE
- To see Spring's MVC framework running on App Engine, check out the autoshoppe sample application .
Spring ORM
Version: 2.5.6
Status: COMPATIBLE
- To get Spring working with the App Engine-provided JPA interface, follow the instructions at http://objectuser.wordpress.com/2009/05/19/spring-jpa-in-google-app-engine/ , which discusses a workaround to the dependency on javax.naming needed for @PersistenceContext. A more complex workaround is available at http://groups.google.com/group/google-appengine-java/browse_thread/thread/187d41712ec1d394 .
Spring Security
Version(s): ?
Status: SEMI-COMPATIBLE
- See http://www.dotnetguru2.org/bmarchesson/index.php?p=1100 for tips on how to get Spring Security running with App Engine and GWT. You may need to translate the article from French.
- See http://groups.google.com/group/google-appengine-java/browse_thread/thread/964e7f5e42840d9c for discussion on the integration.
Stripes Framework
Version(s): ?
Status: COMPATIBLE
- The default multipartwrapper implementation needs a temporary directory on the local file system for file uploads, which App Engine doesn't allow. The workaround is to create your own implementation -- more details at http://groups.google.com/group/google-appengine-java/browse_thread/thread/81dbcf7cf2281014 .
Struts 1
Version: 1.2.28
Status: COMPATIBLE
Struts 2
Version(s): ?
Status: COMPATIBLE (see notes)
- Struts will not initially work because the OGNL permissions which the framework relies on can't be set due to security restrictions in App Engine's sandbox. However, some users have documented a workaround at http://groups.google.com/group/google-appengine-java/browse_thread/thread/19018b0317f27817 .
Tapestry
Version: 5.0.18
Status: COMPATIBLE
Version: 5.1
Status: INCOMPATIBLE
- Version 5.1 appears to rely on the Woodstox XML processor, which in turn relies on javax.xml.stream.XMLInputFactory, which isn't on the current JRE class white list . No workarounds are known at this time.
Tiles
Version: 2.0.7
Status: COMPATIBLE
- Older versions may not work.
Vaadin
Version(s): ?
Status: SEMI-COMPATIBLE
- There are several compatibility issues, but Vaadin-based applications can be deployed to App Engine. For more, see http://vaadin.com/wiki/-/wiki/Main/Google%20AppEngine%20HOWTO .
VRaptor 2
Version(s): ?
Status: COMPATIBLE
- Requires App Engine sessions to be enabled .
WebORB
Version(s): ?
Status: COMPATIBLE
- A patch was made available shortly after launch to make WebORB compatible with App Engine. The patch is available at http://www.themidnightcoders.com/blog/2009/04/running-weborb-for-java-in-google-app.html .
Wicket
Version(s): ?
Status: SEMI-COMPATIBLE
- With a couple of quick workarounds, Dan Walmsley has deployed a basic app that uses Wicket. His write-up is located at http://www.danwalmsley.com/2009/04/08/apache-wicket-on-google-app-engine-for-java/ .
- Nick Wiedenbrueck has also published a write-up showing how to get a simple Wicket application running on App Engine, located at http://stronglytypedblog.blogspot.com/2009/04/wicket-on-google-app-engine.html .
ZK
Status: COMPATIBLE
- Ajax + Mobile Java framework
- A how-to on configuring a ZK-based application to work with App Engine is available at http://docs.zkoss.org/wiki/ZK/How-Tos/Installation/How _to_Integrate_ZK_with_Google_App_Engine.