Failed to start the integrated Google App application server to test integration

I am trying to run the built-in Google App Engine development server (sdk 1.7.3) inside the @BeforeClass test suite run by the maven plugin without reliable verification. The code to start is as follows:

private static final String HOST = "0.0.0.0"; private static final int PORT = 8887; private static DevAppServer devAppServer; @BeforeClass public static void setup() throws Exception { log.debug("Starting development server"); File appRootDir = new File("target/visualize-1.0.war"); DevAppServerFactory devAppServerFactory = new DevAppServerFactory(); devAppServer = devAppServerFactory.createDevAppServer(appRootDir, HOST, PORT); devAppServer.start(); } 

However, during a call to createDevAppServer, I get a security exception:

 java.security.AccessControlException: access denied (java.lang.RuntimePermission setContextClassLoader) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at java.lang.Thread.setContextClassLoader(Thread.java:1394) at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:366) at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1021) 

debugging security exceptions with -Djava.security.debug = access, I see:

  access: access allowed (java.io.FilePermission /home/me/.m2/repository/com/google/appengine/appengine-tools-sdk/1.7.3/appengine-tools-sdk-1.7.3.jar read) access: access denied (java.security.SecurityPermission getPolicy) java.lang.Exception: Stack trace at java.lang.Thread.dumpStack(Thread.java:1249) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:364) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at java.security.Policy.getPolicy(Policy.java:133) at com.google.apphosting.utils.security.SecurityManagerInstaller.install(SecurityManagerInstaller.java:81) at com.google.appengine.tools.development.DevAppServerFactory.createDevAppServer(DevAppServerFactory.java:152) at com.google.appengine.tools.development.DevAppServerFactory.createDevAppServer(DevAppServerFactory.java:69) at com.google.appengine.tools.development.DevAppServerFactory.createDevAppServer(DevAppServerFactory.java:53) 

What am I doing wrong?

+4
source share
1 answer

In fact, you should not call GAE the way you did (hint: GAE has so many security patches that it’s just not worth it)

However, the maven-gae-plugin has gae: start and gae: stop specifically for IT.

This is how I use it for IT:

 <plugin> <groupId>net.kindleit</groupId> <artifactId>maven-gae-plugin</artifactId> <version>0.9.4</version> <dependencies> <dependency> <groupId>net.kindleit</groupId> <artifactId>gae-runtime</artifactId> <version>1.6.6</version> <type>pom</type> </dependency> </dependencies> <executions> <execution> <id>start-integration-test</id> <phase>pre-integration-test</phase> <goals> <goal>start</goal> </goals> </execution> <execution> <id>stop-integration-test</id> <phase>post-integration-test</phase> <goals> <goal>stop</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>2.12</version> <executions> <execution> <id>it</id> <phase>integration-test</phase> <goals> <goal>integration-test</goal> </goals> </execution> </executions> </plugin> 
+2
source

Source: https://habr.com/ru/post/1445458/


All Articles