GWT 2.7 + GAE App Seeks Software Server During Deployment

Why is appengine trying to use Super Dev mode?

Every time I deploy my GWT application for appengine and try to access it, I get a white loading screen, and then after about 20-30 seconds I get this message:

Couldn't load project from Super Dev Mode server at appspot.com:9876. Please make sure the server is ready. Do you want to try again?

I am using maven with gwt-maven-plugin and appengine-maven-plugin . Deployment using maven-gae-plugin gives the same results.

If I go back to using versions of gwt version 2.6.1 and gwt-maven-plugin, it will deploy normally, so there seems to be something to do with automatically setting the dev mode.

Some of my pom.xml

<build> <outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> </resource> <resource> <directory>src/main/super</directory> </resource> <resource> <directory>${project.build.directory}/generated-sources/apt</directory> </resource> <resource> <directory>${project.build.directory}/generated-sources/gwt</directory> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven-compiler-plugin.version}</version> <configuration> <source>${target.jdk}</source> <target>${target.jdk}</target> <encoding>${project.build.sourceEncoding}</encoding> <proc>none</proc> </configuration> </plugin> <!-- JUnit Testing - skip *.GwtTest cases --> <!-- 'mvn test' - runs the Jukito tests --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${maven-surefire-plugin.version}</version> <configuration> <includes> <include>**/*Test.java</include> </includes> <excludes> <exclude>**/*GwtTest.java</exclude> <exclude>**/*JUnitTest.java</exclude> </excludes> </configuration> </plugin> <!-- GWT --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>gwt-maven-plugin</artifactId> <version>${gwt-maven-plugin.version}</version> <configuration> <strict>true</strict> <testTimeOut>180</testTimeOut> <!-- With multiple tests use GwtTestSuite.java for speed --> <includes>**/*GwtTest.java</includes> <mode>htmlunit</mode> <extraJvmArgs>-Xss1024k -Xmx2048M -XX:MaxPermSize=512M</extraJvmArgs> <logLevel>INFO</logLevel> <style>PRETTY</style> <copyWebapp>true</copyWebapp> <hostedWebapp>${webappDirectory}</hostedWebapp> <server>com.google.appengine.tools.development.gwt.AppEngineLauncher</server> <appEngineVersion>${gae.version}</appEngineVersion> <appEngineHome>${gae.home}</appEngineHome> <extraJvmArgs>-Dappengine.sdk.root=${gae.home}</extraJvmArgs> <extraJvmArgs>-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20</extraJvmArgs> <port>8888</port> <runTarget>Project.html</runTarget> <modules> <module>com.utilitiessavings.usavappv7.Project</module> </modules> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>test</goal> </goals> </execution> </executions> </plugin> <!-- Google App Engine Deployment --> <plugin> <groupId>com.google.appengine</groupId> <artifactId>appengine-maven-plugin</artifactId> <version>${gae.version}</version> <configuration> <enableJarSplitting>true</enableJarSplitting> </configuration> </plugin> </plugins> </build> <dependencies> <!-- Google Web Toolkit dependencies --> <dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt-user</artifactId> <version>${gwt.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt-servlet</artifactId> <version>${gwt.version}</version> <scope>runtime</scope> </dependency> <!-- Google App Engine dependencies --> <dependency> <groupId>com.google.appengine</groupId> <artifactId>appengine-api-1.0-sdk</artifactId> <version>${gae.version}</version> </dependency> <!-- Testing --> <dependency> <groupId>com.google.appengine</groupId> <artifactId>appengine-api-labs</artifactId> <version>${gae.version}</version> </dependency> <dependency> <groupId>com.google.appengine</groupId> <artifactId>appengine-api-stubs</artifactId> <version>${gae.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>com.google.appengine</groupId> <artifactId>appengine-testing</artifactId> <version>${gae.version}</version> <scope>test</scope> </dependency> <!-- Persistence dependencies --> <dependency> <groupId>javax.persistence</groupId> <artifactId>persistence-api</artifactId> <version>${persistence-api.version}</version> </dependency> <dependency> <groupId>com.googlecode.objectify</groupId> <artifactId>objectify</artifactId> <version>${objectify.version}</version> </dependency> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>${javax.validation.version}</version> </dependency> <!-- Other dependencies --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>${servlet-api.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies> 

In my Project.gwt.xml

 <add-linker name="xsiframe" /> 

(Tried to delete this line, but got the same result)

Environment

Eclipse Luna (4.4.1)

Maven 3.2.3 (3.2.1 built-in)

m2eclipse 1.5.0

+8
google-app-engine maven gwt gwt-super-dev-mode gwt-maven-plugin
source share
2 answers

gwt:compile tries to work "step by step" by comparing the timestamp of the nocache.js file with the source files and skipping the GWT compilation if it considers the output to be relevant. It is fragile . gwt:run (without <superDevMode>false</superDevMode> and gwt:run-codeserver with launcherDir ) will overwrite nocache.js with a SuperDevMode-dependent version, and this will most likely cause gwt:compile skip compilation.

Conclusion: when deploying or β€œreleasing”, make sure that you first run mvn clean or force gwt:compile to start by passing -Dgwt.compiler.force to Maven.

+4
source share

Just for information, I had the same problem caused by using a non-standard project structure.

Maven copied .nocache files to a directory other than /target/ , which prevented the clean plugin from clearing the generated files.

Adding a new file to the directory in which the files are copied solves the problem.

+1
source share

All Articles