I am trying to start an embedded Google App Engine Development Server (sdk 1.7.3) inside a @BeforeClass of a test suite run by the maven failsafe plugin. The code that should start it looks like this:
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 the 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)
What am I doing wrong?
I am trying to start an embedded Google App Engine Development Server (sdk 1.7.3) inside a @BeforeClass of a test suite run by the maven failsafe plugin. The code that should start it looks like this:
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 the 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 the security exception with -Djava.security.debug=access,failure 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)