Google Application Engine Google App Engine GAE

Compatible Spring EntityManager Injector#

Google Application Engine/PersistenceAnnotationBeanPostProcessor.java(info)
	<bean class="com.intersult.jsf2.PersistenceAnnotationBeanPostProcessor"/>

Test für lokalen Datastore#

public class ObjectifyTest {
    private static LocalServiceTestHelper helper;

    @BeforeClass
    public static void setupClass() {
    	LocalDatastoreServiceTestConfig config = new LocalDatastoreServiceTestConfig();
		helper = new LocalServiceTestHelper(config);
		ObjectifyService.register(User.class);
	}
    
    @Before
    public void setUp() {
        helper.setUp();
    }

    @After
    public void tearDown() {
        helper.tearDown();
    }

    @Test
    public void test() {
        Objectify objectify = ObjectifyService.begin();
        User user = objectify.find(User.class, 1);
    }

Eclipse GAE Plugin mit Maven#

  1. GAE Plugin in Eclipse installieren
  2. GAE Runtime Installieren
  3. GAE Runtime in Preferences -> Google -> App Engine eintragen
  4. Im importierten Maven Projekt GAE Support anschalten
    1. WAR-Dir ist src/main/webapp
    2. Class Output Folder ist target/classes
    3. App Engine ist die installierte GAE, nicht die Maven Library
  5. In Preferences -> Build Path -> Order and Export die Maven Dependencies ganz nach unten. (Sonst versucht das GAE Plugin die Maven GAE-Runtime JAR als Runtime Home zu benutzen.)

Um die Libs zur Verfügung zu stellen, wird das maven-war-plugin auf exploded umgestellt:

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.1.1</version>
				<configuration>
					<webResources>
						<resource>
							<directory>src/main/webapp</directory>
							<filtering>true</filtering>
							<includes>
								<include>**/appengine-web.xml</include>
							</includes>
						</resource>
					</webResources>
				</configuration>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>exploded</goal>
						</goals>
					</execution>
				</executions>
    			</plugin>